Створюємо кнопки з timage, використовуючи параметр sender, парсинг і delphi

Створюємо кнопки з timage, використовуючи параметр sender, парсинг і delphi

Півтора роки тому писав таку статтю на одному форумі, на блозі цього немає. У зв'язку з тим, що на цьому тижні підняв тему використання Sender: TObject і операторів as і is. розпишу все заново тут і зараз :)

Ми використовуємо TImage, стільки TImage, скільки потрібно кнопок.

підготовка

У наших кнопок буде три стану - натиснута, не було натиснуто, активна (наведена миша).
Заздалегідь підготуй три картинки, для трьох цих станів, і помісти в папку програми.
Створимо константи з іменами наших картинок:

Ії, нам треба їх міняти, підготуємося:

Тут ми передаємо функції ім'я файлу картинки (з створених констант) і вказівка ​​на TImage, з яким потрібно таке створити.

Так-с, поставимо тепер на форму Image1, створимо йому такі обробники подій:

Тут все зрозуміло (сподіваюся): при натисканні, отжатии, наведенні мишею. А як бути, коли миша йде?

Так, з одним TImage працює на ура. Тільки ось мерехтить при русі мишею, це погано, але ж?

Тоді додамо ще чотири константи:

Куди ми будемо їх привласнювати? Невірно, до властивості tag у TImage, воно зарезервовано спеціально для таких пожежних випадків.

Відразу наведу модифікований код:

Ось і настав той момент ... коли нам треба переходити від одного Image1 до будь-якого TImage, на якому відбулася подія. Якщо ти читав мій блог, то вже знаєш, що треба замінити Image1 на (Sender as TImage) у всіх обробниках подій у Image1.

А що робити при русі мишею по формі? Точно, треба перебрати всі компоненти TImage на формі, корисний, до речі, навик:

Начебто все чисто і ясно, можу про це потім окремий пост написати.

Ну і призначимо події при старті форми:

Тепер, скільки б ми TImage не створили в проекті, стільки у нас і буде кнопок :)

Створюємо кнопки з timage, використовуючи параметр sender, парсинг і delphi

А ви знали, що google - хіпі? Особливо рано вранці :)

Іноді потрібно підключити інтернет. але виникають проблеми - багато провайдерів, різні тарифи - як вибрати? Якщо ти в Москві, то скористайся посиланням вище.

Щиро Дякую. Ламав голову над бітбаттонамі і png. Але вийшло тільки так. Єдине, не зрозумів, як узагальнити пильнуючи всіх кнопок, щоб різні png використовувалися. В результаті повторив більшу частину коду для другої кнопки, решта втиснув в цей, де було можливо.
Все працює, і це головне. Ще раз дякую.

З приводу швидкості - перенесу скоро на інший хостинг.
Геннадій, так мило, через це ти пишеш в інший пост?)