Einzelnen Beitrag anzeigen

Benutzerbild von Barret
Barret

Registriert seit: 27. Mai 2004
53 Beiträge
 
#1

Form nur einmal anzeigbar

  Alt 22. Jan 2005, 12:21
Hi!
Ich hab da ein Problem mit ner Form. undzwar kann ich diese nur einmal öffnen. Beim zweiten mal heut er mir immer einem Fehler raus: "ElnvalidException: Eigenschaft Viseble kann in OnShow oder OnHide nicht verändert werden." Ich seh den Fehler aber nich. Die Form wird normal in ShowModal aufgerufen. Ich setz zwar ein paar Viseble zustände aber wenn man die doppelt setzt sollte das eigentlich nichts machen. An sonsten für ich nur an einer oder zwei stellen FormShow(self) aus. Auch diese Sache sollte im normalfall aber keine Probleme darstellen.
ich setz den code mal rein (unwichtige proceduren sind nicht enthalten (berechnungen laden von datein ...)):
Code:
var
  FFVConfig: TFFVConfig;
  iOK_Abbrum_Zustand : Integer = 1; //Definieren der ausgelösten Aktion im Menue (OK & Abbrechen)

implementation

{$R *.dfm}

//verwendete Dateien & Biblioteken ---------------------------------------------
uses IniFiles, UFVMain, UFVConfigTableload;

//Schliesen der Form -----------------------------------------------------------
procedure TFFVConfig.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  TblConfig.Close; //schliesen der Datanbank
  DoubleBuffered := false;
end;

//Anzeigen der Form ------------------------------------------------------------
procedure TFFVConfig.FormShow(Sender: TObject);
begin
  TblConfig.Open; //Datenbank öffnen

  //darstellungs Angaben
  Height := 150;
  Width := 296;
  Position := poMainFormCenter;

  GroupBoxEinstellungen.Visible := false;
  GroupBoxPassWdaendern.Visible := false;
  GroupBoxPasswort.Visible := true;

  Tableshow;

  MenueOption.Visible := true;
  MenueNeu.Visible := false;
  ResetComp(FFVConfig);

  iOK_Abbrum_Zustand := 1; //Steuerung für das Startmenue
end;

//OK-Button in Passwortabfrage -------------------------------------------------
procedure TFFVConfig.BtnPassWdOKClick(Sender: TObject);
begin
  if (EdtPassWd.Text = TblConfig.FieldByName('PASSWD').AsString) then
    begin
      GroupBoxEinstellungen.Visible := true;
      GroupBoxPasswort.Visible := false;
      GroupBoxPassWdaendern.Visible := false;
      iOK_Abbrum_Zustand := 2;

      Height := 600;
      Width := 800;
      Left := FFVMain.left;
      Top := FFVMain.Top;
    end
    else
      begin
        EdtPassWd.Clear;
        EdtPassWd.SetFocus;
      end;
end;

//Passwort ändern --------------------------------------------------------------
procedure TFFVConfig.MenuePasswortClick(Sender: TObject);
begin
  Height := 190;
  Width := 296;

  GroupBoxEinstellungen.Visible := false;
  GroupBoxPasswort.Visible := false;
  GroupBoxPassWdaendern.Visible := true;

  MenueNeu.Visible := true;
  MenueOption.Visible := false;

  EdtPassWdaendern1.SetFocus;
  iOK_Abbrum_Zustand := 3;
end;

//Abbrechen-Button in Passwort ändern ------------------------------------------
procedure TFFVConfig.BtnPassWdaendernAbbrechenClick(Sender: TObject);
begin
  FormShow(Self);
  EdtPassWd.SetFocus;
end;

//OK-Button im Startmenue ------------------------------------------------------
procedure TFFVConfig.MenueOKClick(Sender: TObject);
begin
  if (iOK_Abbrum_Zustand = 1) then
    begin
      BtnPassWdOK.Click;
      Exit; //ohne := BtnOK.Click
    end;

  if (iOK_Abbrum_Zustand = 2) then BtnConfigOK.Click;
  if (iOK_Abbrum_Zustand = 3) then BtnPassWdaendernOK.Click;
end;

//Abbrechen-Button im Startmenue -----------------------------------------------
procedure TFFVConfig.MenueAbbrechenClick(Sender: TObject);
begin
  if (iOK_Abbrum_Zustand = 1) then BtnPassWdAbbrechen.Click;
  if (iOK_Abbrum_Zustand = 2) then BtnConfigAbbrechen.Click;
  if (iOK_Abbrum_Zustand = 3) then BtnPassWdaendernAbbrechen.Click;
end;

end.
das is jetz alles wo cih irgendwas grafisches ändere.
Wenn die Form geöffnet wird sie doppelt gebuffert (erkärung im onClose).
  Mit Zitat antworten Zitat