AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisch erzeugtes Frame freigeben ...

Ein Thema von RudiV · begonnen am 2. Nov 2005 · letzter Beitrag vom 2. Nov 2005
Antwort Antwort
RudiV

Registriert seit: 2. Nov 2005
2 Beiträge
 
#1

Dynamisch erzeugtes Frame freigeben ...

  Alt 2. Nov 2005, 09:34
Hallo,

folgendes Szenario habe ich zu lösen:
in einem Form gibt es links einen Treeview mit vielen Einträgen.
Wenn ein Eintrag davon gewählt wird, soll rechts daneben ein zugeordetes Frame angezeigt werden.
In diesem Frame hat der Benutzer verschiedene Möglichkeiten wie z.B. Anmelden an Datenbank, Suche nach Kunden/Personen ...

Und nun zum eigentlichen Problem:
Wenn nun etwa das Frame für das Login im Main-form geladen ist, und der Benutzer gibt seine Anmeldedaten ein und klickt auf einen Butten "Anmelden" soll nach korrekter Eingabe der Anmeldedaten ein neues Frame (z.B. die Kundensuche) geladen und natürlich das Frame "Login" entfernt/gelöscht werden. Dabei tritt aber immer eine Zugriffsverletzung auf, weil ich im Event des Buttons "Anmelden" das selbe Frame natürlich nicht mit Free löschen kann.

Delphi-Quellcode:
procedure Tfr_login.Button1Click(Sender: TObject);
begin
 //prüfe Logindaten ....
 if login = true then begin
   //Lade neues Frame (Kundensuche)
   Free;
 end;
end;
Hat jemand dazu eine Idee, einen Vorschlag?
Liege ich mit einem Frame hier vielleicht falsch?

Vielen Dank für Eure Unterstützung und Grüße aus Wien
Rudi

Hinweis dazu: da es eine komplexe Anwendung ist/wird und viele verschiedene Eingabemasken bzw. Anzeigen gibt habe ich absichtlich keine PageControl-Komponente verwendet.

[edit=Admin]Code in Delphi-Tags gesetzt. Künftig bitte selber machen, Danke. Mfg, Daniel[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.643 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Dynamisch erzeugtes Frame freigeben ...

  Alt 2. Nov 2005, 09:58
1. Du legst Dir eine Variable

CurrentFrame : TTntFrame; an zentraler Stelle an (im Hauptformular oder einer gemeinsamen Unit)

2 .Du legst im Hauptformular ein Panel als Container für die Frames an.

3. Die TreeView-Click-Funktion:

Delphi-Quellcode:
procedure TDPR00001Form1.MenuTreeClick(Sender: TObject);
begin
  if CurrentFrame <> nil then begin
    CurrentFrame.Free;
    CurrentFrame := nil;
  end;

  if MenuTree.Selected.Text = _('Logintabelle') then begin TDPR001Frame1.ShowFrame(Panel1); exit; end;
  if MenuTree.Selected.Text = _('Sprache') then begin TDPR001Frame14.ShowFrame(Panel1); exit; end;
...
end;
4. Jedes Frame verfügt über eine statische ShowMethode:

Delphi-Quellcode:
  public
    class procedure ShowFrame(_Parent : TWinControl);
  end;

...

class procedure TDPR001Frame4.ShowFrame(_Parent: TWinControl);
begin
  DPR00001Form1.CurrentFrame := TDPR001Frame4.Create(_Parent);
  with TDPR001Frame4(DPR00001Form1.CurrentFrame) do
  begin
    Parent := _Parent;
    Align := alClient;
  end;
end;
5. Schliesen des Frames vom Frame aus:

Delphi-Quellcode:
procedure TDPR001Frame4.ButtonFrameCloseClick(Sender: TObject);
begin
  PostMessage(Application.MainForm.Handle,WM_USER+3333,0,0);
end;
6. Das Gegenstück im Hauptformular

Delphi-Quellcode:
    procedure OnCloseFrame(var _Msg : TMessage); message WM_USER+3333;

...

procedure TDPR00001Form1.OnCloseFrame(var _Msg: TMessage);
begin
  if CurrentFrame <> nil then
  begin
    CurrentFrame.Free;
    CurrentFrame := nil;
  end;
end;
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.643 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Dynamisch erzeugtes Frame freigeben ...

  Alt 2. Nov 2005, 10:00
Achso, nicht wundern. Ich nutze die Tnt-Controls

Musst alles wieder durch normale Controls ersetzen
Sven Harazim
--
  Mit Zitat antworten Zitat
RudiV

Registriert seit: 2. Nov 2005
2 Beiträge
 
#4

Re: Dynamisch erzeugtes Frame freigeben ...

  Alt 2. Nov 2005, 12:35
Wow, das ging aber flott
Danke schön, werd mich dann gleich darüber stürzen!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 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