Форум: "Начинающим";
Текущий архив: 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