Півтора роки тому писав таку статтю на одному форумі, на блозі цього немає. У зв'язку з тим, що на цьому тижні підняв тему використання Sender: TObject і операторів as і is. розпишу все заново тут і зараз :)
Ми використовуємо TImage, стільки TImage, скільки потрібно кнопок.
підготовка
У наших кнопок буде три стану - натиснута, не було натиснуто, активна (наведена миша).
Заздалегідь підготуй три картинки, для трьох цих станів, і помісти в папку програми.
Створимо константи з іменами наших картинок:
Ії, нам треба їх міняти, підготуємося:
Тут ми передаємо функції ім'я файлу картинки (з створених констант) і вказівка на TImage, з яким потрібно таке створити.
Так-с, поставимо тепер на форму Image1, створимо йому такі обробники подій:
Тут все зрозуміло (сподіваюся): при натисканні, отжатии, наведенні мишею. А як бути, коли миша йде?
Так, з одним TImage працює на ура. Тільки ось мерехтить при русі мишею, це погано, але ж?
Тоді додамо ще чотири константи:
Куди ми будемо їх привласнювати? Невірно, до властивості tag у TImage, воно зарезервовано спеціально для таких пожежних випадків.
Відразу наведу модифікований код:
Ось і настав той момент ... коли нам треба переходити від одного Image1 до будь-якого TImage, на якому відбулася подія. Якщо ти читав мій блог, то вже знаєш, що треба замінити Image1 на (Sender as TImage) у всіх обробниках подій у Image1.
А що робити при русі мишею по формі? Точно, треба перебрати всі компоненти TImage на формі, корисний, до речі, навик:
Начебто все чисто і ясно, можу про це потім окремий пост написати.
Ну і призначимо події при старті форми:
Тепер, скільки б ми TImage не створили в проекті, стільки у нас і буде кнопок :)
А ви знали, що google - хіпі? Особливо рано вранці :)
Іноді потрібно підключити інтернет. але виникають проблеми - багато провайдерів, різні тарифи - як вибрати? Якщо ти в Москві, то скористайся посиланням вище.
Щиро Дякую. Ламав голову над бітбаттонамі і png. Але вийшло тільки так. Єдине, не зрозумів, як узагальнити пильнуючи всіх кнопок, щоб різні png використовувалися. В результаті повторив більшу частину коду для другої кнопки, решта втиснув в цей, де було можливо.
Все працює, і це головне. Ще раз дякую.
З приводу швидкості - перенесу скоро на інший хостинг.
Геннадій, так мило, через це ти пишеш в інший пост?)