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

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
scorpyx
Сообщения: 3
Зарегистрирован: 25 июл 2007, 22:15

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

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

begin

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

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

end.

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


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

заранее благодарен!
scorpyx
Сообщения: 3
Зарегистрирован: 25 июл 2007, 22:15

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

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

begin

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

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

end.

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


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

заранее благодарен!
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

вызов процедуры в этом случае можно написать так Nachalo (Self);
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

&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;
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
ЧИЖ
Сообщения: 29
Зарегистрирован: 24 фев 2007, 23:57
Контактная информация:

во первых попробуй создавать свои динамические объекты не oncreate а например onshow (ну или процедуру вызывать от туда)

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

З.Ы. суть задачи была сделать считалку (фиксированную) а я сделал программируемую - обрати внимание на файл assortiment.txt
Вложения
calculation.zip
(10.55 КБ) 87 скачиваний
Ответить