Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Form2 aus Form1 ein-/ausblenden (https://www.delphipraxis.net/118229-form2-aus-form1-ein-ausblenden.html)

Holger24 3. Aug 2008 12:50


Form2 aus Form1 ein-/ausblenden
 
Hallo zusammen,

ich habe ein kleines, für mich aber unlösbares Problem, welches ich auch durch fleißiges Suchen bislang nicht lösen konnte...

Ich habe ein Programm mit zwei Formularen (Form1/Form2) erstellt, beim Starten werden beide Formulare auch ordentlich angezeigt:

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

Jetzt möchte ich über eine Schaltfläche in Form1 das zweite Formular ein- bzw. ausblenden. Dazu habe ich in der entsprechenden ButtonClick-Prozedure den Befehl "form2.show;" (bzw. "hide") eingefügt. Dann will er mein Programm aber nicht mehr compilieren, es erscheint eine Fehlermeldung "zugriffsverletzung..."

Ich habe es auch mit "form2.visible:=true;" versucht, ohne Erfolg. Irgendwie kann ich nicht auf Form2 zugreifen, obwohl ich die entsprechende Unit mit uses eingebunden habe.

Kann mir da evtl. jemand einen Tipp geben?

Vielen Dank

mkinzler 3. Aug 2008 12:52

Re: Form2 aus Form1 ein-/ausblenden
 
Gibt es mehrere Variablen mit der Bezeichnung Form2?

Holger24 3. Aug 2008 12:55

Re: Form2 aus Form1 ein-/ausblenden
 
Zitat:

Zitat von mkinzler
Gibt es mehrere Variablen mit der Bezeichnung Form2?

Eigentlich nicht... Ich habe auch mal ein neues Formular "Form3" angelegt, wenn ich "form3.show" eingebe, kommt der Fehler auch.

mkinzler 3. Aug 2008 13:01

Re: Form2 aus Form1 ein-/ausblenden
 
Poste mal deines Code

Holger24 3. Aug 2008 13:06

Re: Form2 aus Form1 ein-/ausblenden
 
1.:
Delphi-Quellcode:
program LioRC_Client_Projekt;

uses
  Forms,
  LioRC_Client in 'LioRC_Client.pas' {Form1},
  Unit3 in 'Unit3.pas' {Form3},
  LioRC_Black in 'LioRC_Black.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.
2.:
Delphi-Quellcode:
unit LioRC_Client;

interface

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

const
  CPort = 4999;
  CIp = '127.0.0.1' ;

type TChatMessage = Record
        Nick:       string[255];
        Command:    string[255];
      end;


type
  TForm1 = class(TForm)
    MProtokoll: TMemo;
    BtStartStop: TButton;
    ClientSocket1: TClientSocket;
    Timer1: TTimer;

    procedure Timer(Sender: TObject);
    procedure Error(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure Disconnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure Connect(Sender: TObject; Socket: TCustomWinSocket);
    procedure initClientMaster(Sender: TObject);
    procedure BtStartStopClick(Sender: TObject);
  private
    { Private-Deklarationen }
    Verbunden: boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;



implementation

uses Unit3, LioRC_Black;



{$R *.dfm}

procedure TForm1.BtStartStopClick(Sender: TObject);
begin
  form3.show;
end;
...

(Wenn ich form3.show auskommentiere, läuft alles)


3.:
Delphi-Quellcode:
unit Unit3;

interface

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

type
  TForm3 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

end.
[edit=Jelly]Bitte Delphi Tags nächstes Mal selber setzen Mfg, Jelly[/edit]

Morphie 3. Aug 2008 13:43

Re: Form2 aus Form1 ein-/ausblenden
 
Delphi-Quellcode:
implementation

uses Unit3, LioRC_Black;
was passiert denn, wenn du das oben unter interface reinschreibst?

also

Delphi-Quellcode:
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp, ExtCtrls, Unit3, LioRC_Black;

rotfc 3. Aug 2008 14:17

Re: Form2 aus Form1 ein-/ausblenden
 
Zitat:

Zitat von Holger24
1.:

program LioRC_Client_Projekt;

uses
Forms,
LioRC_Client in 'LioRC_Client.pas' {Form1},
Unit3 in 'Unit3.pas' {Form3},
LioRC_Black in 'LioRC_Black.pas' {Form2};

{$R *.res}

...

uses
Forms

ist ein bisschen wenig für ein Programm, da würde ich mich auch beschweren :gruebel:

Holger24 3. Aug 2008 14:22

Re: Form2 aus Form1 ein-/ausblenden
 
Zitat:

Zitat von Morphie
Delphi-Quellcode:
implementation

uses Unit3, LioRC_Black;
was passiert denn, wenn du das oben unter interface reinschreibst?

Genau das Gleiche :cyclops:

Ich glaube aber ich habe meinen Fehler gefunden.... Ich hatte noch eine "onCreate"-Ereignis-Prozedur, die ebenfalls "BtStartStopClick" und damit "form2.show" aufuft.... Wenn ich im Hauptteil die CreateForm-Anweisungen vertausche funktionierts:

---
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm1, Form1);
---

Wahrscheinlich kam die show-Anweisung bevor das Formular überhaupt erzeugt war... Okay, meist sitzt der Fehler vor dem Computer...

Gibt es eine Alternative zu "onCreate", die nicht sofort bei der Erzeugung eines Formulars aufgerufen wird, sondern solange wartet bis alle Formulare generiert sind?

mkinzler 3. Aug 2008 14:25

Re: Form2 aus Form1 ein-/ausblenden
 
-Direkt im Projekt
-.onActivate
-Reihenfolge der Erzeugung ändern

Holger24 3. Aug 2008 14:26

Re: Form2 aus Form1 ein-/ausblenden
 
Super, vielen Dank für die Hilfe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 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