|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.01.2008, 23:22 | #1 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Кнопка, потомок от TImage
Решил создать на основе Timage кнопку с подгружаемыми картинками, но вот что-то глючит(имено в когда кнопка как потомок). Раньше делал графические кнопки используя события мыши над компонентами( MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); ) и всё работало, а когда решил перенести их в компонент неидёт нормально. Может кто поделиться в дополнение к вопросу консультацией как создавать графические компоненты(с упрощёными рабочими примерами, чтобы иметь опуру что делать). Для начало хочу разобраться со своим компонентом, а потом хотелось бы изучить материал(без нагромождений информацией) по созданию вообщем.
Прилагаю наработку(есть коментарии, думаю понятно будет): ImgBtn.pas - сам компонент; Viz.pas - Собственно для тестирования компонента без установки в палитру. Последний раз редактировалось Alter; 03.01.2008 в 23:26. |
04.01.2008, 01:54 | #2 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Просмотрел по быстрому, есть кое-какие замечания:
1. В методах SetNorml, SetMove и SetClik не нужно указывать inherited, ведь эти методы не переопределены. Какие у них могут быть "предки"? 2. Переменные X и Y (и вообще любые, которые используются объектами) не стоит делать глобальными. Ведь однотипных объектов может быть несколько, а эти переменные только в одном экземпляре! Вполне возможны ситуации, когда один объект начал "меняться" и читать/менять эти переменные, в этот момент происходит какое-то событие и вызываются методы второго подобного объекта и он тоже начинает менять эти же переменные. Когда управление возвращается первому объекту, то он, ничего не подозревая, продолжает использовать измененные не им значения. Вобщем, или создать дополнительные поля в классе, или объявлять переменные локально (в данном случае это лучше). 3. Поле FActive очень желательно инициализировать в конструкторе - директива Default False не означает, что переменная инициализируется как False, это всего лишь указания о несохранении этого значения в dfm-файле. 4. Возможно Canvas.Font := Fon лучше заменить на Canvas.Assign(Fon). А еще стоит перерисовывать картинку перед выводом надписи, иначе надписи с разными шрифтами станут накладываться друг на друга. 5. Строки в подпрограммы лучше передавать по ссылке, т.е. как const S :String Это так, навскидку. Реально не я тестировал. |
04.01.2008, 10:08 | #3 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Если есть желание делать на основе картинок тобиш BitMap'оп то лучше сделать два класса, а именно:
Код:
|
04.01.2008, 22:09 | #4 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Мне бы надо чтобы JPG формат использовать можно было, поэтому то и выбрал TImage.
|
04.01.2008, 23:37 | #5 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Вообще-то, TImage не связан с каким-то конкретным форматом.
|
05.01.2008, 09:35 | #6 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
А кто вам мешает такое сделать ? Да и вообще нет такого в gdi Jpeg так что полюбому придеться bmp
Код:
|
13.01.2008, 12:57 | #7 |
Новичок
Джуниор
Регистрация: 13.01.2008
Сообщений: 1
|
Может стоит посмотреть http://www.delphikingdom.com/asp/vie...catalogid=1198
а исходник взять лучше отсюда http://www.delphikingdom.com/asp/vie...catalogid=1301 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кнопка не создается | Манжосов Денис :) | Компоненты Delphi | 10 | 28.04.2008 17:43 |
кнопка как ссылка | bill | HTML и CSS | 3 | 05.01.2008 12:57 |
Потомок от HotKey | Alter | Компоненты Delphi | 4 | 03.01.2008 15:47 |
Вогнутая кнопка | John_chek | Общие вопросы Delphi | 5 | 20.11.2007 14:21 |
Кнопка BitBtn | Yurek | Общие вопросы Delphi | 10 | 05.11.2007 18:42 |