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 Einblenden von "Seiten" innerhalb eines Forms (https://www.delphipraxis.net/96905-einblenden-von-seiten-innerhalb-eines-forms.html)

guidok 1. Aug 2007 14:15


Einblenden von "Seiten" innerhalb eines Forms
 
Hallo,

ich möchte folgendes machen:

Auf einem Hauptformular mit diversen Steuerelementen sollen, abhängig von einer Benutzeranwahl, in einem festgelegtem Bereich innerhalb dieses Hauptformulars unterschiedliche "Seiten" mit weiteren Steuerelementen erscheinen. Im Prinzip also ein TTabControl. Leider kann ich bei dem den Rand nicht an meine Bedürfnisse anpassen und desweiteren hätte ich gerne ein sanftes Einblenden, wie es beim TForm mit Alphablending möglich wäre (da kann ich auch den Rahmen ausschalten).

Wie krieg ich das jetzt am beste hin?

Ich habe grade mal versucht das Hauptformular zum MDI-Fenster zu machen und das 2. zum MDI-Child, aber dann funktioniert das Einblenden und Ausblenden nicht mehr.

Guido

mkinzler 1. Aug 2007 14:17

Re: Einblenden von "Seiten" innerhalb eines Forms
 
-TPageControl (mit augeblendeten Tabs)
-Frames

guidok 1. Aug 2007 14:20

Re: Einblenden von "Seiten" innerhalb eines Forms
 
TPagecontrol fällt aus, weil ich da keinen Borderstyle einstellen kann und ich will keinen Rand haben.

Mit Frames habe ich noch nichts gemacht, werde ich mir mal anschauen. Wie könnte sich ein Fading realisieren lassen?

kalmi01 1. Aug 2007 14:26

Re: Einblenden von "Seiten" innerhalb eines Forms
 
Hi,

ein Form für jedes Formular mit fsStaOnTop.

Das aktive, sichtbare Form im Application.OnIdle in die von Dir gewünschte Stelle
hinein positionieren/resizen.

Klingt kompliziert, sind aber nur ein paar Zeilen Code
Delphi-Quellcode:
procedure TMain.FormCreate(Sender: TObject);
begin
  Application.OnIdle := ApplIdle;
end;

procedure TMain.ApplIdle(Sender : TObject; var Done : boolean);
var
  i : integer;
begin
  for i := 0 to Owner.ComponentCount - 1
  do begin
       if (Pos('Form_', Owner.Components[i].Name) > 0)
       then begin
              (Owner.Components[i] as TForm).Left  := Main.FormPanel.ClientOrigin.X;
              (Owner.Components[i] as TForm).Top   := Main.FormPanel.ClientOrigin.Y;
              (Owner.Components[i] as TForm).Width := Main.FormPanel.Width;
              (Owner.Components[i] as TForm).Height := Main.FormPanel.Height;
            end;
     end;
end;
Jedes Formular, dessen Name mit 'Form_' beginnt wird in die Panel-Fläche von "FormPanel"
eingepasst.

shmia 1. Aug 2007 14:27

Re: Einblenden von "Seiten" innerhalb eines Forms
 
Zitat:

Zitat von guidok
...und desweiteren hätte ich gerne ein sanftes Einblenden, wie es beim TForm mit Alphablending möglich wäre

Das kann aber bei Fernwartung über VNC oder Terminalserver ganz schön nerven, wenn Internetbandbreite mit solchen Gimmicks belastet wird.
=> ich würde zuerst mal um die Grundfunktionalität kümmern und erst ganz zum Schluss die Show einbauen.

Man kann übrigens auch Formulare in andere Formulare einklinken.
Man braucht dazu nur den Parent des "Unterformulars" auf ein Panel oder Groupbox des Hauptforms umbiegen.

guidok 1. Aug 2007 14:39

Re: Einblenden von "Seiten" innerhalb eines Forms
 
@shmia:

Ich glaube in diesem Fall muss ich mir um Fernwartung und dergleichen keine Sorgen machen.

Ich probiere gerade an Kalmis Lösung herum und versuch es dann mal mit einem Panel. Danke.

Vielleicht lasse ich es dann ja auch bleiben. Es sähe schon schick aus (zumindest in meinen Vorstellungen).

kalmi01 1. Aug 2007 15:03

Re: Einblenden von "Seiten" innerhalb eines Forms
 
Zitat:

Es sähe schon schick aus (zumindest in meinen Vorstellungen).
Ja, vor allem sieht geil aus, wenn Formulare einfach an der Stelle liegen bleiben, wo sie erzeugt wurden.
Sich also vom Hauptprog lösen.
Oder andere damit fest verbunden bleiben.

Naja und noch so einiges, was mit Frames und Co. nicht geht.


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