Страница 1 из 1

Динамическое создание компонентов и событий для них

Добавлено: 25 июл 2007, 22:34
scorpyx
Привет! Вот сталкнулся с такими двумя проблемами:
1) есть данный код (извените если где ошибусь в названиях, пишу на память код):

начало программы без из

begin

procedure Nachalo (Sender: TObject); // сама процедура
var
Panel: TPanel;
begin
Panel:= TPanel.Create(Self); // Создание компанента панел
Parent:= Panel; // не очень хорошо помню правильно ли написал )))
//дальше идут свойства которые я присваиваю панели
end;

procedure Form1Create(...); // обычная процедура на создание формы
begin
Nachalo; // вызов процедуры
end;

end.

ну я думаю тут всё вроде понятно за исключением того что если код который я пишу в процедуре прописать сразу в создании формы то всё работает, а в процедуре не работает, я считаю что неработает из-за того что нет указателя где именно создавать обьект, мб кто подскажет что где нужно приписать, и если нужно то какие параметры нужно дописать в вызове процедуры.


2) Можно ли создать обработчик какого либо события для динамически созданного компанента? если да то мб кто ссылку даст или пример приведёт?

заранее благодарен!

Динамическое создание компонентов и событий для них

Добавлено: 25 июл 2007, 22:34
scorpyx
Привет! Вот сталкнулся с такими двумя проблемами:
1) есть данный код (извените если где ошибусь в названиях, пишу на память код):

начало программы без из

begin

procedure Nachalo (Sender: TObject); // сама процедура
var
Panel: TPanel;
begin
Panel:= TPanel.Create(Self); // Создание компанента панел
Parent:= Panel; // не очень хорошо помню правильно ли написал )))
//дальше идут свойства которые я присваиваю панели
end;

procedure Form1Create(...); // обычная процедура на создание формы
begin
Nachalo; // вызов процедуры
end;

end.

ну я думаю тут всё вроде понятно за исключением того что если код который я пишу в процедуре прописать сразу в создании формы то всё работает, а в процедуре не работает, я считаю что неработает из-за того что нет указателя где именно создавать обьект, мб кто подскажет что где нужно приписать, и если нужно то какие параметры нужно дописать в вызове процедуры.


2) Можно ли создать обработчик какого либо события для динамически созданного компанента? если да то мб кто ссылку даст или пример приведёт?

заранее благодарен!

Re: Динамическое создание компонентов и событий для них

Добавлено: 26 июл 2007, 00:12
Duncon
вызов процедуры в этом случае можно написать так Nachalo (Self);

Re: Динамическое создание компонентов и событий для них

Добавлено: 26 июл 2007, 09:10
somewhere
&quot писал(а):2) Можно ли создать обработчик какого либо события для динамически созданного компанента? если да то мб кто ссылку даст или пример приведёт?

Код: Выделить всё

Procedure CreateKeyboardButton(fLeft, fTop, fWidth, fHeight, fFontSize: Integer; fFontName, fCaption:String; fTag:Integer);
var b : TButton;
begin
with frmUserList do
     begin
     b := TButton.Create(Panel4);
     b.SetBounds(fleft, fTop, fwidth, fheight);
     b.Font.Size := fFontSize;
     b.Font.Style := [fsBold];
     b.Font.Name := fFontName;
     b.Caption := fCaption;
     b.Tag := fTag;
     b.OnClick := frmUserList.EnterChar;
     b.OnMouseDown := frmUserList.btnDeleteMouseDown;
     b.Cursor := crHandPoint;
     b.Visible := false;
     Panel4.InsertControl(b);
     end;
end;

Код: Выделить всё

procedure TfrmUserList.btnDeleteMouseDown(Sender: TObject;  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
bsPressed := TButton(sender).Tag = 1;
bsCount := 0;
end;

Re: Динамическое создание компонентов и событий для них

Добавлено: 28 июл 2007, 18:25
ЧИЖ
во первых попробуй создавать свои динамические объекты не oncreate а например onshow (ну или процедуру вызывать от туда)

а во вторых я тут для друга решал тупую задачку но решил вроде умно
там как раз динамические объекты точнее даже массивы объектов

З.Ы. суть задачи была сделать считалку (фиксированную) а я сделал программируемую - обрати внимание на файл assortiment.txt