| 
   
    | ...Change Screen.Cursor without need to restore back? |   
    | Autor: 
      KK Gian |  | [ Print tip 
] |  |  |  
 
 
// 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;
 
 
 
   |