Текущий архив: 2004.06.06;
Скачать: CL | DM;
Вниз
Динамическое создание нескольких TSpeedButton. Срочно! Найти похожие ветки
← →
X9 © (2004-05-21 09:18) [0]Мастера, пожалуйста, помогите! Времени на выполнение очень и очень мало. Например, есть форма, поле ввода и кнопка. При каждом нажатии на кнопку создаётся компонент TSpeedButton, содержимое поля ввода заносится в StringList под индексом созданной кнопки(Индекс заносится в имя созданного компонента(B000, B001 ...). Затем, при нажатии на созданый SpeedButton через ShellExecute запускается программа, указанная в StringList для индеса нажатой кнопки. Как запустить программу я знаю, помогите с динамическим созданием SpeedButton и определением обработчиков нажатия для них, plz!!!
← →
TUser © (2004-05-21 09:26) [1]Создать = Create
назначить объект = :=
PS. Не суетись. Скачай ТП с сайта Подгорецкого - там все есть.
← →
Виталя (2004-05-21 09:31) [2]На этом сайте была статья "Создание компонентов в rin-time"
это выдержка - как создать много Edit
var a:array[1..20] of TEdit
begin
for i:=1 to 20 do begin
a[i]:=TEdit.create(self);
a[i].parent:=form1;
a[i].left:=10;
a[i].text:="элемент # "+inttostr(i);
a[i].top:=i*20;
end;
Думаю SpeedButton - анологично создаются
← →
Anatoly Podgoretsky © (2004-05-21 09:35) [3]Все они создаются одинаково, вызовом конструктора, типичное имя Create
← →
X9 © (2004-05-21 09:37) [4]2Виталя
А как насчёт безлимитного создания кнопок? Я так понимая, нужен динамический массив. Можно ли примерчик с динамическим массивом?
← →
X9 © (2004-05-21 09:39) [5]2Anatoly Podgoretsky
Это я прекрасно знаю, пожалуйста, не считайте меня за полного ламера.
← →
Rouse_ © (2004-05-21 09:52) [6]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ShellAPI;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
StringList: TStringList;
Count: Cardinal;
procedure SpeedButtonClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
BtnName: String;
sbtnNew: TSpeedButton;
begin
Inc(Count);
BtnName := "SpeedButton" + IntToStr(Count);
sbtnNew := TSpeedButton.Create(Self);
sbtnNew.Name := BtnName;
StringList.Values[BtnName] := Edit1.Text;
sbtnNew.Parent := Self;
sbtnNew.Caption := BtnName;
sbtnNew.OnClick := SpeedButtonClick;
sbtnNew.Width := 100;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringList := TStringList.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
StringList.Free;
end;
procedure TForm1.SpeedButtonClick(Sender: TObject);
begin
ShellExecute(Handle, "open", PChar(StringList.Values[TSpeedButton(Sender).Name]), nil, nil, SW_SHOW);
end;
end.
Желаю успехов
← →
NAlexey © (2004-05-21 09:53) [7]>X9 © (21.05.04 09:37) [4]
Массив тебе нужен если будешь обращаться к элементам массива. А если нет, то зачем тебе массив?
procedure TForm1.Button1Click(Sender: TObject);
var
Btn: TSpeedButton;
I: Integer;
begin
for I := 0 to 100 do
begin
Btn := TSpeedButton.Create(Self);
Btn.Left := Btn.Width*I;
Btn.Top := Btn.Height*I;
Btn.Parent := Self;
end;
end;
← →
ega23 © (2004-05-21 10:02) [8]А как насчёт безлимитного создания кнопок? Я так понимая, нужен динамический массив. Можно ли примерчик с динамическим массивом?
А чем тебя TForm.Components[i] или TForm.Components[i] не устраивает?
← →
X9 © (2004-05-21 11:11) [9]Всем огромное спасибо!!!
Страницы: 1 вся ветка
Текущий архив: 2004.06.06;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.024 c