![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Событие на Мышь
Dennis S © (2002-01-16 11:42:00)В цикле на форме создаются 10-15 кнопок...с индексированным именем (bt1...bt15)
Как отследить какую из этих кнопок шелкнули мышой
и получить имя этой кнопки?
По сути: как проследить на каком объекте было щелкнуто мышкой и получить имя этого объекта.
(Сразу оговорюсь: вопрос встал не в Delphi, а в VBA у друга)
(Но, если чесно, то я и Delphi не особо представляю как это проследить...)
Dennis S (2002-01-21 11:57:00) [1]СПАСИБО ВСЕМ!
:)
Владислав (2002-01-17 09:39:00) [2]> Dennis S © (16.01.02 15:16)
А как теперь обратиться к кнопке bt2, например?
В коде, который я приводил (см. Владислав © (16.01.02 12:54))
в обработчике события OnClick добавь код:
procedure Form1.ButtonClick(Sender: TObject);
var
CurComp: TComponent;
begin
ShowMessage("Имя кнопки: "+TComponent(Sender).Name);
CurComp:=FindComponent(TComponent(Sender).Name);
if CurComp is TButton then
with TButton(CurComp) do begin
... //Здесь то, что ты хочешь сделать с компонентом (кнопкой)
end
end;
Adder (2002-01-16 16:37:00) [3]uses contnrs;
Dennis S (2002-01-16 16:35:00) [4]list: TObjectList - не воспринимает...
:?
MBo (2002-01-16 16:30:00) [5]var
bt:tbutton;
list:tobjectlist;
list:=tobjectlist.create;
...
tbutton(list[2]).caption:=" третьякнопка";
Dennis S (2002-01-16 16:24:00) [6]А как var-ить bt и objectlist?
И как потом из objectlist вытастивать bt2???
MBo (2002-01-16 16:07:00) [7]либо обходи компоненты
for i:=0 to componentcount-1 do begin
if components[i] is tbutton then
if tbutton(components[i]).name="bt2" then...
end;
или (лучше) заведи список и в него заноси создаваемые кнопки
var bt:tbutton;
for...
bt:=TButton.Create(self);
with bt do begin
Parent:=self;
Name:="bt"+IntToStr(i);
Caption:="Button "+IntToStr(i);
OnClick:=ButtonClick
end;
objectlist.add(bt);
end;//for
Dennis S (2002-01-16 16:01:00) [8]У меня все еще не получается... :(
Не могу обратиться(правильно) к этой кнопке после еще создания...
На имя bt2 - не прёт, а как её ещё вылавливать?
Dennis S (2002-01-16 15:16:00) [9]2 Владислав ©
А как теперь обратиться к кнопке bt2, например?
Click-ом на форме поменять её Top или Width...
Владислав (2002-01-16 14:23:00) [10]Что пробовал? Что значит "не прет"? И что значит "кнопки не лезут"?
Подобным кодом я пользовался. Замечательно работает.
Если у тебя кнопки не отображаются, так там надо добавить: Parent:=Self. Я тебе идею даю, а не готовый вариант. Задача-то твоя.
Dennis S (2002-01-16 14:19:00) [11]2 Владислав ©
А сам пробовал? У меня не прёт... :(
...и вообще кнопики не лезут - чистая форма ???
Владислав (2002-01-16 12:54:00) [12]Какие проблемы?
procedure Form1.CreateAllButton;
var
i: integer;
begin
for i:=0 to 100 do
with TButton.Create(self) do begin
Name:="bt"+IntToStr(i);
Caption:="Button "+IntToStr(i);
OnClick:=ButtonClick
end
end;
procedure Form1.ButtonClick(Sender: TObject);
begin
ShowMessage("Имя кнопки: "+TComponent(Sender).Name);
end;
Dennis S (2002-01-16 12:43:00) [13]Спасибо всем!
Попробую...
2 Aleksandr ©
Кажется, самый реальный вариант... :)
2 Остальные
посмотрите и поймете свои ошибки*...
...(button-ов) как таковых нет. Как я им наставлю OnClick!?
Тем более, что каждый раз генерится разное кол-во кнопок.
Еще раз спасибо!
serg (2002-01-16 12:06:00) [14]в VBA у формы есть сво-о ActiveControl
Aleksandr (2002-01-16 12:04:00) [15]Ну, там где создаешь эти кнопки, пишешь:
procedure TForm1.FormCreate:
for i:=1 to 15 do
with TButton.Create(Self) do begin
Name:="bt"+IntToStr(i);
OnClick:=FButtonClick
end;
procedure TForm1.FButtonClick(Sender : TObject);
begin
//присваиваем тому, кому надо, название кнопки
ButtonClicked.Caption:=(Sender AS TButton).Name
end;
Владислав (2002-01-16 12:03:00) [16]Назначить всем кнопкам один обработчик события OnClick.
При входе в обработчик (при нажатии одной из кнопок) делать проверку:
if Sender=Button12 then ShowMessage("Это кнопка № 12.");
ShowMessage("Имя кнопки: "+TComponent(Sender).Name);
vlv (2002-01-16 12:00:00) [17]В Delphi - легко: присваиваешь всем кнопам событие на клик(или на что надо):
procedure TForm1.Button2Click(Sender: TObject);
var s:string;
begin
if Sender is TButton then
s:=TButton(Sender).Caption;
end;
Далее обрабатываешь s как душеньке угодно.
gek (2002-01-16 11:59:00) [18]В обработке OnClick
begin
if (sender as TSpeedButton).name = "kuku" then
showmessage("1 button")
else
if (sender as TSpeedButton).name = "kuku1" then
showmessage("2 button")
.....
end;