Кнопка "ОК" (TButton) не отображается на Tform (Pascal)
У меня есть форма (Tform), которая отлично работает.
Я добавил другую форму, которая показывает объекты TEdit и TLabel, но не объект TButton не будет отображаться в форме. Код ниже.
procedure LoadQtyForm;
begin
try
frmChkQty := TForm.Create(nil);
frmChkQty.Width := 400;
frmChkQty.Height := 200;
frmChkQty.Caption := 'Check, Confirm, Change Quantity';
frmChkQty.Position := poScreenCenter;
frmChkQty.BorderStyle := bsSingle;
frmChkQty.Name := 'SecondaryForm';
{ Panel within Form }
frmChkQtyTopPnl := TPanel.Create(frmChkQty);
frmChkQtyTopPnl.Parent := frmChkQty;
frmChkQtyTopPnl.Align := alclient;
{ OK button }
frmChkQtybtnOK := TButton.Create(frmChkQtyTopPnl);
//frmChkQtybtnOK := TButton.Create(Self);
frmChkQtybtnOK.Parent := frmChkQtyTopPnl;
frmChkQtybtnOK.left := 50; //300
frmChkQtybtnOK.Top := 50; //170
frmChkQtybtnOK.Width := 90;
frmChkQtybtnOK.Height := 20;
frmChkQtybtnOK.Caption := '&OK';
frmChkQtybtnOK.OnClick := 'ChkQtyOKClick';
//frmChkQtybtnOK.taborder := 98;
frmChkQtybtnOK.anchors := akright;
//frmChkQtybtnOK.anchors := akbottom;
frmChkQtylblfield := TLabel.Create(frmChkQtyTopPnl);
frmChkQtylblfield.parent := frmChkQtyTopPnl;
frmChkQtylblfield.left := 100;
frmChkQtylblfield.top := 40;
frmChkQtylblfield.font.size := 12;
frmChkQtylblfield.caption := 'Current Laser Cut Qty is ';
{ To get Qty that was laser cut }
frmChkQtyedtfield := TEdit.Create(frmChkQtyTopPnl);
frmChkQtyedtfield.parent := frmChkQtyTopPnl;
frmChkQtyedtfield.left := 275;
frmChkQtyedtfield.top := 80;
frmChkQtyedtfield.Width := 50;
frmChkQtyedtfield.font.size := 12;
frmChkQtyedtfield.Text := '1';
frmChkQtylblfield2 := TLabel.Create(frmChkQtyTopPnl);
frmChkQtylblfield2.parent := frmChkQtyTopPnl;
frmChkQtylblfield2.left := 100;
frmChkQtylblfield2.top := 80;
frmChkQtylblfield2.font.size := 12;
frmChkQtylblfield2.caption := 'This Laser Cut Qty is:';
{
frmChkQtyedtfield2 := TEdit.Create(frmChkQtyTopPnl);
frmChkQtyedtfield2.parent := frmChkQtyTopPnl;
frmChkQtyedtfield2.left := 285;
frmChkQtyedtfield2.top := 40;
frmChkQtyedtfield2.Width := 50;
frmChkQtyedtfield2.Height := 40;
frmChkQtyedtfield2.font.size := 12;
frmChkQtyedtfield2.Text := '1';
}
frmChkQty.showmodal;
finally
frmChkQty.Free
end;
end;
Следующие переменные были объявлены глобально:
//Create Variables for Second form to get/check/confirm quantities
frmChkQty: Tform;
frmChkQtyTopPnl: TPanel;
frmChkQtybtnOK: Tbutton;
frmChkQtylblfield: TLabel;
frmChkQtylblfield2: TLabel;
frmChkQtyedtfield: TEdit;
frmChkQtyedtfield2: TEdit;
Может кто-нибудь сказать мне, почему кнопка не появляется?
Это часть скрипта, написанного в программе Ostendo, которая использует Pascal.
Когда кнопка нажата, она запускает эту процедуру, которая предназначена только для тестирования. Я создам дополнительный код, когда смогу получить кнопку "ОК" для отображения в форме.
procedure ChkQtyOKClick;
begin
frmChkQty.close;
end;
Благодарю.
1 ответ
Решение
В Delphi кнопка становится видимой при удалении
frmChkQtybtnOK.anchors := [akright];
Кнопка действительно была видна, но ее координаты вышли за пределы формы из-за пересчета в процессе отображения формы
PS Move try
после TForm.Create