per buttonklick neues fenster öffnen
hi,hoffe ich bin hier richtig.
ich habe Lazarus delphi und wollte fragen wie man per Buttonklick ein neues Fenster öffnet. Also wenn man auf den Button drückt das sich dann ein zweites Fenster öffnet ohne dass das erste Fenster geschlossen wird. Mit Quelltext wäre schon. Bedanke mich schon im Vorraus für jede Antwort. |
AW: per buttonklick neues fenster öffnen
Ähm, ein Lazarus Delphi gibt's nicht. Lazarus verwendet FreePascal :wink:
Der Code ist aber großteils kompatibel...
Delphi-Quellcode:
procedure TForm1.OnButtonClick( Sender: TObject);
begin Form2 := TForm2.Create( Self ); try Form2.ShowModal; finally Form2.Free; end; end; |
AW: per buttonklick neues fenster öffnen
Bitte hierfür eine lokale Variable dafür verwenden und nicht die Globale.
Delphi-Quellcode:
oder Keine.
procedure TForm1.OnButtonClick( Sender: TObject);
var Form2: TForm2; begin Form2 := TForm2.Create(Self); try Form2.ShowModal; finally Form2.Free; end; end;
Delphi-Quellcode:
und wenn die Fenster paralell nutzbar sein sollen, dann
procedure TForm1.OnButtonClick( Sender: TObject);
begin with TForm2.Create(Self) do try ShowModal; finally Free; end; end;
Delphi-Quellcode:
MyForm2 := TForm2.Create(Self);
MyForm2.Show; und irgendwann dann ein MyForm2.Free; |
AW: per buttonklick neues fenster öffnen
Zitat:
|
AW: per buttonklick neues fenster öffnen
Seid Ihr überhaupt sicher, dass das so gemeint ist? Ich hätte jetzt eher auf
Delphi-Quellcode:
getippt.
procedure TForm1.ButtonWasWeissIchClick(Sender: TObject);
begin Form2.Show; end; |
AW: per buttonklick neues fenster öffnen
Danke für eure schnellen Antworten.
Aber leider funktioniert es bei mir nicht. Ich habe auf Form1 einen TButton raufgelegt dann habe ich auf den Button geklickt, bin dann auf Ereignisse und dann auf OnClick. Danach habe ich die drei Punkte ... angeklickt und dann im Quelltexteditor den Code eingefügt. Beim kompolieren kommen aber immer fehlermeldungen. Was mache ich falsch? |
AW: per buttonklick neues fenster öffnen
Also ohne Code und Beschreibung der Fehlermeldung wird uns wohl nur Raten übrig bleiben :glaskugel:
|
AW: per buttonklick neues fenster öffnen
Ist denn auch die Unit des aufzurufenden Formulars in der des aufrufenden eingebunden (uses-Klausel)?
|
AW: per buttonklick neues fenster öffnen
code:
Delphi-Quellcode:
procedure TForm1.OnButtonClick( Sender: TObject);
begin Form2 := TForm2.Create( Self ); try Form2.ShowModal; finally Form2.Free; end; end; Zitat:
Delphi-Quellcode:
procedure TForm1.OnButtonClick( Sender: TObject);
var Form2: TForm2; begin Form2 := TForm2.Create(Self); try Form2.ShowModal; finally Form2.Free; end; end; Zitat:
Delphi-Quellcode:
procedure TForm1.OnButtonClick( Sender: TObject);
begin with TForm2.Create(Self) do try ShowModal; finally Free; end; end; Zitat:
Delphi-Quellcode:
procedure TForm1.ButtonWasWeissIchClick(Sender: TObject);
begin Form2.Show; end; Zitat:
|
AW: per buttonklick neues fenster öffnen
Zitat:
|
AW: per buttonklick neues fenster öffnen
Heisst den die Formklasse des Rufers auch TForm1?
|
AW: per buttonklick neues fenster öffnen
Zitat:
|
AW: per buttonklick neues fenster öffnen
In welcher Zeile tritt der Fehler auf? Hast Du den Code einfach per C&P eingefügt oder per Doppelklick auf den Button das Codegerüst erzeugen lassen?
|
AW: per buttonklick neues fenster öffnen
Zeile 34,13
Zuerst habe ich per Doppelklick den Code erzeugen lassen:
Delphi-Quellcode:
Die Codes habe ich hierherauskopiert und dann zwischen begin und end; bei der leeren Zeile eingefügt
procedure TForm1.Button1Click(Sender: TObject);
begin end; |
AW: per buttonklick neues fenster öffnen
Poste mal die komplette Unit (Code)
|
AW: per buttonklick neues fenster öffnen
Hier der Code:
Delphi-Quellcode:
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin procedure TForm1.OnButtonClick( Sender: TObject); var Form2: TForm2; begin Form2 := TForm2.Create(Self); try Form2.ShowModal; finally Form2.Free; end; end; end; end. |
AW: per buttonklick neues fenster öffnen
Delphi-Quellcode:
Du hast zuviel kopiert und eingefügt.
procedure TForm1.Button1Click(Sender: TObject);
(*begin procedure TForm1.OnButtonClick( Sender: TObject); *) var Form2: TForm2; begin Form2 := TForm2.Create(Self); try Form2.ShowModal; finally Form2.Free; end; (*end;*) end; |
AW: per buttonklick neues fenster öffnen
Zitat:
aber "man" erstellt doch eh nicht alle Fenster sofort, sondern erst wenn sie gebraucht werden :stupid: |
AW: per buttonklick neues fenster öffnen
Also als Anfänger dürfte es am leichtesten sein, wenn man alle Fenster sofort erstellen lässt von der IDE. Hab eich früher auch immer so gemacht.
|
AW: per buttonklick neues fenster öffnen
Das sehe ich genauso.
|
AW: per buttonklick neues fenster öffnen
Zitat:
|
AW: per buttonklick neues fenster öffnen
Einfach neues Formular in der IDE erstellen. Es wird dann eine Instanz davon angelegt und automatisch erzeugt, welche man dann mit
Delphi-Quellcode:
anzeigen lassen kann.
<Formx>.Show;
Ggf. muss man noch die Unit in die Quelldatei einbinden. |
AW: per buttonklick neues fenster öffnen
Ich habe es versucht aber nicht hinbekommen.
Kannst du vielleicht das Projekt hier hochladen? Wäre nett |
AW: per buttonklick neues fenster öffnen
"Datei - Neu - Formular" im bestehenden Projekt aufrufen, damit wird das so angelegte Form (AFAIK auch unter Lazarus) automatisch in die Liste der automatisch zu erzeugenden Formulare aufgenommen. Du musst nun nur noch in der aufrufenden Unit die Unit dieses neuen Formulars in die uses-Klausel aufnehmen. Das sollte im implementation-Abschnitt genügen.
|
AW: per buttonklick neues fenster öffnen
Zitat:
|
AW: per buttonklick neues fenster öffnen
:cry:Mein Programm scheint ein Problem damit zu haben dass da TForm1, Form1 und/oder TForm2, Form2 steht. Denn dort treten die Fehler beim kompolieren auf.
|
AW: per buttonklick neues fenster öffnen
Zitat:
|
AW: per buttonklick neues fenster öffnen
Zudem weiss wohl keiner was kompolieren ist. :stupid:
|
AW: per buttonklick neues fenster öffnen
Unit1 Quelltext:
Delphi-Quellcode:
end.
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin var Form2: TForm2; begin Form2 := TForm2.Create(Self); try Form2.ShowModal; finally Form2.Free; end; Unit2 Quelltext:
Delphi-Quellcode:
unit Unit2;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs; type TForm2 = class(TForm) private { private declarations } public { public declarations } end; var Form2: TForm2; implementation {$R *.lfm} end. Bei Unit 1 tritt der Fehlerauf: unit1.pas(35,5) Fatal: Syntax error, ";" expected but "identifier FORM2" found
Delphi-Quellcode:
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin <Form2>.Show; end; end. Dort trittt dieser Feehler auf: unit1.pas(34,4) Fatal: Syntax error, ";" expected but "identifier FORM2" found |
AW: per buttonklick neues fenster öffnen
Delphi-Quellcode:
Grüße
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation uses Unit2; // <--- neu {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var Form2: TForm2; begin Form2 := TForm2.Create(Self); try Form2.ShowModal; finally Form2.Free; end; end; end. Klaus |
AW: per buttonklick neues fenster öffnen
Danke jetzt lässt es sich ohne Probleme kompilieren.:-D :thumb:
Das einzige Problem ist jetzt noch das wenn ich die Anwendung öffne und ich auf den Button klicke kein zweites Fenster geöffnet wird. |
AW: per buttonklick neues fenster öffnen
Delphi-Quellcode:
Eventuell solltest du dir mal ein Grundlagentutorial angucken oder ein Buch für Anfänger lesen. Zumindest den grundlegenden Aufbau einer Prozedur sollte man kennen und wissen was Programmblöcke sind.
procedure TForm1.Button1Click(Sender: TObject);
begin var Form2: TForm2; begin Form2 := TForm2.Create(Self); try Form2.ShowModal; finally Form2.Free; end; |
AW: per buttonklick neues fenster öffnen
Wenn ich ja nicht gefragt hätte, ob die Unit eingebunden ist :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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