![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
создаю динамически Image
Код:
procedure TForm1.Button1Click(Sender: TObject); var icon :TIcon; begin imag:=TImage.Create(self); imag.Parent:=Form1.Panel1; imag.Left:=10; imag.Top:=10; imag.AutoSize:=true; imag.Picture.Icon:=icon; imag.OnDblClick:=OpenLabel; //вот нажатие обрабатывается процедурой end; procedure TForm1.OpenLabel(Sender: TObject); begin ShellExecute(handle, 'open', filename, nil, nil, SW_SHOWNORMAL); end; imag.OnDblClick вобщем вопрос: как передать в процедуру или функцию дополнительный параметр с типом string |
|
#2
|
||||
|
||||
|
Ну я бы делал так.
Код:
... создаю каритнку... imag.Tag := i; // где i - как раз разница между картинками (либо надо было делать массив картинок var a: array of TImage) // то бишь i - просто переменная. inc(i); // i:=i+1; Код:
...openLabel...
begin
case TImage(Sender).Tag of
1: ShellExecute(handle, 'open', '1', nil, nil, SW_SHOWNORMAL);
2: ShellExecute(handle, 'open', '2', nil, nil, SW_SHOWNORMAL);
3: ShellExecute(handle, 'open', '3', nil, nil, SW_SHOWNORMAL);
else
ShellExecute(handle, 'open', '4', nil, nil, SW_SHOWNORMAL);
end; |
|
#3
|
|||
|
|||
|
я слегка не понял, мне нужно запускать файлы, причем заранее они мне будут не известны и количество тоже
|
|
#4
|
||||
|
||||
|
Код:
var
Form1: TForm1;
S: String;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
icon : TImage;
begin
imag:=TImage.Create(self);
with imag do begin
Parent:=Form1.Panel1;
Left:=10;
Top:=10;
AutoSize:=true;
Picture.Icon:=icon;
OnDblClick:=OpenLabel;
S:='myfile.exe';
end;
end;
procedure TForm1.OpenLabel(Sender: TObject);
begin
ShellExecute(handle, 'open', s, nil, nil, SW_SHOWNORMAL);
end; |
|
#5
|
||||
|
||||
|
Либо если несколько картинок создаешь:
Код:
S: String;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
icon : array[1..3] of TImage;
i: integer;
begin
for i:=1 to 3 do begin
imag[i]:=TImage.Create(self);
with imag[i] do begin
Parent:=Form1.Panel1;
Left:=10;
Top:=10;
AutoSize:=true;
Picture.Icon:=icon;
OnDblClick:=OpenLabel;
S:='myfile.exe' + IntToStr(i); // изменяй здесь название файла
end;
end;
procedure TForm1.OpenLabel(Sender: TObject);
begin
ShellExecute(handle, 'open', s, nil, nil, SW_SHOWNORMAL);
end; |
|
#6
|
|||
|
|||
|
видимо надо полностью описать ситуацию:
по нажатии кнопки я создаю на panel один новую иконку открываемого файла, и после этого я должен нажать на эту созданную иконку и запустить файл, то есть в любой момент времени я могу вызвать функцию запуска файла и должен туда передать путь а у тебя получается Код:
for i:=1 to 3 do begin
imag[i]:=TImage.Create(self);
with imag[i] do begin
Parent:=Form1.Panel1;
Left:=10;
Top:=10;
AutoSize:=true;
Picture.Icon:=icon;
OnDblClick:=OpenLabel;
S:='myfile.exe' + IntToStr(i); // изменяй здесь название файла
end; |
|
#7
|
||||
|
||||
|
Объясни как ты хочешь передавать путь? Где ты его узнаешь???
|
|
#8
|
|||
|
|||
|
через opendialog открываю файл (.exe) достаю из него иконку ставлю ее на Panel, адрес беру из opendialog.fileame
|
|
#9
|
|||
|
|||
|
можно запоминать путь в массив а потом вытаскивать
|
|
#10
|
||||
|
||||
|
Ну? В чем проблема?
Код:
var // глобальный Form1: TForm1; i: Integer=1; s: array[1..5] of string; ... создаю картинку... inc(i); // i:=i+1; Код:
click по картинке begin shellexecute(handle, 'open', s[i-1]... |
|
#11
|
|||
|
|||
|
а как я узнаю какая иконка вызвала функцию?
Последний раз редактировалось OvoMan, 18.01.2011 в 22:23. |
|
#12
|
|||
|
|||
|
могу предложить немного по другому
Код:
var A: array of PAnsiChar; procedure TForm1.Button1Click(Sender: TObject); ... SetLength(A,Length(A)+1); imag.Tag:=Length(A); A[Length(A)-1]:='путь'; procedure TForm1.OpenLabel(Sender: TObject); begin ShellExecute(handle, 'open', A[TImage(Sender).tag-1], nil, nil, SW_SHOWNORMAL); end; |
|
#13
|
|||
|
|||
|
Цитата:
|
|
#14
|
|||
|
|||
|
Цитата:
во точно через tag, это идея спасибо попробую |