Почему окно не отображается, несмотря на отсутствие ошибок или предупреждений - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь следующий код для графического интерфейса, чтобы показать 2 одинаковых окна.Я использую show, а не showmodal:

program RnTFormclass;
{$mode delphi}
uses
    //cthreads, // for linux only.
    Interfaces, Forms, StdCtrls;

type
    RnTForm = class(TForm)
    private
        wnd: TForm;
        btn: TButton;
    public
        constructor create;
        procedure showit; 
    end; 

constructor RnTForm.create;
    begin
        //Application.Initialize;  //removed.
        wnd := TForm.Create(Application);
        with wnd do begin
            Height  := 300;
            Width   := 400;
            Position:= poDesktopCenter;
            Caption := 'LAZARUS WND';
            end;
        btn := TButton.Create(wnd);
            with btn do begin
            SetBounds(0, 0, 100, 50);
            Caption := 'Click Me';
            Parent  := wnd;
            end;
    end;

procedure RnTForm.showit;
    begin
        wnd.Show;
    end;

var 
    myform1, myform2: RnTForm;

begin
    // create windows: 
    myform1 := RnTForm.Create;
    myform2 := RnTForm.Create;
    // show windows: 
    myform1.showit;
    myform2.showit;
end.

Я хочу, чтобы два идентичных окна отображались / открывались.Хотя программа работает без каких-либо ошибок или предупреждений, ни одно окно не отображается.Программа просто заканчивается.

Где проблема и как ее можно решить?Спасибо за вашу помощь.

Редактировать: Как указано в комментариях, Application.initialize вызывается дважды и не запускается.Я закомментировал Application.initialize, и код по-прежнему не открывает окна.(Он открывает окна одно за другим, если show заменяется на showModal).

Главный вопрос - как сохранить окно открытым после show?

1 Ответ

0 голосов
/ 26 июня 2019

Принимая предложения от комментариев, я получил его следующим основным методом:

begin
    Application.Initialize; 
    // create windows: 
    myform1 := RnTForm.Create;
    myform2 := RnTForm.Create;
    // show windows: 
    myform1.showit;
    myform2.showit;
    Application.run; 
end.

Теперь появляются оба окна, и я могу щелкнуть и поработать с любым из них.

Однако при закрытии обоих окон программа продолжает работать в фоновом режиме. Кнопка выхода с функцией щелчка должна быть добавлена.

...