| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Создание GUI |
| Автор: awilum 9.5.2009, 13:58 | ||||||||
Пишу GUI к своему движку. Сделал класс кнопки.
в программе создаю несколько кнопочек при инициализации
в таймере(он у меня на WINAPI) проверяются все обновления программы. вот там я вызываю проверки для каждой кнопки
рисую кнопки в отдельной процедуре Render
Значит при наведении курсора на кнопки срабатывает OnMouse; для каждой кнопки и кнопка меняет вид, как и должно быть. А вот почему то OnClick; срабатывает только для первой кнопки, для остальных ноль реакции. В чем может быть проблема ? |
| Автор: Louken 10.5.2009, 23:49 | ||
| awilum Потому что:
В момент проверки для других кнопок, 0-ая кнопка мышки перестает быть нажатой. Будь внимателен. |
| Автор: pseud 11.5.2009, 10:06 | ||||
код нечитабелен:
пиши так:
|
| Автор: awilum 11.5.2009, 12:38 | ||||||
| ChekBox не работает. Работает только то то что картинка только меняется. Нажал картинка поменялась на зачеркнутый квадратик еще раз нажал картинка без крестика, как и должно быть в CheckBox Но реакции на включен CheckBox или не включен нет.
.....
таймер
|
| Автор: Louken 11.5.2009, 17:05 | ||||||||
| awilum Какой ужас
Не проще ли
А рисовать
И тут что за бред
Снова наступаешь на теже грабли, что и в нулевом посте Научись уже наконец сам проверять свой код, банально можно пробежаться и в уме прикинуть, что должно происходить, после исполнения каждой строчки, тогда и не будешь допускать таких нелепостей. Или ты думаешь, что тебе весь твой "движок" будут так исправлять. |
| Автор: awilum 11.5.2009, 18:22 | ||
| Я всегда раньше писал и кнопки и чекбоксы прям в самой игре. Но вот сейчас переписываю движок на котором делал свои игры и решил, что лучше будет все эти кнопки, чекбоксы и тд.. разместить в отдельном модуле GUI engine. что бы игру не засорять повторяющемся кодом тем самым повысить удобство в использовании и читабильность кода. Всегда писал в играх вот так if age.input.But[0] then begin age.input.But[0] := false; ///----- обработка ----------------//// end;
И это нормально работает А в модуле GUI который сейчас пишу , почему то это все не работает |
| Автор: Qu1nt 11.5.2009, 19:10 |
| Сам подход неверен. Правильней - запрограммировать коллекцию, которая будет обрабатывать всякие разные графические компоненты. Кликательные и нажимательные эвенты реализовать через события. |
| Автор: Louken 11.5.2009, 21:38 | ||||||
| awilum Сам посуди, нестыковочка какая то
Соотнеси те строчки кода, которые я выделил, так у тебя ни для кнопок ни для чекбоксов клики мышки обрабатываться не должны вообще.
Почему не работает смотри чуть выше Qu1nt
+1 |