![]() |
Zur Laufzeit erstellte Form nur einmal öffnen
Hi!
Code:
Jetzt ist es so, dass wenn ich auf den BitBtn klicke jedesmal ein neues Fenster geöffnet wird. Ich möchte es allerdings nur einmal öffnen, auch, wenn ich öffters auf den BitBtn klicke.
procedure TForm1.BitBtn1Click(Sender: TObject);
var Fenster: TForm; begin Fenster:=TForm.Create(self); Fenster.Caption:='Hallo'; Fenster.Show; end; So geht's nicht:
Code:
Kann mir jemand helfen??
var
mHandle: THandle; DatName:String; initialization DatName:=ExtractFileName(Fenster.Caption); DatName:=Copy(DatName,1,Length(datName)-4); mHandle := CreateMutex(Nil, True,PChar(DatName)); if GetLastError = ERROR_ALREADY_EXISTS then begin ShowMessage('Programm bereits gestartet'); Halt; end; finalization if mHandle <> 0 then CloseHandle(mHandle); Gruß Matze |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
So? :
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; WinOpen:Boolean; implementation {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); var Fenster: TForm; begin if WinOpen=False then begin Fenster:=TForm.Create(self); Fenster.Caption:='Hallo'; Fenster.Show; WinOpen:=True; end else begin ShowMessage('Programm bereits gestartet'); end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin WinOpen:=False; end; end. |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Danke für die schnelle Hilfe, das habe ich gesucht! :D
Gruß Matze |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Jetz bräuchte ich nur noch eins:
Wenn ich das zur Laufzeit erstellte Fenster wieder schließe, dann soll WinOpen wieder auf false gesetzt werden, wie mache ich das? Da gibt es ja kein OnClose. Gruß Matze |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Gute Frage!
Das Weiß ich auch nicht! |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
hi matze, du erstellst eine instanz von tform, da sollten zur laufzeit auch alle ereignisse drin sein oder habe ich schon wieder zu viel getrunken :dance:
|
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Danke, ich probier's mal, obwohl ich nicht so recht weiß, wie das gehen soll. :wink:
|
Re: Zur Laufzeit erstellte Form nur einmal öffnen
@Matze, ich poste Dir gleich was. Vorher will ich aber wissen, wenn das Form ausgeblendet wird, soll es zerstört werden (eingegebene Daten gehen verloren) oder soll es nur versteckt werden, so daß beim nächsten Öffnen die alten Daten wieder da sind?
...:cat:... |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Es wäre nett, wenn du mir beides posten könntest, aber Destroy geht auch.
|
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Moin Matze,
warum wird der Button nicht einfach auf Disabled gesetzt? Ich finde das sauberer, als einen Button aktiv zu lassen, der nicht gedrückt werden darf. Soll das Fenster nur geschlosssen werden, könnest Du im OnClose Event den Button wieder auf Enabled setzen, soll es zerstört werden, dann im OnDestroy. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz