Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
Вниздинамическое создание компонента Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.041 c