AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme beim Zugreifen auf 2. Form

Ein Thema von Acuaplano · begonnen am 28. Jun 2013 · letzter Beitrag vom 28. Jun 2013
Antwort Antwort
Seite 2 von 3     12 3      
Acuaplano

Registriert seit: 8. Mai 2013
29 Beiträge
 
#11

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 15:20
Sorry Lazarus habe ich nicht. Die ProcessMessages-Aufrufe kommen mir allerdings recht überflüssig vor.
Die hab' ich auch nur zum Test reingepackt... ich werd' nachher einfach mal versuchen ein komplett neues Projekt zu erstellen und den Code dann dareinkopieren. Vielleicht ist es ja ein Bug von Lazarus aus.
  Mit Zitat antworten Zitat
Acuaplano

Registriert seit: 8. Mai 2013
29 Beiträge
 
#12

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 16:15
Ich hab's eben nochmal mit einem neuen Projekt probiert und entweder ist mein Lazarus verbuggt oder ich mache was falsch:
Neues Projekt erstellt - 2 Formulare - Zweites Formular in's erste eingebunden - Button und Labels darauf platziert und gleiches Problem: tut sich nix

Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, Unit2;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Label1.Caption := 'Form2';
  Label1.Caption := 'Form1';

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form2 := TForm2.Create(self);
  Form2.Show;
end;

end.
Delphi-Quellcode:
unit Unit2;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm2 }

  TForm2 = class(TForm)
    Label1: TLabel;
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form2: TForm2;

implementation


{$R *.lfm}

end.
Irgendwas muss ich doch falsch gemacht haben
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#13

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 16:41
Wo ist das Problem:
Delphi-Quellcode:
program Project2;

uses
  Forms,
  Unit1 in 'Unit1.pas{Form1},
  Unit2 in 'Unit2.pas{Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.

(* *************************************** *)
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  label1.Caption:='Labello1';
  form2.label1.Caption:='labello2';
  form2.show;
end;

end.
(* ********************************************************* *)
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Label1: TLabel;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

end.
funktioniert!
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Acuaplano

Registriert seit: 8. Mai 2013
29 Beiträge
 
#14

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 18:33
Jetzt bin ich komplett verwirrt o.O

Wär nett wenn jemand das hier ausprobieren könnte. Falls es an meiner Lazarus-Version liegt (die ich übrigens eben gepatcht hab), sollten sich beide Labels ändern...
Angehängte Dateien
Dateityp: zip Test 2 Formulare.zip (4,40 MB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
665 Beiträge
 
#15

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 20:16
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form2 := TForm2.Create(self);
Du hast aber schon dafür gesorgt, dass Form2 nicht bereits auch automatisch erstellt wird? (Ich habe keine Ahnung, ob Lazarus sich da standardmäßig so verählt wie Delphi, d.h. die Forms selber erstellt)
  Mit Zitat antworten Zitat
Acuaplano

Registriert seit: 8. Mai 2013
29 Beiträge
 
#16

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 20:33
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form2 := TForm2.Create(self);
Du hast aber schon dafür gesorgt, dass Form2 nicht bereits auch automatisch erstellt wird? (Ich habe keine Ahnung, ob Lazarus sich da standardmäßig so verählt wie Delphi, d.h. die Forms selber erstellt)
Also wenn ich die Zeile lösche gibt's ne Fehlermeldung. Von daher würde ich einfach mal sagen, dass Lazarus die Forms nicht selber erstellt.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#17

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 20:36
Welche Fehlermeldung und in welcher Zeile taucht die auf (gesamte Methode bis dahin posten)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
665 Beiträge
 
#18

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 20:42
Also wenn ich die Zeile lösche gibt's ne Fehlermeldung. Von daher würde ich einfach mal sagen, dass Lazarus die Forms nicht selber erstellt.
Die einzige logische Erklärung die mir für dein Problem einfällt: TForm1.create wird aufgerufen bevor Form2 automatisch erstellt wird. Dieses verhalten würde mich zwar arg wundern, aber das Ergebnis wäre genau das was du jetzt hat; denn Form2 würde danach auf eine zweite Instanz von TForm2 zeigen, die aber unsichtbar ist.

Wie sieht denn die Projektdatei aus?
  Mit Zitat antworten Zitat
Acuaplano

Registriert seit: 8. Mai 2013
29 Beiträge
 
#19

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 20:47
Welche Fehlermeldung und in welcher Zeile taucht die auf (gesamte Methode bis dahin posten)
"Projekt project1 hat Exception-Klasse >External:SIGSEGV< ausgelöst.
Bei Adresse 41B771"

Dann zeigt er mir ne Stelle in 'nem Assembler-Fenster an, wobei ich aber nicht sehr viel damit anfangen kann. Ich kann ja trotzdem einfach mal die Zeile zitieren:
Code:
(FORMS_TCUSTOMFORM_$__SHOW (19)<- Zeile im Assembler)
0041B771 8b09                     mov   (%ecx),%ecx
Sieht ja für mich einfach aus, dass er da auf ne Form zugreifen will, die nicht vorhanden ist... aber ich halt mich da lieber raus

Edit:
@Olli: Das ist ja mal eine interessante These!

Delphi-Quellcode:
program project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces,
  Forms,Unit1, Unit2;

{$R *.res}

begin
  Application.Initialize;
  RequireDerivedFormResource := True;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.
Jetzt merk ich's auch... Form2 sollte ja eigentlich schon erstellt sein. Aber müsste es dann nicht ein Namenskonflikt geben?

Edit2: JAAA!
Es muss wirklich so gewesen sein. Ich hab jetzt nen Button eingefügt, der die andere Form erstellt und es funktioniert endlich! Vielen Dank für die Hilfe!

Geändert von Acuaplano (28. Jun 2013 um 20:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#20

AW: Probleme beim Zugreifen auf 2. Form

  Alt 28. Jun 2013, 21:00
Jetzt merk ich's auch... Form2 sollte ja eigentlich schon erstellt sein. Aber müsste es dann nicht ein Namenskonflikt geben?
Wieso denn? In TForm1.FormCreate weist du der Variablen Form2 einer Instanz von TForm2 zu. Danach wird in der Projekt-Datei der gleichen Variablen eine weitere Instanz von TForm2 zugewiesen. Da gibt es keinen Namenskonflikt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz