Кнопка "ОК" (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

Другие вопросы по тегам