// 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;
publicconstructor 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;
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Изменить экранный курсор без необходимости возвращать предыдущий", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!