Form2.show -> Fehlermeldung
Form2.show -> Fehlermeldung
Hallo!
Form2.show bringt die Fehlermeldung 'External: SIGSEGV', in der Datei '.include/customform.inc' in Zeile 2186
Die Form wird korrekt im Projektinspektor angezeigt, sollte also verfügbar sein.
Woran könnte das liegen?
Gruß und im Voraus vielen Dank
Frank
Form2.show bringt die Fehlermeldung 'External: SIGSEGV', in der Datei '.include/customform.inc' in Zeile 2186
Die Form wird korrekt im Projektinspektor angezeigt, sollte also verfügbar sein.
Woran könnte das liegen?
Gruß und im Voraus vielen Dank
Frank
Re: Form2.show -> Fehlermeldung
Da hast du wahrsch. was vermurkst. Normalerweise wird das Formular in der lpr Datei erzeugt.
-
- Beiträge: 726
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: Form2.show -> Fehlermeldung
Wo benutzt du Form2.Show?
Wenn du in Form1.OnCreate benutzt, ist die Fehlermeldung normal weil Form2 noch nicht erstellt ist. (Siehe in Projekt.lpr datei)
Wenn du Form2 in Hauptforms OnCreate-Ereignis benutzt musst du es selber erstellen.
Grundsätzlich ist es besser wenn mann nur Hauptformular automatisch erstellen läßt und die anderen bei Bedarf estellt.
Wenn du in Form1.OnCreate benutzt, ist die Fehlermeldung normal weil Form2 noch nicht erstellt ist. (Siehe in Projekt.lpr datei)
Wenn du Form2 in Hauptforms OnCreate-Ereignis benutzt musst du es selber erstellen.
Grundsätzlich ist es besser wenn mann nur Hauptformular automatisch erstellen läßt und die anderen bei Bedarf estellt.
Re: Form2.show -> Fehlermeldung
...benutze ein zweites Formular um Variablen für Form1 festzulegen und zu steuern. Form2 läuft später auf einem anderem Monitor aber dem selben Computer. Ich möchte es mit dem Objektinspektor erstellen, da es weniger aufwendig erscheint, als es durch Programmcode in Form1 entstehen zu lassen. In früheren Delphiversionen habe ich das immer so gehandelt. Hier funktioniert das irgendwie nicht. Bin ja schliesslich auch kein Profi. Bei Programmstart sollen sich also zwei unabhängig positionierbare Fenster öffnen.
Gruß
Frank
Gruß
Frank
Re: Form2.show -> Fehlermeldung
Dir Fromulare müsser creiert werden bevor du sie anzeigen kannst, automatisch oder per code. Frage also: wann und wer creiert Form2 und wann willst du sie anzeigen?
hde
hde
Re: Form2.show -> Fehlermeldung
...ich lese daraus, dass die Form2 auch wenn sie im Objektinspektor Kreiert erstellt wurde, trotzdem kreiert werden muss. OK, da muss ich also schauen. Das hatte ich iirgendwie von Delphi 5 anders in Erinnerung. Eigentlich soll Form1 initial gestartet werden. Über einen Button soll dann Form2 gestartet werden. Somit sollte wohl Form1 Form2 kreieren, oder?
Gruß
Frank
Gruß
Frank
-
- Beiträge: 340
- Registriert: Di 12. Sep 2006, 08:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Re: Form2.show -> Fehlermeldung
Wo bitte liest du das denn heraus? Wenn du sie mit dem Form-Designer erstellst, müsen sie nur angezeigt werden, wenn sie nicht das MainForm sind. Poste deinen Quelltext. Anders wird man dir kaum helfen können, wenn du derartige Dinge aus diesen Posts herausliest.Frank8001 hat geschrieben:...ich lese daraus, dass die Form2 auch wenn sie im Objektinspektor Kreiert erstellt wurde, trotzdem kreiert werden muss. OK, da muss ich also schauen. Das hatte ich iirgendwie von Delphi 5 anders in Erinnerung. Eigentlich soll Form1 initial gestartet werden. Über einen Button soll dann Form2 gestartet werden. Somit sollte wohl Form1 Form2 kreieren, oder?
Gruß
Frank
Grüße, Antrepolit
care only if your os is really burning
care only if your os is really burning
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: Form2.show -> Fehlermeldung
Unter Einstellungen für das Projekt gibt es wie auch unter Delphi eine Maske Formulare mit den automatisch erzeugten und den verfügbaren Formularen. Alle Formulare die hier nicht als automatisch erzeugte eingetragen sind müssen auch während der Laufzeit generiert werden.
Resultierend hieraus wird in der Projekt-Datei Application.CreateForm(TForm1, Form1); eingetragen.
Mit dem Designer erzeugst Du kein Objekt sondern eine Klasse!
Klassen-Definition:
Objekt-Variable:
Entweder fügst Du Dein Form2 zu den automatisch erzeugten hinzu, welches in der Projekt-Datei Application.CreateForm(TForm2, Form2); anlegt oder
Aufruf aus Unit1:
Resultierend hieraus wird in der Projekt-Datei Application.CreateForm(TForm1, Form1); eingetragen.
Mit dem Designer erzeugst Du kein Objekt sondern eine Klasse!
Klassen-Definition:
Code: Alles auswählen
type
TForm2 = class(TForm)
Button1: TButton;
private
{ private declarations }
public
{ public declarations }
end;
Code: Alles auswählen
var
Form2: TForm2;
Aufruf aus Unit1:
Code: Alles auswählen
uses unit2;
....
Form2 := TForm2.Create(Application);
Form2.Show;
// Form2.ShowModal;
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
Re: Form2.show -> Fehlermeldung
Bingo!
Danke ein weiteres Mal!
Gruß
Frank
Danke ein weiteres Mal!
Gruß
Frank
Re: Form2.show -> Fehlermeldung
Also irgendwie funktioniert das alles immernoch nicht. Beide Formulare stehen in dem Feld 'automatisch erzeugte Formulare'. Aber ich kann weder form2 öffnen und schließen, noch irgendwelche Dinge darauf steuern oder beeinflussen.
Ganz von vorne:
Ich habe 2 Blankoformulare in einem Projekt. Beide automatisch erstellt. Ich möchte mit dem einen Formular Dinge auf dem anderen beeinflussen: Images beschreiben, Knöpfe drücken, Variablen übertragen.
Und das funktioniert nicht. Heute morgen hat's irgendwie mal funktioniert, ich kann aber beim besten Willen nicht erkennen, warum.
Vielleicht nochmal für ganz Dumme wie mich.....
Gruß
Frank
Ganz von vorne:
Ich habe 2 Blankoformulare in einem Projekt. Beide automatisch erstellt. Ich möchte mit dem einen Formular Dinge auf dem anderen beeinflussen: Images beschreiben, Knöpfe drücken, Variablen übertragen.
Und das funktioniert nicht. Heute morgen hat's irgendwie mal funktioniert, ich kann aber beim besten Willen nicht erkennen, warum.
Vielleicht nochmal für ganz Dumme wie mich.....
Gruß
Frank
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Form2.show -> Fehlermeldung
Du darfst nicht im OnCreate()-Ereignis auf ein Formular zugreifen, das noch gar nicht erstellt wurde. In der IDE hast du die Reihenfolge, in der die Formulare erstellt werden.Frank8001 hat geschrieben:Ich habe 2 Blankoformulare in einem Projekt. Beide automatisch erstellt. Ich möchte mit dem einen Formular Dinge auf dem anderen beeinflussen: Images beschreiben, Knöpfe drücken, Variablen übertragen.
Bspw:
- Form1
- Form2
Du darfst aber in Form2.OnCreate() auf Form1 zugreifen, da dieses vorher erstellt wurde.
Lösung: Du wartest bis alle Formulare erstellt sind und greifst dann erst darauf zu.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Form2.show -> Fehlermeldung
hm....
Ich poste jetzt einfach mal, was in den beiden Units steht. Vieleicht bin ich ja ein wenig begriffsstutzig, aber...
So, jetzt will ich:
1. mit einem Button 'EKGForm' aufrufen
2. mit einem zweiten Button die Farbe von EKGForm festlegen (schwarz)
3. Variablen an EKGForm übergeben
Wie gesagt, in den Projekteigenschaften sind beide Form's unter den automatisch erstellten aufgeführt.
Danke für Eure Geduld!
Gruß
Frank
Ich poste jetzt einfach mal, was in den beiden Units steht. Vieleicht bin ich ja ein wenig begriffsstutzig, aber...
Code: Alles auswählen
Form1 (heisst SteuerForm):
unit Steuerpanel;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TSteuerForm }
TSteuerForm = class(TForm)
EKGPanoeffnen: TButton;
procedure EKGPanoeffnenClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
SteuerForm: TSteuerForm;
//EKGForm: TForm;
implementation
{$R *.lfm}
{ TSteuerForm }
procedure TSteuerForm.EKGPanoeffnenClick(Sender: TObject);
begin
end;
end.
Form2 (heisst EKGForm)
unit EKGPanel;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;
type
{ TEKGForm }
TEKGForm = class(TForm)
EKGImage: TImage;
procedure FormResize(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
EKGForm: TEKGForm;
implementation
{$R *.lfm}
{ TEKGForm }
procedure TEKGForm.FormResize(Sender: TObject);
begin
EKGImage.width := EKGForm.width - 2;
EKGImage.height := EKGForm.height - 2;
end;
end.
1. mit einem Button 'EKGForm' aufrufen
2. mit einem zweiten Button die Farbe von EKGForm festlegen (schwarz)
3. Variablen an EKGForm übergeben
Wie gesagt, in den Projekteigenschaften sind beide Form's unter den automatisch erstellten aufgeführt.
Danke für Eure Geduld!
Gruß
Frank
Zuletzt geändert von Lori am Di 14. Mai 2013, 21:56, insgesamt 1-mal geändert.
Grund: Der Highlighter ist nicht nur zum ignorieren da; Danke.
Grund: Der Highlighter ist nicht nur zum ignorieren da; Danke.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Form2.show -> Fehlermeldung
Bitte mit Syntax-Highlighter!Frank8001 hat geschrieben:Ich poste jetzt einfach mal, was in den beiden Units steht. Vieleicht bin ich ja ein wenig begriffsstutzig, aber...
In welcher Reihenfolge?Frank8001 hat geschrieben:Wie gesagt, in den Projekteigenschaften sind beide Form's unter den automatisch erstellten aufgeführt.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Form2.show -> Fehlermeldung
Zuerst SteuerForm, darunter EKGForm
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: Form2.show -> Fehlermeldung
Code: Alles auswählen
unit Steuerpanel;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TSteuerForm }
TSteuerForm = class(TForm)
EKGPanoeffnen: TButton;
procedure EKGPanoeffnenClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
SteuerForm: TSteuerForm;
//EKGForm: TForm;
implementation
{$R *.lfm}
uses EKGPanel; //<-- hierdurch wird EKGForm in dieser Unit bekannt
{ TSteuerForm }
procedure TSteuerForm.EKGPanoeffnenClick(Sender: TObject);
begin
EKGForm.Show; //<-- hierdurch wird EKGForm angezeigt
end;
end.
Code: Alles auswählen
unit EKGPanel;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, Steuerpanel;
type
{ TEKGForm }
TEKGForm = class(TForm)
EKGImage: TImage;
procedure FormResize(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
EKGForm: TEKGForm;
implementation
{$R *.lfm}
{ TEKGForm }
procedure TEKGForm.FormResize(Sender: TObject);
begin
EKGImage.width := EKGForm.width - 2;
EKGImage.height := EKGForm.height - 2;
end;
end.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me