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

Вниз

Событие на Мышь   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
1-8835
tavwizard
2002-01-19 16:49
2002.02.04
add-in для Delphi


1-8872
IronHawk
2002-01-15 18:30
2002.02.04
ОКРУГЛЕНИЕ ! ! ! . . .


3-8792
vygantas
2002-01-08 12:41
2002.02.04
D6 и MySQL


1-8844
Vovochka_guest
2002-01-21 08:53
2002.02.04
Какой компонент для создания отчетов лучше?


6-8960
SemFLY
2001-11-11 18:56
2002.02.04
Почему никак не разберусь ! :-(