рд╢реБрдн рджреЛрдкрд╣рд░, рд╕рд╛рдерд┐рдпреЛрдВ!
рдЖрдк рдореЗрдВ рд╕реЗ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╡реЗ рд╕рдВрднрд╡рддрдГ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реНрд╕рд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдЖрддреЗ рд╣реИрдВ рдХрд┐ рдлрд┐рд▓рд╣рд╛рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ (рд▓рдВрдмреЗ рдпрд╛ рдирд╣реАрдВ) рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреА рдЬрд┐рдВрджрдЧреА рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рдЯреНрд░рд┐рдХ рд╢реЗрдпрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХрдЯ рдХреЗ рддрд╣рдд рд╡рд┐рд╡рд░рдгред
рдЖрдкрдХреЛ рдЕрднреА рднреА рдХрд░реНрд╕рд░ рджреГрд╢реНрдп рдХреЛ рд╕реНрд╡рдпрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд░реНрд╕рд░ рджреГрд╢реНрдп рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛:
type ICursorSaver = interface end; TCursorSaver = class(TInterfacedObject, ICursorSaver) private FCursor: TCursor; public constructor Create; destructor Destroy; override; end; implementation constructor TCursorSaver.Create; begin FCursor := Screen.Cursor; end; destructor TCursorSaver.Destroy; begin Screen.Cursor := FCursor; inherited; end;
рдЕрдЧрд▓рд╛, рдХреЛрдб рдореЗрдВ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░,
ICursorSaver
рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░
ICursorSaver
рдФрд░ рдЗрд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВред
var saveCursor: ICursorSaver; begin saveCursor := TCursorSaver.Create; Screen.Cursor := crSQLWait;
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
TInterfacedObject
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдВрдХ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрддрд╛ рд╣реИ, рдЬрдм рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдп рдкрд░ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ - рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдо рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд░реНрддрдорд╛рди рдХрд░реНрд╕рд░ рджреГрд╢реНрдп рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЪрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред рджрд╛рдпрд░реЗ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЪрд░ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореБрдХреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХрд░реНрд╕рд░ рдХреЛ рдЕрдкрдиреА рдореВрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдХрд░реНрд╕рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рднреА - рдХреЗрд╡рд▓ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЧрд╣рд░реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
UPD: рд╕рд╣рдХрд░реНрдореА
рд░реЛрдорд┐рдХ рдФрд░
рдХреЛрд░реЗрдХ рдиреЗ рдХрдВрд╕рдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕реАрдзреЗ рдХрд░реНрд╕рд░ рджреГрд╢реНрдп рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рдлрд┐рд░ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
constructor TCursorSaver.Create(ACursor: TCursor = crHourGlass); begin FCursor := Screen.Cursor; Screen.Cursor := ACursor; end;