Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
15-1194098943
Ya
2007-11-03 17:09
2007.12.02
Как создавать портабельные программы?


2-1194270848
Destroyer
2007-11-05 16:54
2007.12.02
Как узнать запущено ли приложение или нет?


2-1194518289
lobach
2007-11-08 13:38
2007.12.02
События


3-1184763707
tiktak
2007-07-18 17:01
2007.12.02
Преимущества создания баз данных при помощи MS Access и Delphi


2-1194360069
ArrotVazyPror
2007-11-06 17:41
2007.12.02
где скачать музыку