![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
События для динамических кнопок... [D2005, 2003]
FEV © (2009-10-16 16:34:00)Вот таким образом я считываю из файла количество кнопок, и создаю их...
Butt:=Ini.ReadInteger('Form','Buttons',1);
for i:=1 to butt do
begin
bt[i]:=tbutton.Create(self);
bt[i].Width:=Ini.ReadInteger('Button'+inttostr(i),'Width',100);
bt[i].Height:=Ini.ReadInteger('Button'+inttostr(i),'Height',100);
bt[i].Caption:=Ini.ReadString('Button'+inttostr(i),'Caption','Button'+inttostr(i));
bt[i].Left:=Ini.ReadInteger('Button'+inttostr(i),'Left',5);
bt[i].Top:=Ini.ReadInteger('Button'+inttostr(i),'Top',5);
bt[i].Font.Name:=Ini.ReadString('Button'+inttostr(i),'FontName','MS Sans Serif');
bt[i].Font.Size:=Ini.ReadInteger('Button'+inttostr(i),'FontSize',8);
if Ini.ReadInteger('Button'+inttostr(i),'ShowHint',0)<>0 then
begin
bt[i].ShowHint:=true;
bt[i].Hint:=Ini.ReadString('Button'+inttostr(i),'Hint','Hint');
end else bt[i].ShowHint:=false;
bt[i].OnClick:=BTNOnClick(i); пробовал еще просто BTNOnClick() и BTNOnClick(nil) и BTNOnClick(self)
bt[i].Parent:=form1;
Но я никак не могу настроить событие... Использую
bt[i].OnClick:=BTNOnClick(i); для запуска процедуры BTNOnClick(i)...
Есть сама процедура
procedure BTNOnClick(Sender: TObject); и пробовал BTNOnClick(i:integer) и BTNOnClick(Sender: TObject; i:integer)
var exec:string;
begin
exec:=Ini.ReadString('Button'+inttostr(i),'Exec','none');
if exec<>'none' then
if DirectoryExists(Disk+Exec) or fileexists(Disk+Exec) then
ShellExecute(bt[i].Handle, nil, pansichar(Disk+Exec), nil, nil, SW_SHOW);
end;
Не могу получить запуска. Параметр обязателен, без него запуститься не тот файл и причем с любой кнопки... хотя i:integer - глобальная переменная.
Вечно пишет For loop control variable must be simple local variable...
FEV (2009-10-18 14:53:00) [1]Спасибо!
Германн (2009-10-16 17:00:00) [2]bt[i].Tag:=i;
procedure TForm1.BTNOnClick(Sender: TObject);
begin
case TButton(Sender).Taf of
...
RWolf (2009-10-16 16:53:00) [3]
> глобальная переменная
а должна быть локальной, о чем Delphi и сообщает. Других в цикле FOR не положено.
clickmaker (2009-10-16 16:51:00) [4]bt[i].OnClick:=BTNOnClick;
procedure TForm1.BTNOnClick(Sender: TObject);