[Delphi] При запуске программы открывается ненужная форма

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by HyperOne, 24 May 2013.

  1. HyperOne

    HyperOne New Member

    Joined:
    23 Nov 2010
    Messages:
    44
    Likes Received:
    4
    Reputations:
    3
    Доброго времени суток!
    Возникла такая проблема, то ли глюк какой-то, то ли я где-то напортачил. В общем при запуске программы, сначала почему-то запускается дочерняя форма (form4), а потом уже главная :confused:

    1. Проверил вызовы этой формы на главной. Нигде в FormCreate главной формы нет вызова дочерней. Есть только один вызов при клике на кнопку, в таком виде form4.showmodal;
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       form4.showmodal;
    end;
    

    2. В Project/Options/Forms Попробовал перенести форму из колонки Auto-Create Forms в колонку Available forms. Поправил вызов формы:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       Application.CreateForm(Tform4, form4);
       form4.showmodal;
       Form4.Free;
    end;
    Проблема вроде решилась - форма перестала запускаться при старте. Но теперь при клике на TForm1.Button1 происходит вообще непонятное:
    Почему-то сначала активируются компоненты на этой форме, а потом уже сама форма. т.е. если на этой дочерней форме есть функция:

    Code:
    procedure TForm4.CheckBox1Click(Sender: TObject);
    begin
    if CheckBox1.Checked then ShowMessage('ГЛЮК');
    end;
    То сначала появляется сообщение "ГЛЮК", а потом уже открывается сама форма......... Что делать? :confused: :confused: :confused:
     
    #1 HyperOne, 24 May 2013
    Last edited: 24 May 2013
  2. HyperOne

    HyperOne New Member

    Joined:
    23 Nov 2010
    Messages:
    44
    Likes Received:
    4
    Reputations:
    3
    немного прояснилась ситуация, у меня на Form4.Create идёт обращение к INI-файлу, который определяет будет ли отмечен CheckBox или нет:

    Code:
    procedure TForm4.FormCreate(Sender: TObject);
    begin 
    Ini:=TiniFile.Create('config.ini');
    CheckBox1.Checked:=ini.Readbool('PARAMS','cb',false);
    ini.Free;
    end;
    
    Но всё равно не совсем понятно - почему срабатывает процедура которая описана в Form4.CheckBox1 ??
    По идее ведь в FormCreate должна просто установиться отметка, а происходит выполнение....
     
    #2 HyperOne, 24 May 2013
    Last edited: 24 May 2013
Loading...