Изменить экранный курсор без необходимости возвращать предыдущий

Изменить экранный курсор без необходимости возвращать предыдущий

// 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;


DelphiWorld 6.0

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...