Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «О Ρ‡Ρ‘ΠΌ Π½Π΅ ΠΏΠΈΡˆΡƒΡ‚ Π² ΠΊΠ½ΠΈΠ³Π°Ρ… ΠΏΠΎ DelphiΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 15

Автор А. Π“Ρ€ΠΈΠ³ΠΎΡ€ΡŒΠ΅Π²

 ...............

 procedure WMNCMouseMove(var Message: TWMNCMouseMove); message WM_NCMOUSEMOVE;

 ................

end;


procedure TSomeForm.WMNCMouseMove(var Message: TWMNCMouseMove);

begin

 ...............

 inherited; // Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, этот Π²Ρ‹Π·ΠΎΠ² Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΡƒΠΆΠ΅Π½

end;

ΠœΠ΅Ρ‚ΠΎΠ΄ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСния ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ унаслСдованный ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСния. Если ΠΆΠ΅ рСакция ΠΏΡ€Π΅Π΄ΠΊΠ° Π½Π° сообщСниС Π² Ρ†Π΅Π»ΠΎΠΌ устраиваСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Π½ΠΎ нуТдаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ, ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово inherited позволяСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ унаслСдованный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ сообщСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ цСлая Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² унаслСдованных ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ сообщСния, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСт свою Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Если Ρƒ ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² класса Π½Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΄Π°Π½Π½ΠΎΠ³ΠΎ сообщСния, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° inherited ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ TObject.DetaultHandler. ВСрнСмся ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Dispatch. Он ΠΈΡ‰Π΅Ρ‚ срСди ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² сообщСния класса (собствСнных ΠΈΠ»ΠΈ унаслСдованных) ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСния, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅ΠΌ Msg ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Message ΠΈ, Ссли Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅ΠΌΡƒ. Если Π½ΠΈ сам класс, Π½ΠΈ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠΈ Π½Π΅ содСрТат ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΄Π°Π½Π½ΠΎΠ³ΠΎ сообщСния, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пСрСдаётся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ DefaultHandler.

ΠœΠ΅Ρ‚ΠΎΠ΄ DefaultHandler Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ, Π² классС TObject ΠΎΠ½ Π½Π΅ выполняСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий, Π½ΠΎ наслСдники Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚. Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΎΠ½ пСрСопрСдСляСтся Π² классС TControl для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний, связанных с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ установкой Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΎΠΊΠ½Π° β€” WM_GETTEXT, WM_GETTEXTLENGTH ΠΈ WM_SETTEXT. Напомним, Ρ‡Ρ‚ΠΎ класс TControl являСтся ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ для всСх Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ…, ΠΈ появлСниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° систСмных сообщСний Π² этом классС β€” Ρ‡Π°ΡΡ‚ΡŒ Ρ‚ΠΎΠΉ ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний Π½Π΅ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ.

Π’ классС TWinControl ΠΌΠ΅Ρ‚ΠΎΠ΄ DefaultHandler Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½. Помимо ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сообщСний Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΎΠΊΠ½Π°ΠΌ (ΠΎΠ± этом ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅) ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… сообщСний ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранится Π² свойствС DefWndProc. Π­Ρ‚ΠΎ свойство содСрТит адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» присвоСн полю WindowClass.lpfnWndProc структуры TCreateParams Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ CreateParams. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это ΠΏΠΎΠ»Π΅ содСрТит адрСс стандартной ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ DefWindowProc. Как Π±Ρ‹Π»ΠΎ сказано Ρ€Π°Π½Π΅Π΅, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСний ΠΏΡ€ΠΈ использовании API ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Π’ классС TCustomForm ΠΌΠ΅Ρ‚ΠΎΠ΄ DefaultHandler Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Ссли Ρ„ΠΎΡ€ΠΌΠ° являСтся MDI-Ρ„ΠΎΡ€ΠΌΠΎΠΉ, сообщСния, присланныС Π΅ΠΉ, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ DefFrameProc (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ WM_SIZE, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаСтся Π² DefWindowProc) нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ свойство DefWindowProc. Для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ„ΠΎΡ€ΠΌ вызываСтся унаслСдованный ΠΎΡ‚ TWinControl DefaultHandler.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ Π΅Ρ‰Π΅ Ρ€Π°Π· всю Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ VCL (рис. 1.7). Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° создаСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ оконная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, которая ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ MainWndProc. MainWndProc ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ хранится Π² свойствС WindowProc. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° WndProc. Он осущСствляСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сообщСний, Π½ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Dispatch, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ‰Π΅Ρ‚ срСди ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄Π°Π½Π½ΠΎΠ³ΠΎ сообщСния. Если ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ DefaultHandler (ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π°ΠΉΠ΄Π΅Π½, Π½ΠΎ ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ inherited). DefaultHandler ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сообщСния, Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… пСрСдаётся ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅, адрСс хранится Π² свойствС DefWndProc (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это стандартная функция Windows API DefWindowProc).

Рис. 1.7. Π‘Π»ΠΎΠΊ-схСма ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² VCL


Класс TControl ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Perform, с ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сообщСния Π² ΠΎΠ±Ρ…ΠΎΠ΄ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ систСмного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний. Perform ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСпосрСдствСнному Π²Ρ‹Π·ΠΎΠ²Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ хранится Π² свойствС WindowProc. Π”Π°Π»ΡŒΡˆΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний такая ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ сообщСния Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ. Для ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²Ρ‹Π·ΠΎΠ² Perform ΠΏΠΎ своим послСдствиям практичСски эквивалСнтСн ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ сообщСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SendMessage с двумя ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΡ€ΠΈ использовании SendMessage систСма обСспСчиваСт ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ нитями, ΠΈ сообщСниС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π² Ρ‚ΠΎΠΉ Π½ΠΈΡ‚ΠΈ, которая создала ΠΎΠΊΠ½ΠΎ, a Perform Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚, ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСния Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ‚ΠΎΠΉ Π½ΠΈΡ‚ΡŒΡŽ, которая Π²Ρ‹Π·Π²Π°Π»Π° Perform. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Perform, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ SendMessage, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π³Π»Π°Π²Π½ΠΎΠΉ Π½ΠΈΡ‚ΠΈ (Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ VCL β€” ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ однонитСвая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΈ созданиС Ρ„ΠΎΡ€ΠΌ Π²Π½Π΅ Π³Π»Π°Π²Π½ΠΎΠΉ Π½ΠΈΡ‚ΠΈ с Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСдопустимо). Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Perform выполняСтся Ρ‡ΡƒΡ‚ΡŒ быстрСС, Ρ‚.ΠΊ. оконная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ MainWndProc ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ· Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСния.

Но основноС прСимущСство Perform ΠΏΠ΅Ρ€Π΅Π΄ SendMessage Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Perform ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со всСми Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌΠΈ. НСоконныС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π½ΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ. Π’ Π½Π΅ΠΉ отсутствуСт оконная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ» MainWndProc, a DefaultHandler Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… стандартных ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Π½ΠΎ Π²ΠΎ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ эта Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ эквивалСнтна Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π°: ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Perform, Π° Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π½Π΅ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Perform. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄ Perform унивСрсалСн: ΠΎΠ½ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΊ для ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ для Π½Π΅ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Он ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСтся Π² VCL, Ρ‚.ΠΊ. позволяСт Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ.

НСоконным Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ сообщСния посылаСт ΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. НапримСр, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСний, связанных с ΠΌΡ‹ΡˆΡŒΡŽ, Π² классС TWinControl Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя, Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π»ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ курсора Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… Π½Π΅ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². И Ссли ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚, ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ это сообщСниС ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π° транслируСт Π΅Π³ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π½Π΅ΠΎΠΊΠΎΠ½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Perform. Π­Ρ‚Π° трансляция ΠΈ обСспСчиваСт ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ сообщСний Π½Π΅ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ.

БообщСния Π² VCL Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌ, Π½ΠΎ ΠΈ ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ. Π’ Windows всС сообщСния, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния стандартных элСмСнтов управлСния, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π° Π½Π΅ сам элСмСнт. НапримСр, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ сообщСниС ΠΎΠ± этом ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π΅ сама ΠΊΠ½ΠΎΠΏΠΊΠ°, Π° ΠΎΠΊΠ½ΠΎ, Π΅Π΅ содСрТащСС. Π‘Π°ΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ сообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ нСинтСрСсны. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ программиста, Ρ‚.ΠΊ. Π½Π΅ трСбуСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта управлСния ΠΏΠΈΡΠ°Ρ‚ΡŒ свою ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, всС Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ сообщСния ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ оконная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Рассмотрим, Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅. Окно, содСрТащСС эту ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ сообщСниС WM_COMMAND, ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡŽΡ‰Π΅Π΅ ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ события срСди ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сообщСния ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ событиС ΠΈ с ΠΊΠ°ΠΊΠΈΠΌ элСмСнтом управлСния ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС событиС Π±ΡƒΠ΄Π΅Ρ‚ BN_CLICKED). ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ WM_COMMAND класса TWinControl Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π²Ρ‹Π·Π²Π°Π²ΡˆΠΈΠΉ сообщСниС, ΠΈ посылаСт Π΅ΠΌΡƒ сообщСниС CN_COMMAND (ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· прСфикса, это Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ сообщСниС VCL) с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Π±ΡƒΠ΄Π΅Ρ‚ экзСмпляр класса TButton, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°ΠΆΠ°Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² CN_COMMAND, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ с Π½ΠΈΠΌ события (Π² частности, TButton ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ событиС OnΠ‘lick).

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

К ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° WM_COMMAND Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ остороТно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ трансляции сообщСний. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ пСрСопрСдСлСния ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ класс TCustomGrid. Π’ Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ вопросы, ΠΏΠΎΡ‡Π΅ΠΌΡƒ элСмСнты управлСния, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся TDrawGrid ΠΈΠ»ΠΈ TStringGrid, Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²Π΅Π΄ΡƒΡ‚ сСбя: ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ событиС OnClick, Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ списки ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ пустыми ΠΈ Ρ‚.Π΄. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ WM_COMMAND Π² TCustomGrid ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сущСствования Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° β€” Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ†ΠΈΠΈ goEditing. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ WM_COMMAND Π½Π΅ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΈ ΠΎΠ½ΠΈ Π»ΠΈΡˆΠ΅Π½Ρ‹ возмоТности ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° происходящиС с Π½ΠΈΠΌΠΈ события. Π’Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· ситуации ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ созданиС наслСдника ΠΎΡ‚ TDrawGrid ΠΈΠ»ΠΈ TStringGrid, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ транслируСт WM_COMMAND, Π»ΠΈΠ±ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, вставляСмого Π² сСтку, Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ транслируСт это сообщСниС.