Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
ВнизOnClick для динамически создаваемых кнопак Найти похожие ветки
← →
SO (2003-08-11 17:18) [0]Я динамически создаю (в цикле) N button-ов вапрос в том как задать для каждой кнопки разные OnClick. Например на что-б на Lbel1 выводилось имя кнопки на которую я нажал.
← →
Reindeer Moss Eater (2003-08-11 17:19) [1]OnClick:=ТО_ЧТО_НАДО;
← →
Skier (2003-08-11 17:21) [2]>SO © (11.08.03 17:18)
Не надо задавать разные OnClick.
Нужно задать один и уже в коде обработчика, анализировать
какая кнопка была нажата (используй параметр Sender и приведение типов)
← →
SO (2003-08-11 21:12) [3]А как именно?
← →
Anatoly Podgoretsky (2003-08-11 21:16) [4]Skier © (11.08.03 17:21) [2]
Ну что нарвался
← →
Всеволод Соловьёв (2003-08-11 22:14) [5]Мне интерсно, почему эта проблема, мной даже не считалась проблемой. Когда мне это впервые понадобилось сделать (ран-тайм присвоить процедуру для выполнения динамически создающемуся объекту), я даже не подумал, что это проблема, и что могут возникнуть какие-нибудь затруднения.
Если автор еще не знает, тогда объясню :)
← →
SO (2003-08-12 00:11) [6]А может кто нибуть доть кусочек кода я разберусь а то я не пойму ничего.
Заранее спасибо!!!
← →
NAlexey (2003-08-12 08:21) [7]
type
TYourClas = class(TSomeClass);
{ ... }
public
{ ... }
procedure MyOnClick(Sender: TObject);
{ ... }
end;
{ ... }
var
Btn: TButton;
begin
Btn := TButton.Create(Self);
Btn.Parent := Self;
Btn.OnClick := MyOnClick;
{ ... }
procedure TYourClas.MyOnClick(Sender: TObject);
begin
ShowMessage("!");
end;
← →
SO (2003-08-12 09:42) [8]Огромное спасибо за помащь но дело всем в том что в этом коде извесно имя кнопки (Btn ) на которую я нажал, а если я содаю в цикле 10 кнопак то как узнать имя кнопки на которую нажал (програмным путем)
мой цикл:
(я загружаю в memo1 ini файл: ini.ReadSections(Memo1.Lines))
мой ini файл:
[button1]
path=d:\1.exe
[button2]
path=d:\2.exe
то что в мемо
[button1]
[button2]
(я проверяю сколько Memo1.Lines.Count-ов и в цикле создаю)
var button10: TSpeedButton;
...
for y:=0 to x do begin
button10:=TSpeedButton.Create(Form1);
with button10 do begin
Parent:=Form1;
Name:=Memo1.Lines[y];
Caption:=name;
button10.Top:=z;
button10.Left:=i;
z:=z+45;
if (z{+45})>Form1.Width then begin
z:=10;
i:=i+210;
end;
button10.Width:=200;
button10.Height:=40;
Cursor:=crHandPoint;
Flat:=True;
Font.Color:=clHighlightText;
button10.OnClick:=color0;
end;
end;
Так вот вапрос в том как мне в моей функции color0 узнать имя кнопки на которую я нажал!!! (для дальнейшей загрузки из ini)
← →
Reindeer Moss Eater (2003-08-12 09:45) [9]TControl(Sender).Name
← →
Reindeer Moss Eater (2003-08-12 09:46) [10]Даже так
TComponent(Sender).Name
← →
MacroDenS (2003-08-12 09:57) [11]а можно и так
(sender as TButton).name
,
но при условии, что эта строка будет выполняться только при нажатии на компоненты класса TButton, если же тебе нужно из множества компонентов узнавать, то тогда см.
Reindeer Moss Eater © (12.08.03 09:46) [10]
а вообще, что касается разных OnClick-ов, то можно все возможны онклики запихать в ДЛЛ
← →
SO (2003-08-12 11:28) [12]П А С И Б О !!!!!!!!!
← →
NAlexey (2003-08-12 11:29) [13]П А Ж А Л С Т А !!!!!!!!
← →
malkolinge (2003-08-12 12:35) [14]Глянул бы ты про запись компонент в поток....
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c