Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zur Laufzeit erstellte Form nur einmal öffnen (https://www.delphipraxis.net/7859-zur-laufzeit-erstellte-form-nur-einmal-oeffnen.html)

Matze 23. Aug 2003 10:36


Zur Laufzeit erstellte Form nur einmal öffnen
 
Hi!

Code:
procedure TForm1.BitBtn1Click(Sender: TObject);
var Fenster: TForm;
begin
  Fenster:=TForm.Create(self);
  Fenster.Caption:='Hallo';
  Fenster.Show;
end;
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.

So geht's nicht:

Code:
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);
Kann mir jemand helfen??

Gruß Matze

bixi400 23. Aug 2003 10:51

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.

Matze 23. Aug 2003 11:03

Re: Zur Laufzeit erstellte Form nur einmal öffnen
 
Danke für die schnelle Hilfe, das habe ich gesucht! :D

Gruß Matze

Matze 23. Aug 2003 11:10

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

bixi400 23. Aug 2003 11:12

Re: Zur Laufzeit erstellte Form nur einmal öffnen
 
Gute Frage!
Das Weiß ich auch nicht!

kiar 23. Aug 2003 12:04

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:

Matze 23. Aug 2003 13:20

Re: Zur Laufzeit erstellte Form nur einmal öffnen
 
Danke, ich probier's mal, obwohl ich nicht so recht weiß, wie das gehen soll. :wink:

sakura 23. Aug 2003 13:24

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:...

Matze 23. Aug 2003 13:29

Re: Zur Laufzeit erstellte Form nur einmal öffnen
 
Es wäre nett, wenn du mir beides posten könntest, aber Destroy geht auch.

Christian Seehase 23. Aug 2003 13:43

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 01:36 Uhr.
Seite 1 von 3  1 23      

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