Привет! Вот сталкнулся с такими двумя проблемами:
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, Naeel Maqsudov, Игорь Акопян, Хыиуду
Привет! Вот сталкнулся с такими двумя проблемами:
1) есть данный код (извените если где ошибусь в названиях, пишу на память код):
начало программы без из
begin
procedure Nachalo (Sender: TObject); // сама процедура
var
Panel: TPanel;
begin
Panel:= TPanel.Create(Self); // Создание компанента панел
Parent:= Panel; // не очень хорошо помню правильно ли написал )))
//дальше идут свойства которые я присваиваю панели
end;
procedure Form1Create(...); // обычная процедура на создание формы
begin
Nachalo; // вызов процедуры
end;
end.
ну я думаю тут всё вроде понятно за исключением того что если код который я пишу в процедуре прописать сразу в создании формы то всё работает, а в процедуре не работает, я считаю что неработает из-за того что нет указателя где именно создавать обьект, мб кто подскажет что где нужно приписать, и если нужно то какие параметры нужно дописать в вызове процедуры.
2) Можно ли создать обработчик какого либо события для динамически созданного компанента? если да то мб кто ссылку даст или пример приведёт?
заранее благодарен!
1) есть данный код (извените если где ошибусь в названиях, пишу на память код):
начало программы без из
begin
procedure Nachalo (Sender: TObject); // сама процедура
var
Panel: TPanel;
begin
Panel:= TPanel.Create(Self); // Создание компанента панел
Parent:= Panel; // не очень хорошо помню правильно ли написал )))
//дальше идут свойства которые я присваиваю панели
end;
procedure Form1Create(...); // обычная процедура на создание формы
begin
Nachalo; // вызов процедуры
end;
end.
ну я думаю тут всё вроде понятно за исключением того что если код который я пишу в процедуре прописать сразу в создании формы то всё работает, а в процедуре не работает, я считаю что неработает из-за того что нет указателя где именно создавать обьект, мб кто подскажет что где нужно приписать, и если нужно то какие параметры нужно дописать в вызове процедуры.
2) Можно ли создать обработчик какого либо события для динамически созданного компанента? если да то мб кто ссылку даст или пример приведёт?
заранее благодарен!
вызов процедуры в этом случае можно написать так Nachalo (Self);
" писал(а):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
во первых попробуй создавать свои динамические объекты не oncreate а например onshow (ну или процедуру вызывать от туда)
а во вторых я тут для друга решал тупую задачку но решил вроде умно
там как раз динамические объекты точнее даже массивы объектов
З.Ы. суть задачи была сделать считалку (фиксированную) а я сделал программируемую - обрати внимание на файл assortiment.txt
а во вторых я тут для друга решал тупую задачку но решил вроде умно
там как раз динамические объекты точнее даже массивы объектов
З.Ы. суть задачи была сделать считалку (фиксированную) а я сделал программируемую - обрати внимание на файл assortiment.txt
- Вложения
-
- calculation.zip
- (10.55 КБ) 87 скачиваний