ksFmxUtils.pas 839 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. unit ksFmxUtils;
  2. interface
  3. uses
  4. FMX.Types;
  5. procedure FreeFmxObject(AFmxObject: TFmxObject);
  6. procedure FreeAndNilFmxObject(var AFmxObject);
  7. implementation
  8. uses
  9. ksObjUtils;
  10. procedure FreeFmxObject(AFmxObject: TFmxObject);
  11. begin
  12. if not Assigned(AFmxObject) then
  13. Exit;
  14. if Assigned(AFmxObject.Owner) then
  15. AFmxObject.Owner.RemoveComponent(AFmxObject);
  16. if Assigned(AFmxObject.Parent) then begin
  17. // fix release error in 10.4, eg: TMemo on TFrame, Windows.
  18. AFmxObject.SetRoot(nil);
  19. AFmxObject.Parent := nil;
  20. end;
  21. FreeObject(AFmxObject);
  22. end;
  23. procedure FreeAndNilFmxObject(var AFmxObject);
  24. var
  25. ATemp: TFmxObject;
  26. begin
  27. if Pointer(AFmxObject) = nil then
  28. Exit;
  29. ATemp := TFmxObject(AFmxObject);
  30. Pointer(AFmxObject) := nil;
  31. FreeFmxObject(ATemp);
  32. end;
  33. end.