FormCreate Prozedur

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Albin
Beiträge: 20
Registriert: Fr 15. Jul 2016, 13:24

FormCreate Prozedur

Beitrag von Albin »

Moin,

ich hab folgendes Problem: ich benutze die FormCreate Prozedur in eine Applikation mit zwei Forms. In der ersten Form klappts super, aber in der zweiten Form wir der Code gar nicht ausgeführt, bzw. die Messagebox nicht angezeigt, hat jemand eine Idee warum? Ich bin irgendwie blind. Vielen Dank! Hier der Code, den ich in der zweiten Form (bzw. der zweiten Unit) verwende:

Code: Alles auswählen

 
//...
 
interface
uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
  TForm2 = class(TForm)
        procedure FormCreate(Sender: TObject);
 
//...
 
var Form2: TForm2;
 
implementation
    uses unit1;
    {$R *.lfm}
 
    { TForm2 }
    //On-Create-Event
        procedure TForm2.FormCreate(Sender: TObject);
        begin
        showmessage('Test');
        end;
 

shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: FormCreate Prozedur

Beitrag von shokwave »

Hallo,

also bei mir klapp es problemlos, unter Windows 10 32bit mit FPC 3.0.0 und Lazarus 1.6. Die Meldung wird bei Programmstart gezeigt. Wann bzw. wo wird die Form denn bei dir erstellt(created)? Bei mir in der Projektdatei (.lpr). Zum Vergleich:
Unit2

Code: Alles auswählen

unit Unit2;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
 
type
 
  { TForm2 }
 
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form2: TForm2;
 
implementation
 
{$R *.lfm}
 
{ TForm2 }
 
procedure TForm2.FormCreate(Sender: TObject);
begin
  showmessage('Hello!');
end;
 
end.
Projekt1.lpr

Code: Alles auswählen

program Project1;
 
{$mode objfpc}{$H+}
 
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms, unit1, unit2
  { you can add units after this };
 
{$R *.res}
 
begin
  RequireDerivedFormResource:=True;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.
 
mfg Ingo

Albin
Beiträge: 20
Registriert: Fr 15. Jul 2016, 13:24

Re: FormCreate Prozedur

Beitrag von Albin »

Also Unterschiede kann ich nicht erkennen, die Form wird bei mir ebenfalls in der Projektdatei erstellt (das ganze läuft unter Win7 64bit ebenfalls mit FPC 3.0.0 und Lazarus 1.6)... sehr seltsam, hat sonst noch jemand einen Idee, event. zumindest 'n Test um den Fehler einzugrenzen? Da mir nicht ganz klar ist, wann wo welche Prozeduren für die Form-Erzeugung und den Aufruf der FormCreate Prozedur verantwortlich sind fällt mir das Troubleshooting (Stichwort F7) entsprechend schwer.

Hab grad nochmal auf die Schnelle ein neues TestProg mit zwei Foms erstellt, jetzt holt er die FormCreate Prozedur gar nicht mehr, das ist ja zum Verzweifeln!!!!

wp_xyz
Beiträge: 5142
Registriert: Fr 8. Apr 2011, 09:01

Re: FormCreate Prozedur

Beitrag von wp_xyz »

Dann poste halt so ein Programm hier. Ohne compilierbaren Code kann dir niemand helfen, weil die Fehler meist wo anders stecken als in den Code-Schnipseln, die du zeigst. Zum Posten nur die pas, lfm, lpr und lpi-Dateien nehmen und zu einem zip zusammenpacken - dieses hier hochladen.

Albin
Beiträge: 20
Registriert: Fr 15. Jul 2016, 13:24

Re: FormCreate Prozedur

Beitrag von Albin »

Also erstmal hab ich mir darüber geholfen, dass ich die beim Laden notwendigen Aktionen in eine öffentlich Unit-Prozedur packe und in der .lpr Datei aufrufe, direkt nach Application.CreateForm(). Nicht schön aber "does the job". Das Programm hier posten wird umständlich, das muss ich erstmal kürzen, aber ich poste das dann, sobald ich Zeit dafür gefunden habe. Erstmal schon mal danke für die bisherigen Hinweise!

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: FormCreate Prozedur

Beitrag von m.fuchs »

Deine TForm2.FormCreate ist auch dem passenden Ereignis des Formulars zugewiesen?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten