Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.038 c
1-1181105710
DelphiN!
2007-06-06 08:55
2007.08.12
Подключиться к HKEY_CURRENT_USER другого пользователя


15-1184255892
Petr V. Abramov
2007-07-12 19:58
2007.08.12
А почему в Маскве


11-1167329054
Thaddy
2006-12-28 21:04
2007.08.12
site problems


1-1180969002
webpauk
2007-06-04 18:56
2007.08.12
Запретить навигацию


15-1184418835
Anatoly Podgoretsky
2007-07-14 17:13
2007.08.12
Московский потоп





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский