Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TreeView als Menü-wie? (https://www.delphipraxis.net/30545-treeview-als-menue-wie.html)

MeaChrome 26. Sep 2004 13:19


TreeView als Menü-wie?
 
So Hallo erstmal!
Bin ein Delphi noob und hab gleich mal eine Frage an euch.

Ich will ein Treeview als Menü nutzen:

http://home.arcor.de/agentorange2k/menue.gif

Also wenn im Treeview was angklickt wird soll im 2. Bereich sich alles ändern.
Wie kann ich das am besten realisieren?
Es soll so wie bei mIRC in den Option seihen..

Danke schonmal im vorraus.

Dax 26. Sep 2004 13:27

Re: TreeView als Menü-wie?
 
Herlich willkommen in der DP! :party:

Mit den OnClick()-Events der einzelnen Items müsste es gehen.

[edit]Immer diese Rechtschriebfehler... :mrgreen:[/edit]

MeaChrome 26. Sep 2004 13:40

Re: TreeView als Menü-wie?
 
Ja danke aber was nehme ich, damit ich im 2. Bereich mehere verschiedene "Ebenen" haben kann die dann aufrufbar sind. Jeweils ne neue Form? Wäre umständlich geht es auch einfacher?

Dax 26. Sep 2004 13:41

Re: TreeView als Menü-wie?
 
Ich würde verschiedene Groupboxes nehmen und jeweils nur EINE Sichtbar machen.

Jelly 26. Sep 2004 13:50

Re: TreeView als Menü-wie?
 
Aus Erfahrung hab ich gelernt, daß das Übereinanderlegen von Groupboxen o.ä. während der Designtime zum Desaster führt, da die Formelemente sich gegenseitig überlagern. Seitdem bevorzuge ich für jeden Treevieweintrag ein eigenes Form, das ich dann einfach in einem dafür vorgesehenem Panel darstellen lasse. Die einzelnen Forms an sich sind dann sehr übersichtlich in der IDE zu handhaben... Hier noch kurz der Code zum Darstellen einer Form in einem Panel:

Delphi-Quellcode:
procedure TfrmMain.ChangeModule (ModuleNum : integer) ;
var
  NewDemoClass: TFormClass;
  NewDemo: TForm;

begin
  case ModuleNum of
           1: NewDemoClass := TForm1;
           2: NewDemoClass := TForm2;
           { usw. für alle anderen Forms }
  else
    NewDemoClass := nil;
  end;

  { panContainer = TPanel }
  if (panContainer.ControlCount = 0) or not (panContainer.Controls[0] is NewDemoClass) then
  begin
    if panContainer.ControlCount > 0 then
      panContainer.Controls[0].Free;

    if Assigned(NewDemoClass) then
    begin
      NewDemo := NewDemoClass.Create(Self);
      NewDemo.Hide;
      NewDemo.BorderStyle := bsNone;
      NewDemo.Parent := panContainer;
      NewDemo.Align := alClient;
      NewDemo.Show;
    end;
  end;
end ;

choose 26. Sep 2004 14:06

Re: TreeView als Menü-wie?
 
Hallo MeaChrome,

und herzlich willkommen bei der Delphi-PRAXiS!

Unter Developer Express findest Du folgenden Best-Practice Artikel:

Zitat:

Simple VCL Application Framework

In this paper we will discuss a better way of building Windows client applications using the Borland VCL Library. As a result, we will have a library and sample application that will allow us to build module and UI independent Windows applications more easily.
Die Darstellung beschreibt ein modulares GUI-Konzept, das auch ohne die speziellen Komponenten des Herstellers und insbesondere in Deinem Fall verwendet werden kann.

MeaChrome 26. Sep 2004 14:31

Re: TreeView als Menü-wie?
 
Danke.
Wie kann ich die einzelnen Treeview Nodes (glaub ich) bei OnClick ansprechen?

bigg 26. Sep 2004 14:31

Re: TreeView als Menü-wie?
 
Liste der Anhänge anzeigen (Anzahl: 1)
mahlzeit,

es ist recht simpel dies mit einem PageControl zu realisieren.
Hier eine Demo:

CenBells 26. Sep 2004 14:39

Re: TreeView als Menü-wie?
 
Zitat:

Zitat von choose
Hallo MeaChrome,

und herzlich willkommen bei der Delphi-PRAXiS!

Unter Developer Express findest Du folgenden Best-Practice Artikel:

Zitat:

Simple VCL Application Framework

In this paper we will discuss a better way of building Windows client applications using the Borland VCL Library. As a result, we will have a library and sample application that will allow us to build module and UI independent Windows applications more easily.
Die Darstellung beschreibt ein modulares GUI-Konzept, das auch ohne die speziellen Komponenten des Herstellers und insbesondere in Deinem Fall verwendet werden kann.

Hi,

sehr geiler artikel. Danke für den Link. Ich arbeite schon längere Zeit mit Frames, aber das mit dem registrieren der Frames ist neu für mich. Dann bekomme ich das gesamte konzept noch unabhängiger und kann den Aufbau der Applikation noch viel übersichtlicher gestalten.

Danke

Gruß
Ken

djmasi 29. Sep 2004 00:44

Re: TreeView als Menü-wie?
 
Zitat:

Zitat von Jelly
Die einzelnen Forms an sich sind dann sehr übersichtlich in der IDE zu handhaben...

Wie kann ich aber aus dem Hauptformular auf die einzelnen Forms zugreifen, sprich Eigenschaften ändern (zur Laufzeit)?

Und wie verhinderst du ein Flackern?

Jelly 29. Sep 2004 01:54

Re: TreeView als Menü-wie?
 
Zitat:

Zitat von djmasi
Wie kann ich aber aus dem Hauptformular auf die einzelnen Forms zugreifen, sprich Eigenschaften ändern (zur Laufzeit)?

indem du die Eigenschaften der Form im Public-Teil deklarierst.

Zitat:

Zitat von djmasi
Und wie verhinderst du ein Flackern?

Welches Flackern ?

Dani 29. Sep 2004 06:50

Re: TreeView als Menü-wie?
 
hi, alternativ könntest du auch die TJvPageList aus der JVCL probieren...

djmasi 29. Sep 2004 13:13

Re: TreeView als Menü-wie?
 
Zitat:

Zitat von Jelly
indem du die Eigenschaften der Form im Public-Teil deklarierst.

Das hatte ich mir auch schon gedacht, nur leider will es bei mir nicht :?

Meine Form2-Deklaration sieht so aus:
Delphi-Quellcode:
type
  TForm2 = class(TForm)
    Panel1: TPanel;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    FPCaption: String;
    procedure SetPCaption(ACaption: String);
  public
    { Public-Deklarationen }
    property PanelCaption: String read FPCaption write SetPCaption;
  end;
Und der Quelltext:
Delphi-Quellcode:
procedure TForm2.SetPCaption(ACaption: String);
begin
  Panel1.Caption := ACaption;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  Panel1.Caption := 'Test';
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  FPCaption := Panel1.Caption;
end;
Wenn ich den Button1 drücke, wird die Panel-Caption geändert. Wenn ich es aber von der Mainform aus machen will, passiert nix
Delphi-Quellcode:
procedure TForm1.DoSomething1Click(Sender: TObject);
begin
  Form2.PanelCaption := 'Aus Hauptform geändert';
end;
Hab es doch jetzt wie du gesagt hast, oder nicht? :wall:

Jelly 29. Sep 2004 13:38

Re: TreeView als Menü-wie?
 
Das sollte eigentlich so funktionieren, abgesehen daß wenn du lesend auf deine PanelCaption zugreifst, nicht der richtige Inhalt geliefert wird. Aber das sollte nichts mit deinem Problem zu tun haben.

Hast du schon probiert von deinem Mainform mittels
Delphi-Quellcode:
form2.panel1.caption := 'Titel' ;
zu die caption zu verändern.

djmasi 29. Sep 2004 13:57

Re: TreeView als Menü-wie?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das war das erste was ich probiert hatte. Der Code wird ausgeführt aber es passiert nix.

Hmm, ich häng mal das Testbeispiel von mir an. Vielleicht findest du ja den Fehler

Jelly 29. Sep 2004 14:10

Re: TreeView als Menü-wie?
 
Das Problem liegt darin, daß du mit Form2 nicht die Form ansprichst, die in deinem Panel angezeigt wird. ChangeModule erstellt eine neue Form und legt diese in NewDemo ab. Wenn du dir NewDemo in deiner Mainform als public deklarierst, anstatt nur lokal in der Methode Changemodule, solltest du wie folgt die Caption ändern können:
Delphi-Quellcode:
(Newdemo as TForm2).panel1.caption := 'Irgendwas' ;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 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