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 Frames zur Laufzeit verändern (https://www.delphipraxis.net/124929-frames-zur-laufzeit-veraendern.html)

Samufi 27. Nov 2008 13:02


Frames zur Laufzeit verändern
 
Hallo,
ich bin ein ziemlicher Anfänger und habe ein Problem, das wahrscheinlich so einfach ist, dass niemand darüber schreibt - ich habe jedenfalls nichrgends eine Antwort gefunden. Aber dann gibt es ja vielleicht auch eine einfache Lösung.
Ich möchte ein Programm programmieren, bei dem es am oberen Rand des Fensters parallel zu diesem eine Reihe Buttons gibt, mit denen man den Inhalt eines Frames an der rechten Seite verändern kann. (Ähnlich wie auf vielen Internetseiten, wo man an einer Linkleiste oben den Inhalt des Hauptframes verändern kan (s. z.B. ard.de)) Man klickt also beispielsweise oben auf den Button "setze Marke" und in dem Frame taucht dann das Editfeld "Name" und die Buttons "Setzen" und "Gehe zu" auf.
Ich habe wirklich schon viel gesucht, aber für die meisten Programmierenden ist es so klar, wie man Frames zur Laufzeit verändert, dass das nicht noch einmal erwähnt werden muss. Ich währe also wirklich dankbar für eine Antwort!
Vielen Dank im Vorraus,
treuergebenst,
Samufi

ToFaceTeKilla 27. Nov 2008 13:19

Re: Frames zur Laufzeit verändern
 
Willst du solche Karteireiter, wie in der Leiste oben bei ARD.de?
Dann würde ich dir einfach ein TPageControl empfehlen.
Ansonsten versteh ich nicht recht was du möchtest...

ChrisE 27. Nov 2008 13:37

Re: Frames zur Laufzeit verändern
 
Willkommen :dp:

Also ich weiß nicht wie tief Deine Kenntnisse sind in Delphi sind und was du wirklich vor hast :-)
Zitat:

Zitat von Samufi
Hallo,
ich bin ein ziemlicher Anfänger ...

Aber wenn ich dich richtig verstehe möchtest du ja ein ähnliches Verhalten erzeugen wie es auf Webseiten auch gegeben ist. Klick auf die Obere Navigation erzeugt den gewünschten Inhalt im Hauptfenster.

Möglichkeit A:
TPageControl. Hier kannst du mehrere Fensterinhalte vor dem Kompilieren erstellen. Drückt der Anwender auf ein Tab wir diese angezeigt (Im Objektinspektor -> ActivePage)

Gefällt Dir das nicht so wirklich, kommen wir mal zur Möglichkeit B - den Frames:
Frames kannst du auf vor dem Kompilieren komplett in Delphi erzeugen. Nur welches dargestellt wird musst du später tatsächlich per Code realisieren (Visible := TRUE oder FALSE)
Hast du dein Frame einmal fertig, ziehst du es nur auf dein Hauptformular. Im OnCreate des Formulars kannst du dann hin gehen und erstmal alle Frames mit Visible := FALSE unsichtbar machen. Klickt der Anwender auf einen Knopf mußt du das entsprechende Frame auf Visible := True setzten und alle anderen auf False. Setzt man zur Laufzeit dann noch die Eigenschaft Align des Frames auf alClient nimmt das die gesamte Größe des Formulars ein. Achtung: Deine "Navigationsbuttons" oben sollten auf einem Panel liegen welches Align mit alTop hat. Sonst sieht man ggf. deine Buttons nicht mehr.
Der Aufwand wird mit diesen Frames etwas größer im Code aber man kann etwas mehr am Design spielen und ist nicht auf die fertige Lösung von Tabs angewiesen.

Die Möglichkeit C - wahrscheinlich zu viel für den Anfang - ist es alles so zur Laufzeit zu erzeugen wie du es geschrieben hast. Das würde ich dir aber wirklich nicht raten.

Ich hoffe, das konnte dir einen kleinen Denkanstoß geben. Hier und da aber ruhig auch die OnlineHilfe verwenden. Sicher ist es am Anfang sehr viel um es zu verstehen - aber das wird schon :-)

Viel Erfolg, Chris

ToFaceTeKilla 27. Nov 2008 13:45

Re: Frames zur Laufzeit verändern
 
Achja, Willkommen in der DP :dp: (wo sind nur meine Manieren geblieben :oops: )

Falls du dich für Frames entscheidest, kann ich dir diese Seite nur wärmstens empfehlen.

Samufi 27. Nov 2008 13:52

Re: Frames zur Laufzeit verändern
 
Vielen, vielen Dank erstmal. Also, wie ich das jetzt verstanden habe, erstelle ich alle Frames, die ich haben will, stelle alle auf "visible: flase" und packe die übereinander, sodass sie alle an der selben Stelle sind. Die einzige Unklarheit ist jetzt nur, wie ich die Visiblität während der Laufzeit verändere...

Samufi 27. Nov 2008 13:57

Re: Frames zur Laufzeit verändern
 
Oh, ich habs selbst gefunden: "MeinFrame.visible:=true". Vielen Dank für eure Hilfe!!!
Samufi


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