Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
ВнизСобытие на Мышь Найти похожие ветки
← →
Dennis S (2002-01-16 11:42) [0]В цикле на форме создаются 10-15 кнопок...с индексированным именем (bt1...bt15)
Как отследить какую из этих кнопок шелкнули мышой
и получить имя этой кнопки?
По сути: как проследить на каком объекте было щелкнуто мышкой и получить имя этого объекта.
(Сразу оговорюсь: вопрос встал не в Delphi, а в VBA у друга)
(Но, если чесно, то я и Delphi не особо представляю как это проследить...)
← →
gek (2002-01-16 11:59) [1]В обработке OnClick
begin
if (sender as TSpeedButton).name = "kuku" then
showmessage("1 button")
else
if (sender as TSpeedButton).name = "kuku1" then
showmessage("2 button")
.....
end;
← →
vlv (2002-01-16 12:00) [2]В Delphi - легко: присваиваешь всем кнопам событие на клик(или на что надо):
procedure TForm1.Button2Click(Sender: TObject);
var s:string;
begin
if Sender is TButton then
s:=TButton(Sender).Caption;
end;
Далее обрабатываешь s как душеньке угодно.
← →
Владислав (2002-01-16 12:03) [3]Назначить всем кнопкам один обработчик события OnClick.
При входе в обработчик (при нажатии одной из кнопок) делать проверку:
if Sender=Button12 then ShowMessage("Это кнопка № 12.");
ShowMessage("Имя кнопки: "+TComponent(Sender).Name);
← →
Aleksandr (2002-01-16 12:04) [4]Ну, там где создаешь эти кнопки, пишешь:
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;
← →
serg (2002-01-16 12:06) [5]в VBA у формы есть сво-о ActiveControl
← →
Dennis S (2002-01-16 12:43) [6]Спасибо всем!
Попробую...
2 Aleksandr ©
Кажется, самый реальный вариант... :)
2 Остальные
посмотрите и поймете свои ошибки*...
...(button-ов) как таковых нет. Как я им наставлю OnClick!?
Тем более, что каждый раз генерится разное кол-во кнопок.
Еще раз спасибо!
← →
Владислав (2002-01-16 12:54) [7]Какие проблемы?
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 14:19) [8]2 Владислав ©
А сам пробовал? У меня не прёт... :(
...и вообще кнопики не лезут - чистая форма ???
← →
Владислав (2002-01-16 14:23) [9]Что пробовал? Что значит "не прет"? И что значит "кнопки не лезут"?
Подобным кодом я пользовался. Замечательно работает.
Если у тебя кнопки не отображаются, так там надо добавить: Parent:=Self. Я тебе идею даю, а не готовый вариант. Задача-то твоя.
← →
Dennis S (2002-01-16 15:16) [10]2 Владислав ©
А как теперь обратиться к кнопке bt2, например?
Click-ом на форме поменять её Top или Width...
← →
Dennis S (2002-01-16 16:01) [11]У меня все еще не получается... :(
Не могу обратиться(правильно) к этой кнопке после еще создания...
На имя bt2 - не прёт, а как её ещё вылавливать?
← →
MBo (2002-01-16 16:07) [12]либо обходи компоненты
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:24) [13]А как var-ить bt и objectlist?
И как потом из objectlist вытастивать bt2???
← →
MBo (2002-01-16 16:30) [14]var
bt:tbutton;
list:tobjectlist;
list:=tobjectlist.create;
...
tbutton(list[2]).caption:=" третья кнопка";
← →
Dennis S (2002-01-16 16:35) [15]list: TObjectList - не воспринимает...
:?
← →
Adder (2002-01-16 16:37) [16]uses contnrs;
← →
Владислав (2002-01-17 09:39) [17]> 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;
← →
Dennis S (2002-01-21 11:57) [18]СПАСИБО ВСЕМ!
:)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c