Mega Code Archive

 
Categories / Delphi / Graphic
 

Change screen cursor without need to restore back

// By implementing Interface we can set the cursor without restore it in the end. // Example: In convensional way... var Cur: TCursor; begin Cur := Screen.Cursor; Screen.Cursor := crSQLWait; //do coding here //What happend is that if your code did not finish, the screen cursor will //remain as crSQLWait.. even with try..finally block (sometimes) Screen.Cursor := Cur; end; // By using interface, we can implement as follows type ImyCursor = interface [(GUID - Ctrl - Shift - G)] end; TmyCursor = class(TInterfacedObjects, ImyCursor); private FCursor: TCursor; public constructor Create; destructor Destroy; override; end; implementation TmyCursor.Create; begin FCursor := Screen.Cursor; end; TmyCursor.Destroy; begin Screen.Cursor := FCursor; inherited; end; procedure....var C: ImyCursor; begin C := TmyCursor.Create; Screen.Curosr := crSQLWait; // whatever cursor you like // Do coding here without worring to free it. // Screen Cursor will restore when the TMyCursor object get out of scope. end;