Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Вниз

Как присвоить событие, только что созданному объекту?   Найти похожие ветки 

 
OP   (2007-11-07 21:26) [0]

Доброе время суток, у меня такой вопрос:

Мне нужно чтобы на форме было K*K кнопок, при нажатии на которые обрабатывалось бы событие, в зависимости от номера кнопки(Принцип как в Сапере, при нажатии на кнопку нужно знать какая она по вертикали и какая по горизонтали...).

- Я создал массив: Button:array of TButton;
- Потом onFormCreate прописал создание кнопок:
теперь у меня есть раполпженные как в Сапере кнопки, с именами Button[1], Button[2] и тд...
- Создал процедуру ButtonClick и назначил её свойством кнопок onclick: Button[число меняющееся в цикле при создании].OnClick := ButtonClick;
- Теперь при нажатии на любую из созданных кнопок у меня выполняется действие ButtonClick.

Все бы хорошо, но действия должны зависеть от имени кнопки. Вот собственно вопрос:
Как в этой ситуации узнать имя Кнопки, для которой выполняется это событие?


 
Servelat   (2007-11-07 21:29) [1]

Sender и есть твоя кнопка. Проверяй, что хочешь.


 
Dib@zol ©   (2007-11-07 22:09) [2]

Теоретически, делать "Сапёра" кнопками - это ужжос что такое!!! Лучше возьми массив из чисел, и прорисовывай его на форме самостоятельно! Функционал кнопок тут абсолютно не нужен, и будет только добавлять тормозов. Посмотри как "Сапёр" реализован у Н.Культина в книжке "Delphi в задачах и примерах".


 
Германн ©   (2007-11-08 00:44) [3]


> OP   (07.11.07 21:26)

См. [1]
Только забудь про имена компонент и научись пользоваться свойством Tag.


 
Юрий Зотов ©   (2007-11-08 01:13) [4]

> OP   (07.11.07 21:26)  

1. Если массив двумерный (K*K), то почему:
Button: array of TButton
вместо
Button: array of array of TButton
?

2. Если К известно заранее, то проще сделать ли массив статическим.


 
Denis__ ©   (2007-11-08 10:24) [5]


> то проще сделать ли массив статическим.

ИМХО проще забить на сапер:)


 
palva ©   (2007-11-08 10:33) [6]


> Как в этой ситуации узнать имя Кнопки, для которой выполняется
> это событие?
>

(Sender As TButton).Name


 
OP   (2007-11-08 16:37) [7]


> Теоретически, делать "Сапёра" кнопками - это ужжос что такое!
> !! Лучше возьми массив из чисел, и прорисовывай его на форме
> самостоятельно! Функционал кнопок тут абсолютно не нужен,
>  и будет только добавлять тормозов. Посмотри как "Сапёр"
> реализован у Н.Культина в книжке "Delphi в задачах и примерах".
>


Кнопки нужны только для эмулирования "нажатия", больше от них ничего не нужно, остальное и будет происходить в массиве и отображаться на форме без помощи кнопок. То есть кнопки после нажатия, будут просто исчезать:)


 
OP   (2007-11-08 16:41) [8]



> 1. Если массив двумерный (K*K), то почему:
> Button: array of TButton
> вместо
> Button: array of array of TButton
> ?

Замечание по существу - исправлю:)

>
> 2. Если К известно заранее, то проще сделать ли массив статическим.
>


К становится известно только в процессе выполнения программы(размеры поля настраиваемы).


 
Amoeba ©   (2007-11-08 16:46) [9]

Если делать "Сапера", то использовать DrawGrid, состояние ячеек хранить в массиве и соответственно ему отрисовывать ячейки битмапами из ресурса или ImageList. Кнопки тогда нафиг нужны. Единственно придется сделать эти битмапы.


 
OP   (2007-11-08 16:47) [10]

Спасибо всем, "проблему"(в кавычках пишу, потому что проблемой это назвать, язык не поворачивается) решилась - использовал (Sender As TButton).Tag



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.041 c
2-1194428093
allucard
2007-11-07 12:34
2007.12.02
тип данных


2-1194273663
-=Le][=-
2007-11-05 17:41
2007.12.02
Как узнать откуда запущен чужой процес?


15-1193663181
Jeer
2007-10-29 16:06
2007.12.02
Эфемерный E2k


15-1193307568
Валентин
2007-10-25 14:19
2007.12.02
смогу ли я быть программистом


3-1184674956
Циркуль
2007-07-17 16:22
2007.12.02
BDE, TTable, TQuery, TBatchMove, ошибка "Table is full"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский