![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
ivan219 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Помогите нарисовать свою кнопку я в это деле мало разбираюсь так что даже не знаю с чего начать
![]()
Создал новый класс. А вот код отрисовки моих кнопок
Как заделать чтоб заместо старой кнопки было видно новую ![]() |
||||
|
|||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Тебе нужно просто создать свою процедуру отрисовки кнопки. Все остальное можешь оставить как есть. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Ну хоть намекните откуда плесать
![]() Это правильно ![]()
Нет тут нету Paint тут чемто другим рисуется ![]() Это сообщение отредактировал(а) ivan219 - 5.2.2007, 22:09 |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Sunvas, А какую процедуру надо переопределять.
|
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
В свое время я переписывал процедуру DrawButton таким образом:
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Её не в TButton TButtonControl TWinControl да и надо её делать перегрузку overload; или нет
![]() И ещё чем ты её вызывал ![]() Это сообщение отредактировал(а) ivan219 - 5.2.2007, 22:49 |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Можеш пример дать
![]() |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Я тебе дал пример. Я не вызывал оверлоад и все работал. А что это вообще такое?
В "теле" программы писал:
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
ivan219 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Так не вызывается эта процедура.
Так я её создаю кнопку.
и кнопка создаётся обычная. Но вот только в этой процедуре ни чего не происходить я это определит так:
Label неменяется и кнопка осталась такойже как и была! А если тоже самое проделать через
То и Label меняется и кнопки нет ![]() Так что процедура DrawButton невызывается при создании кнопки. |
||||||
|
|||||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
ivan219, там действительно есть пару ньюансов. Вот брошу тебе мой пример (когда-то пытался нарисовать кнопки управления окном). Хотя он и недописан, но ты, я думаю разберешься.
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
ivan219 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Это ты проверяеш ![]() ![]() Это перегрузка процедуры которые могут имень разные порамеры но с одинаковыми именами.
Просто пример есть как из TLabel делают Label с тенью так там был это
Это сообщение отредактировал(а) ivan219 - 5.2.2007, 23:35 |
||||
|
|||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Честно говоря не поню. Я с этим работал давненько. Забывается все со временем. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
ivan219 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Sunvas, утебя процедура DrawButton вызывается от сообщения
но я зделал так
и Label не изменился т.е сообщение небыло вызванно ![]() |
||||
|
|||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
ivan219, Хм.. Давай до завтра. Я подумаю. Просто еще раз говорю, что этот исходник страшной старый 2-3 года. Забыл я что в нем писал.
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
и я влезу
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
||||
|
|||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Romikgy, распиши эти сообщения
![]()
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
имхо все есть в мсдн
двойной клик на кнопке , почему обрабатываю все эти команды, потому как кнопка это отдельное окно, имеет свою очередь сообщений, можно ее всю перехватить, но мне лень было , и я показал , как можно отрисовать перехватив только изменения картинки, ибо вызывается когда кнопка отрисовывается изначально или после свертывания, а при нажатии срабатывает другое сообщение, при отпускании третье, и рисование происходит по разным путям, хотя внизу вызывается одна и таже ф_ция, лень искать было ... -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
MCDN там всё по английски а есть с русским переводом
![]() |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Вот что вышло:
Только есть некоторые минусы. При наведении мышкой на кнопку рисунок исчезает наверное надо обрабатывать ещё одно сообщение, также видны уголки прямоугольно кнопки может можно её вообще стереть ![]() |
|||
|
||||
Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
WM_MOUSEMOVE
зачем тогда эти плюсы и минусы? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
||||
|
|||||
ivan219 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
А у меня там две рисовалки первая рисует прямоугольник по строчно от R.Top+1 до R.Bottom-2
А вторая обводку вокруг него R.Left,R.Top,R.Right,R.Bottom получается красивая кнопка.
Углы выходят за пределы моей кнопки так как уменя там ничего не рисуется вот и остаётся старая кнопка. Добавлено @ 18:47 По 3 пикселя на каждом углу попробую их зарисовать но может есть другая возможность. Добавлено @ 18:51 Но попрежнему после первого ножатия на кнопку она не периресовывается только после второго это происходит. |
||||
|
|||||
ivan219 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Работает
![]()
Правда есть ещё один минус когда мышка на кнопке происходит
А что делать если мыши нет на кнопке ![]() |
||||
|
|||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
а если над компонентом ничего не происходит так он имхо и не перерисовывается, или перефразируй вопрос? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ivan219 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Ну если сночало мышка была на кнопке WM_MOUSEMOVE; потом убрал с кнопки что произойдёт
![]() Да и ещё пару багов нашол: 1: Когда форму скрываеш то кнопка исчезает виновата вот этот код
но если делать просто
то кнопка мирцает что посоветуете ![]() 2: Если на форме XPmanyfest то другие кнопки обычные TButton если их нажать остаются в токомже положении что делать ![]() Добавлено @ 20:17 Если вот так то всё работает но видны уголки прямоугольной кнопки.
|
||||||
|
|||||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
выложи проект я его посмотрю
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ivan219 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Вызов.
Но всё равно при первом ножатии кнопка перерисовывается нетак как надо. Это сообщение отредактировал(а) ivan219 - 6.2.2007, 22:39 |
||||
|
|||||
Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
немного поправил
на это смотрю, там происходит вызоввм_паинта и он рисует первую картику ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
||||
|
|||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
окончательный вариант
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Romikgy, Спасибо
![]() ![]() Возник один вопрос от куда в переменной H взялось значение что потом я из него Hendl вытянул ![]()
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
этого я сам не знаю ![]() ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
А всё таки интересно откуда ведь туда можно любую переменную назначить и всё равно в ней будет что-то даже если её за пределы Type вынести то тоже всё работает
![]() ![]() Это полтергейст ![]() |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Дебаггером оттестить ![]() Возможно тут действует тот факт, что по умолчанию переменные "забиты" мусором. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
это метод TWinControl , а батон потомок его плюс сам метод выдает 2 параметра HDC ответ ф_ции и HWnd хендл окна , т.к. мы находимся в этом классе то мы знаем (точнее компонент ) и хендл свой и хдц Добавлено @ 00:15 неа в дельфи по умолчанию данные забиты нулями (если дин массив не создавался средствами апи винды) -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
||||
|
||||
ivan219 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Вопрос не решён так как исчезло событие OnClick т.е. оно еть но не действует, всё что в него вписать не выполняется
![]()
Добавлено @ 17:54
|
||||
|
|||||
CatATonik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 12.1.2007 Где: Москва Репутация: 6 Всего: 8 |
Добавь inherited
и так во все обработчики сообщений Это сообщение отредактировал(а) CatATonik - 7.2.2007, 17:57 |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Точно
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |