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

Вниз

динамическое создание компонента   Найти похожие ветки 

 
lamerskii_vopros   (2007-07-13 14:44) [0]

здраствуйте! такой вопрос возник, я создаю допустим 400 кнопок динамически, вот так:
Buttons_speed[i]:=TSpeedButton.Create(Self);
Buttons_speed[i].Width:=20;
Buttons_speed[i].Height:=20;
Buttons_speed[i].Left:=I*20;
Buttons_speed[i].Top:=0;
Buttons_speed[i].Caption :=  "";
Buttons_speed[i].Parent := Form1;
Buttons_speed[i].GroupIndex:=1;
Buttons_speed[i].OnClick:=MyClick;

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


 
Однокамушкин   (2007-07-13 14:46) [1]

При возникновении события в качестве параметра Sender переадётся указатель на тот компонент, который это событие вызвал, т.е. в вашем случае на соответствующую кнопку... Чтобы отличать одну кнопку от другой, обычно им всем назначают разное значение Tag...


 
lamerskii_vopros   (2007-07-13 14:46) [2]


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

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


 
Сергей М. ©   (2007-07-13 14:49) [3]


> на какой кнопке было это нажатие


На кнопке, представленной параметром Sender обработчика ее нажатия


 
Anatoly Podgoretsky ©   (2007-07-13 14:49) [4]

> lamerskii_vopros  (13.07.2007 14:44:00)  [0]

Параметр Sender


 
Anatoly Podgoretsky ©   (2007-07-13 15:16) [5]

> Однокамушкин  (13.07.2007 14:46:01)  [1]

Зачем?
Они и так отличаются


 
Amoeba ©   (2007-07-13 15:20) [6]


> я создаю допустим 400 кнопок динамически

Жу-у-ть! Не дай Бог, такое приснится.


 
Сергей М. ©   (2007-07-13 15:22) [7]


> Не дай Бог, такое приснится.


Мож он прогу для мутантов-четырестопальцев пишет)


 
lamerskii_vopros   (2007-07-13 15:24) [8]

Однокамушкин, Сергей М., Anatoly Podgoretsky спасибо!
сделал так, все работает:
procedure TForm1.MyClick(Sender: TObject);
begin
 TSpeedButton(Sender).Down:=true;
end;


 
lamerskii_vopros   (2007-07-13 15:26) [9]


> Жу-у-ть! Не дай Бог, такое приснится.

сапёр, или вы в него ни разу не играли? =)
там и побольше кнопок, а 400 я написал для примера...


 
Anatoly Podgoretsky ©   (2007-07-13 15:26) [10]

> Сергей М.  (13.07.2007 15:22:07)  [7]

Он игру делает, с полем 20х20


 
{RASkov} ©   (2007-07-13 15:29) [11]

> [6] Amoeba ©   (13.07.07 15:20)

может игруха какя-нибудь... типа крестики нолики с полем 10х40 :) или тот же сапер.....
Можно конечно и по другому - грид, рисовать на канве.... а у автора кнопки... тем более эти кнопки(TSpeedButton) теже рисунки на канве...
:)
Но я тоже не понимаю, когда дофига контролов.... Наверняка замена есть этой идеи... пусть даже идеи автора.


 
{RASkov} ©   (2007-07-13 15:30) [12]

Ух-х... пока писал...
Значит я угадал :)

> [9] lamerskii_vopros   (13.07.07 15:26)

Все можно и проще сделать.... Гридом например ;)


 
Сергей М. ©   (2007-07-13 15:34) [13]


> lamerskii_vopros   (13.07.07 15:26) [9]
>
>


> сапёр
> там и побольше кнопок


Я там от силы десяток их насчитал)
И те вряд ли "кнопки")

А то что ты считаешь сотнями кнопок в игровом поле, оными вовсе не являются на самом деле, хоть и выглядят как кнопки)


 
lamerskii_vopros   (2007-07-13 15:38) [14]

а как с помощью грида и какого грида этого добиться?


 
lamerskii_vopros   (2007-07-13 15:42) [15]

они же гриды не могут "проседать" при нажатии... или могут?


 
Сергей М. ©   (2007-07-13 15:46) [16]

А нарисовать самому картинку с изображением "просевшей" кнопки слабо ?)


 
Amoeba ©   (2007-07-13 15:49) [17]


> amerskii_vopros   (13.07.07 15:38) [14]
>
> а как с помощью грида и какого грида этого добиться?

Обычный DrawGrid + массив, хранящий информацию о состоянии ячеек.


 
Anatoly Podgoretsky ©   (2007-07-13 15:57) [18]

> lamerskii_vopros  (13.07.2007 15:42:15)  [15]

TDrawGrid

Могут, но задача того не стоит, с помощью кнопок реализовать проще.
Не для Window 3/1 же пишется, ни скорость, ни ресурсы сильно не пострадают.
А с помощью гридов или рисования на канве, конечно потребление будет меньше, но расплачиваться придется сложностью.


 
Zagaevskiy ©   (2007-07-13 16:22) [19]


> {RASkov} ©   (13.07.07 15:30) [12]
> Ух-х... пока писал...
> Значит я угадал :)
>
> > [9] lamerskii_vopros   (13.07.07 15:26)
>
> Все можно и проще сделать.... Гридом например ;)

долго писАл! почти 3 мин.


 
{RASkov} ©   (2007-07-13 16:27) [20]

> А с помощью гридов или рисования на канве, конечно потребление
> будет меньше, но расплачиваться придется сложностью.

С канвой согласен, а вот с гридом... можно и спидбатонами, но с гридом легче по соседним клеткам, при расчетах, бегать.... имхо.

> [19] Zagaevskiy ©   (13.07.07 16:22)

Ну у меня нет клавиатурный тренажера...:)
Тыкаю одним палцэм.... на ноге :) шутка.



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

Текущий архив: 2007.08.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.032 c
15-1184239754
Кевларвестов Семен
2007-07-12 15:29
2007.08.12
Определить Null или Not Null Поле в БД


15-1184346684
Vendict
2007-07-13 21:11
2007.08.12
Поклонники MS


8-1162916639
Ludmila
2006-11-07 19:23
2007.08.12
Примитивы в Mesh-объекте в DirectX


2-1184177481
Kolan
2007-07-11 22:11
2007.08.12
Как динамически создать Separator в MainMenu?


15-1184527243
Константинов
2007-07-15 23:20
2007.08.12
tranceroute