![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]()
В своем проекте создаю динамический графический интерфейс. Примитивы рисования уже создал, и теперь могу нарисовать на экране картинку в нужном месте одной процедурой. В таймере идет отрисовка буфера, так что с графикой проблем нет. Теперь над этим уровнем строю следующий уровень организации - динамическое меню. Т.е. что-бы можно было создать кнопку одной процедурой.
Сделал, получилось. Теперь осталось разобраться, как вызвать нужную процедуру при нажатии кнопки. Система у меня такая - 1) CreateButton(X, Y, Caption); В динамическом массиве в конец приписывается элемент, который содержит запись ( в ней координаты, area для подсветки и проч). 2) На OnMouseMove и OnMouseDown идет процедура такого типа: Код:
Код:
Код:
Мне кажется, что тут два пути: 1) Либо перестроить всю процедуру Normal, чтобы она вызывала процедуру, в которую спускать P.Nm а там кейсить все и вся. 2) Либо создать еще десятка два констант, которые будут отправляться в Spoint. Придется в таймере увеличить Case с 8-ми элементов до 100500.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
![]()
Не совсем понял что написано((( Но если у Вас есть процедура CMP, которая вызывается при клике, и если у Вас есть массив кнопок, которые, в свою очередь, имеют координаты. Ищите по массиву кнопки, координаты которых совпадают, и вызывайте их обработчик... Или я чего-то не понимаю?
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
![]() |
![]() |
![]() |
#3 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]()
Дело в том, что между моментом нажатия и выполнением процедуры по клику проходит 20 тактов таймера (< 1 сек). Это время дается на обработку анимации. Т.е. инициатором начала анимации является процедура Light, в которой включается счетчик. А исполнитель - Normal, который "активирует" нужный пункт, если таймер "тикнул" достаточно (по коду это можно увидеть).
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Если ты не можешь выполнить процедуру - отдай распоряжение тому, кто сможет (таймер может?). Сделай структуру куда помещается адрес процедуры и ее параметры.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#5 | |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]() Цитата:
Подскажите, как правильно будет создать указатель на процедуру, чтобы по нему потом вызвать её?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Код:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#7 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]()
Ясно, спасибо.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Интерфейс | masterlomaster | Помощь студентам | 3 | 22.10.2009 11:42 |
COM-интерфейс | Rekky | Общие вопросы Delphi | 2 | 16.09.2009 06:05 |
Интерфейс | [Smarik] | Общие вопросы Delphi | 16 | 18.06.2008 10:37 |
Интерфейс!!! | Oleg Romanchuk | Свободное общение | 8 | 25.10.2007 18:13 |