ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² Builder C++

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Component ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ New Component. Π’ ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс (Ancestor type) TCustomControl, Π²Π²ΠΎΠ΄ΠΈΠΌ имя своСго класса (Class Name) TOsnova, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ установлСна (Palette page) Samples, ΠΈ ΠΏΡƒΡ‚ΡŒ, Π³Π΄Π΅ Π±ΡƒΠ΄ΡƒΡ‚ хранится Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. ПослС Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠžΠš C… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² Builder C++ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

  • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅
  • Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΡƒΡ€ΡΠΎΠ²ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ
  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
  • 1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹
  • 2 Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… условий
  • 3 Π—Π°Π΄Π°Π½ΠΈΠ΅ свойств
  • 4 ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса
    • 5 ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CreateWnd ()
    • 6 ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Paint()
    • 7 ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° WndProc (TMessage& Message)
    • 8 ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CanResize (int &NewWidth, int &NewHeight)
  • 9 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ событий
  • 10 ВСстированиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹
  • 11 РСгистрация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹
  • 12 Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹
  • 13 ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹
  • Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹
  • Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΡƒΡ€ΡΠΎΠ²ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ
  • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· Π΄Π²ΡƒΡ… окруТностСй, ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… двиТСтся ΠΏΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ установочный ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ Ρ‚СстовоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.
  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

C++ Builder прСдставляСт собой ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТит Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ панСль ΠΈ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Помимо этого, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ запускС C++ Builder ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΊΠ½ΠΎ инспСктора ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Ρ„ΠΎΡ€ΠΌΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния. Под ΠΎΠΊΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΡ‹ прилоТСния находится ΠΎΠΊΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π°.

Π€ΠΎΡ€ΠΌΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ основой ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ C++ Builder. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса прилоТСния Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π² ΠΎΠΊΠ½ΠΎ Ρ„ΠΎΡ€ΠΌΡ‹ элСмСнтов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² C++ Builder, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ C++ Builder Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π² Π²ΠΈΠ΄Π΅ многостраничного Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π°. ВаТная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ C++ Builder состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ вСрсии ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ (Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅) ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ (Π½Π΅Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅). Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ проСктирования. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ поля. ΠΠ΅Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ проСктирования ΠΊΠ°ΠΊ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅. Они Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния, Π½ΠΎ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ стандартныС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ Windows ΠΈ Π΄Ρ€.)

Для добавлСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² Ρ„ΠΎΡ€ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΡ‹ΡˆΡŒΡŽ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅ ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ Π»Π΅Π²ΠΎΠΉ клавишСй ΠΌΡ‹ΡˆΠΈ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ мСстС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ появится Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅, ΠΈ Π΄Π°Π»Π΅Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ, ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ характСристики.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ C++ Builder ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ разновидности характСристик: свойства, события ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Если Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΠ· ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ Ρ„ΠΎΡ€ΠΌΠ΅, инспСктор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² автоматичСски ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ свойства ΠΈ ΡΠΎΠ±Ρ‹Ρ‚ия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ с ΡΡ‚ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ. Π’ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части инспСктора ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² имССтся Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ список, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ся Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅.

1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ TOsnova ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапов:

1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ модуля для Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

2. НаслСдованиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΎΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎΠ³ΠΎ класса.

3. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½Ρ‹Ρ… свойств, событий ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

4. РСгистрация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² C++Builder.

Для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Но ΡΠ½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ€ΠΎΠΆΠ΄Ρ‘Π½ наш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

МнС видится, Ρ‡Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класс TCustomControl. TCustomControl Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ нашСй ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ свойства Handle (дСскриптор ΠΎΠΊΠ½Π° для получСния сообщСний Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°) ΠΈ Canvas (холст для Π²Ρ‹Π²ΠΎΠ΄Π° тСкста). TCustomControl ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ±Π° свойства, Π·Π° ΡΡ‡Π΅Ρ‚ Ρ‡Π΅Π³ΠΎ ΠΎΠ½, ΠΏΠΎ ΡΡƒΡ‚ΠΈ, являСтся ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.

Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ понадобится ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс TMarshrut для рисования ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° двиТСния ΡˆΠ°Ρ€ΠΈΠΊΠ° ΠΈ ΠΊΠ»Π°ΡΡ Π’Shar, Ρ€ΠΈΡΡƒΡŽΡ‰ΠΈΠΉ сам ΡˆΠ°Ρ€ΠΈΠΊ. Оба этих класса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ лишь ΡƒΠΌΠ΅Ρ‚ΡŒ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ сСбя, поэтому Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ TCustomGraphic.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Component ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ New Component. Π’ ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс (Ancestor type) TCustomControl, Π²Π²ΠΎΠ΄ΠΈΠΌ имя своСго класса (Class Name) TOsnova, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ установлСна (Palette page) Samples, ΠΈ ΠΏΡƒΡ‚ΡŒ, Π³Π΄Π΅ Π±ΡƒΠ΄ΡƒΡ‚ хранится Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. ПослС Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠžΠš C++ Builder создаст для нашСй ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ Π΅Π³ΠΎ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ мСстС.

Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ создаём Π΄Π²Π° класса TMarshrut ΠΈ Π’Shar. Для совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Ρ€Ρ‘Ρ… классов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ hΡ„Π°ΠΉΠ»Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #include.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим созданныС Π½Π°ΠΌΠΈ классы. TMarshrut ΠΈ Π’Shar Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ΅Ρ‚ΡŒ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ сСбя, поэтому Π² Π½ΠΈΡ… достаточно ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Paint ():

virtual void __fastcall Paint ();

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Paint () этих классов Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΡΠ΅Π±Ρ ΠΊΠΎΠ΄ ΠΈΡ… Ρ€ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ исходный ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Paint () класса Π’Shar:

void __fastcall TShar: Paint ()

{

Canvas->Brush->Color=clGreen;

Shar->Width=(D-d)/2;

Shar->Height=(D-d)/2;

Canvas->Ellipse (0,0,Shar->Width, Shar->Height);

}

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Paint () класса TMarshrut

//—————————————————————————————————————;

// рисуСм Π΄Π²Π΅ окруТности Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°

void __fastcall TMarshrut: Paint ()

{

Canvas->Brush->Color=clRed;

Marshrut->Ris_Marshrut (D/2);

Canvas->Brush->Color=clBtnFace;

Marshrut->Ris_Marshrut (d/2);

}

//—————————————————————————————————————;

РСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ris_Marshrut (int R) (ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ находится Π² ΡΠ΅ΠΊΡ†ΠΈΠΈ protected класса Π’Marshrut):

//—————————————————————————————————————;

//рисуСм ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ радиуса

void __fastcall TMarshrut: Ris_Marshrut (int R)

{

Marshrut->Canvas->Ellipse (Marshrut->Width/2-R, Marshrut->Height/2-R,

Marshrut->Width/2+R, Marshrut->Height/2+R);

}

//—————————————————————————————————————;

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΈ Ρ‚. Π΄.) Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ся, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ двиТСния рисуСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Paint () ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ris_Marshrut (int R). Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π° экзСмпляра класса Π’Marshrut.

2 Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… условий

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ класса TOsnova.

__fastcall TOsnova: TOsnova (TComponent* Owner)

: TCustomControl (Owner)

{

Width=200;//Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΡˆΠΈΡ€ΠΈΠ½Π°

Height=200;//Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ высота

D=this->Width/5*4;//Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€ большой окруТности

d=this->Width/5*3; //Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€ малСнькой окруТности

a=0;//ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°

N=true;//для ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π·Π°Ρ…ΠΎΠ΄Π° Π² Ρ†ΠΈΠΊΠ»

FSkorosty=20;//ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вращСния

}

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния для экзСмпляров классов TMarshrut ΠΈ Π’Shar Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΈΡ… ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ void __fastcall CreateWnd ().

3 Π—Π°Π΄Π°Π½ΠΈΠ΅ свойств

Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вращСния ΡˆΠ°Ρ€ΠΈΠΊΠ°, поэтому Π΄ΠΎΠ±Π°Π²ΠΈΠΌ свойство FSkorosty. Π’ΠΈΠΏ этого свойства int. ИзмСнСниС мСстополоТСния ΡˆΠ°Ρ€ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ ΡΠΈΠ³Π½Π°Π»Ρƒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, поэтому, увСличивая ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. Π§Π»Π΅Π½ Π΄Π°Π½Π½Ρ‹Ρ… FSkorosty Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½ Π² ΡΠ΅ΠΊΡ†ΠΈΠΈ private. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π΄ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ свойство ΠΌΠ΅Ρ‚ΠΎΠ΄ чтСния ΠΈ Π·Π°ΠΏΠΈΡΠΈ (Π² ΡΠ΅ΠΊΡ†ΠΈΠΈ __published)

__property int Skorosty = { read=FSkorosty, write=SetSkorosty },

послС Ρ‡Π΅Π³ΠΎ это свойство отобразится Π² ΠΎΠΊΠ½Π΅ Π˜Π½ΡΠΏΠ΅ΠΊΡ‚ΠΎΡ€Π° ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Бвойство Skorosty ΠΈΠΌΠ΅Π΅Ρ‚ прямой доступ ΠΊ ΠΏΠΎΠ»ΡŽ чтСния, Π° Π΄Π»Ρ записи имССтся ΠΌΠ΅Ρ‚ΠΎΠ΄ SetSkorosty

//—————————————————————————————————————;

void __fastcall TOsnova: SetSkorosty (int Skorosty)

{

FSkorosty=Skorosty;

if (FSkorosty<5) FSkorosty=5; // Ссли FSkorosty=0, ΡˆΠ°Ρ€ΠΈΠΊ остановится

SetTimer (Handle, 1, FSkorosty, 0);

}

//—————————————————————————————————————;

4 ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² ΡΠ΅ΠΊΡ†ΠΈΠΈ protected.

5 ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CreateWnd ().

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ динамичСски ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляры классов TMarshrut ΠΈ Π’Shar. Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это нСпосрСдствСнно Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ класса TOsnova, Π½ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° запуска окончится Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния:

Control has no parent window (Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ элСмСнт Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°). РСшСниС состоит Π² ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CreateWnd ().

//—————————————————————————————————————;

void __fastcall TOsnova: CreateWnd ()

{

if (ComponentState.Contains (csDestroying))

return; //Ссли ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ — Π²Ρ‹Ρ…ΠΎΠ΄

TCustomControl:CreateWnd (); //Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

Marshrut=new TMarshrut (this); //создаём экзСмпляр класса

Marshrut->Parent=this;

Marshrut->Width=this->Width;

Marshrut->Height=this->Height;

Shar=new TShar (this); //создаём экзСмпляр класса

Shar->Parent=this;

Shar->Width=(D-d)/2;

Shar->Height=(D-d)/2;

Shar->Left=(this->Width-D)/2+D-Shar->Width;

Shar->Top=this->Height/2-Shar->Height/2;

if (ComponentState.Contains (csDesigning))

return; //Ссли ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° разрабатываСтся — Π²Ρ‹Ρ…ΠΎΠ΄

else; //ΠΈΠ½Π°Ρ‡Π΅ запускаСм Ρ‚Π°ΠΉΠΌΠ΅Ρ€

SetTimer (Handle, 1, FSkorosty, 0);

}

//—————————————————————————————————————;

Π‘Π½Π°Ρ‡Π°Π»Π° вызываСтся функция CreateWnd () Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, которая Π²Π΅Ρ€Π½Ρ‘Ρ‚ дСскриптор ΠΎΠΊΠ½Π°. ПослС этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляры Π½Π°ΡˆΠΈΡ… классов, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ SetTimer () ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€.

6 ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Paint ()

//—————————————————————————————————————;

void __fastcall TOsnova: Paint ()

{

this->Canvas->Brush->Color=clSkyBlue;

this->Canvas->Font->Size=this->Height/20;

this->Canvas->TextOutA (this->Width/4,3," Моя ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°");

}

//—————————————————————————————————————;

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Paint () Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ тСкст Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ.

7 ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° WndProc (TMessage& Message)

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ свой собствСнный дСскриптор ΠΎΠΊΠ½Π°, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ WndProc (). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Windows ΠΈΠ»ΠΈ VCL посылаСт сообщСниС ΠΎΠΊΠ½Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ описаниС примСнСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° WndProc (), сосрСдоточимся Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅. Π’Π°ΠΉΠΌΠ΅Ρ€ запускаСтся Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ CreateWnd ():

SetTimer (Handle, 1, FSkorosty, 0). Π’ ΡΡ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ дСскриптор ΠΎΠΊΠ½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, 1 ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, FSkorosty ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°) ΠΈ 0 Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ значСния послСднСго ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡΠ»ΡƒΡ‡Π°Π΅, Ссли Π²Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°. Π’ ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сообщаСтся, Ρ‡Ρ‚ΠΎ Windows слСдуСт ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ сообщСниС WM_TIMER ΠΌΠΎΠ΅ΠΉ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΎΠΊΠ½Π°.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° осущСствляСтся Π² Π΄Π΅ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹:

KillTimer (Handle, 1) ;

Π’Π½ΡƒΡ‚Ρ€ΠΈ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° выполняСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСния

WM_TIMER:

//—————————————————————————————————————;

void __fastcall TOsnova: WndProc (TMessage& Message)

{

TCustomControl:WndProc (Message); //Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

if (Message.Msg == WM_TIMER)

{

//провСряСм, измСнились Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹

if ((N==true)&&(this->Width≠NewWidth)&&(this->Height≠NewHeight))

{

this->Width=NewWidth;

this->Height=NewHeight;

D=this->Width/5*4;

d=this->Width/5*3;

Marshrut->Width=this->Width;

Marshrut->Height=this->Height

Shar->Width=(D-d)/2;

Shar->Height=(D-d)/2;

Shar->Left=(this->Width-D)/2+D-Shar->Width;

Shar->Top=this->Height/2-Shar->Height/2;

this->Canvas->Font->Size=this->Height/20;

this->Canvas->TextOutA (this->Width/4,3," Моя ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°");

this->Invalidate ();//пСрСрисовываСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ

N=false;//большС сюда Π½Π΅ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ

}

a+=0.2;//ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠ³Π»Π° ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° (процСсс двиТСния)

Shar->Left=(Marshrut->Width-(D-(D-d)/2))/2+(D-(D-d)/2)/2+(D-(D-d)/2)/2*cos (a);

Shar->Width/2;

Shar->Top=(Marshrut->Height-(D-(D-d)/2))/2+(D-(D-d)/2)/2-(D-(D-d)/2)/2*sin (a);

Shar->Height/2;

}

}

//—————————————————————————————————————;

Π‘Π½Π°Ρ‡Π°Π»Π° вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса TCustomControl: WndProc (Message), Π·Π°Ρ‚Π΅ΠΌ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ (Ссли ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹), вызываСтся функция Invalidate () для пСрСрисовки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΈ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ся Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΡˆΠ°Ρ€ΠΈΠΊΡƒ.

8 ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CanResize (int &NewWidth, int &NewHeight).

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоит ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

//—————————————————————————————————————;

bool __fastcall TOsnova: CanResize (int &NewWidth, int &NewHeight)

{ //измСняСм

if (ComponentState.Contains (csDesigning))

{

D=this->Width/5*4; // Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€Ρ‹ окруТностСй

d=this->Width/5*3;

Marshrut->Width=this->Width; //Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ экз. класса Π’Marshrut

Marshrut->Height=this->Height;

Shar->Width=(D-d)/2; //Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ экз. класса Π’Shar

Shar->Height=(D-d)/2;

Shar->Left=(this->Width-D)/2+D-Shar->Width;

Shar->Top=this->Height/2-Shar->Height/2;

this->Canvas->Font->Size=this->Height/20; //Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π°

this->Canvas->TextOutA (this->Width/4,3," Моя ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°"); //ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

this->Invalidate (); //пСрСрисовываСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ

}

if (NewWidth≠NewHeight) NewWidth=NewHeight;

return (NewWidth, NewHeight);

}

//—————————————————————————————————————;

ΠœΠ΅Ρ‚ΠΎΠ΄ CanResize () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ значСния ΡˆΠΈΡ€ΠΈΠ½Ρ‹ (NewWidth) ΠΈ Π²Ρ‹ΡΠΎΡ‚Ρ‹ (NewHeight), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ WndProc (TMessage& Message), для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Ρ€ΠΈΡΠΎΠ²Π°Π»Π°ΡΡŒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ.

9 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ событий

НаиболСС простая Ρ„ΠΎΡ€ΠΌΠ° события — это событиС, просто ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡŽΡ‰Π΅Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ. НапримСр, событиС OnClick, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ присутствуСт Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — Sender:

void fastcall TForml: FormClick (TObject *Sender).

Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ события опрСдСляСтся Π² VCL ΠΊΠ°ΠΊ TNotifyEvent.

ΠŸΡ€ΠΈ создании события, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ простоС ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΈΠΏΠΎΠΌ события TNotifyEvent. OnMyClick, событиС TOsnova — простоС событиС увСдомлСния. Оно ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

__property TNotifyEvent OnMyClick = {read=FOnMyClick, write=FOnMyClick};

КаТдоС событиС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Π΅ΠΉ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ. Π’Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ классы-наслСдники ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ доступ) ΠΈ Π² Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ события OnMyClick, называСтся DoOnMyClick ():

//—————————————————————————————————————;

void __fastcall TOsnova: DoOnMyClick ()

{

if (FOnMyClick)

FOnMyClick (this);

}

//—————————————————————————————————————;

Π‘Π½Π°Ρ‡Π°Π»Π° провСряСтся, Π±Ρ‹Π» Π»ΠΈ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. Если ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Π±Ρ‹Π» Π½Π°Π·Π½Π°Ρ‡Π΅Π½, Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ся функция, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ располоТСн Π² ΠΏΠΎΠ»Π΅ FOnMyClick, ΠΊΡƒΠ΄Π° пСрСдаСтся Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (this). Π­Ρ‚ΠΎ событиС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Events Π² ΠΎΠΊΠ½Π΅ Π˜Π½ΡΠΏΠ΅ΠΊΡ‚ΠΎΡ€Π° ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠŸΡ€ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅ Builder сгСнСрируСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

//—————————————————————————————————————;

void __fastcall TForm1: Osnova1MyClick (TObject *Sender)

{

//ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° события

}

//—————————————————————————————————————;

10 ВСстированиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

Для тСстирования ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π°Ρ‡Π½Ρ‘ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (FileNewApplication).

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ (ProjectAdd to Project) Ρ„Π°ΠΉΠ»Ρ‹ Osnova. cpp, Marshrut. cpp ΠΈ Shar.cpp. Π’ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ нашСго класса

//—————————————————————————————————————;

__fastcall TForm1: TForm1(TComponent* Owner)

: TForm (Owner)

{

TOsnva *Osnova;

Osnova=new TOsnova (this);

Osnova->Parent=this;

}

//—————————————————————————————————————;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС измСнСния Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ ΠΌΡ‹ ΡΡ€Π°Π·Ρƒ смоТСм ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈ запускС этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

11 РСгистрация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° рСгистрируСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Register (), которая автоматичСски гСнСрируСтся C++ Builder. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово namespace устанавливаСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΡ‘Π½ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ рСгистрации. ПослС этого ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова слСдуСт имя Ρ„Π°ΠΉΠ»Π°, содСрТащСго ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ. Π’ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ рСгистрации Register ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ создаёт массив рСгистрируСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² classes Ρ‚ΠΈΠΏΠ° TComponentClass ΠΈ Π·Π°Π½ΠΎΡΠΈΡ‚ Π΅Π³ΠΎ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ рСгистрируСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ RegisterComponents ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, занСсённыС Π² classes (Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅ Samples (Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€).

//—————————————————————————————————————;

namespace Osnova

{

void __fastcall PACKAGE Register ()

{

TComponentClass classes[1] = {__classid (TOsnova)};

RegisterComponents («Samples», classes, 0);

}

}

//—————————————————————————————————————;

12 Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ†ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

Для инсталляции ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ мСню Component, Install Component.

Π’ ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Into new package (Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚), Π²Π²ΠΎΠ΄ΠΈΠΌ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π° (APPKOsnova) ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠžΠš. ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ окошко с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΡ‚Π°Π»Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚.

ΠžΡ‚Π²Π΅Ρ‡Π°Π΅ΠΌ No, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ наш ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΅Ρ‰Ρ‘ Π½Π΅ ΡΠΎΠ±Ρ€Π°Π½ Π² Π½Π΅Π³ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ классы TMarshrut ΠΈ Π’Shar. Π’ ΠΎΠΊΠ½Π΅ ДиспСтчСра ΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (Package Manager) Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Add, Add Unit ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ Marshrut. cpp ΠΈ Shar. cpp

ПослС компиляции ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΡ‚Π°Π»Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ.

Π”Π΅ΠΈΠ½ΡΡ‚Π°Π»Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹Π±Ρ€Π°Π² Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Project > Options >Remove.

13 ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ работоспособности ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π°Ρ‡Π½Ρ‘ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (FileNewApplication).

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½Π° ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Samples ΠΈ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌ Π½Π°ΡˆΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ.

ΠŸΠΎΡ‚ΡΠ½ΡƒΠ² Π·Π° Ρ€Π°ΠΌΠΊΡƒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ события OnClick напишСм ΠΊΠΎΠ΄

//—————————————————————————————————————;

void __fastcall TForm1: Scororty_plusClick (TObject *Sender)

{

Form1->Osnova1->Skorosty-=5;

}

//—————————————————————————————————————;

void __fastcall TForm1: Scororty_minusClick (TObject *Sender)

{

Form1->Osnova1->Skorosty+=5;

}

//—————————————————————————————————————;

ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Scororty_plus ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вращСния Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Π° ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Scororty_minus ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒΡΡ.

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

1. А. Π―. ΠΡ€Ρ…Π°Π½Π³Π΅Π»ΡŒΡΠΊΠΈΠΉ «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π‘++ Builder 6».

2. К. РСйсдорф, К. Π₯СндСрсон «Borland C++ Builder. Освой ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π° 21 дСнь».

3. ВСллСс М. «Borland C++ Builder. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста (1998)»

4. Π§. ΠšΠ°Π»Π²Π΅Ρ€Ρ‚, К. РСйсдорф «Borland C++ Builder».

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ