Erweitere die Klasse um eine
class function Construct : IWaitCursor;
Delphi-Quellcode:
type
IWaitCursor = interface
end;
TWaitCursor = class (TInterfacedObject, IWaitCursor)
private
fCursor : TCursor;
public
constructor Create;
destructor Destroy; override;
class function Construct : IWaitCursor;
end;
implementation
class function TWaitCursor.Construct : IWaitCursor;
begin
Result := TWaitCursor.Create;
end;
constructor TWaitCursor.Create;
begin
inherited;
fCursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
MainFrom.TrafficLight := tlRed;
end;
destructor TWaitCursor.Destroy;
begin
Screen.Cursor := fCursor;
MainFrom.TrafficLight := tlGreen;
inherited;
end;
dann kann das
ohne Speicherleck und Warnung so benutzt werden
Delphi-Quellcode:
procedure Foo;
begin
TWaitCursor.Construct;
Sleep( 1000 );
end;
Stimmt. Dann halt mit Variable und try-finally
Wieso?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)