Delphi-PRAXiS
Seite 2 von 2     12   

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 Hat schon mal jemand TFormTabsBar verwendet? (https://www.delphipraxis.net/217329-hat-schon-mal-jemand-tformtabsbar-verwendet.html)

sh17 13. Jun 2025 12:18

AW: Hat schon mal jemand TFormTabsBar verwendet?
 
Gibt es einen ähnlichen Ansatz von TFormTabsBar auch für FMX?

himitsu 13. Jun 2025 12:24

AW: Hat schon mal jemand TFormTabsBar verwendet?
 
Nee, auch da es dort kein MDI gibt,

aber gibt es dort nicht auch eine normale TabsBar? (so wie in der VCL, nur die Tabs ohne Pages drunter)

Rollo62 13. Jun 2025 12:31

AW: Hat schon mal jemand TFormTabsBar verwendet?
 
Zitat:

Zitat von sh17 (Beitrag 1549403)
Gibt es einen ähnlichen Ansatz von TFormTabsBar auch für FMX?

Dafür nutze ich Frames und FMX.TabControl.TTabControl

Auf die Tabs lege ich TRectangle, weil die sich auch einfärben lassen, TLayout genügt aber auch,
ist meiner Meinung nach aber nicht viel schlanker als ein TRectangle.

Dann kann man die einzelnen Frames separat bearbeiten und per Runtime auf die Rectangles legen.

ungefähr so
Delphi-Quellcode:

procedure Frame_Embed_To(          const AFrame     : TFrame;
                                   const ACarrier   : TControl;
                                   const AAlign     : TAlignLayout = TAlignLayout.Client );
begin

    if not Assigned( ACarrier ) then
    begin
        Exit; //<== GUARD ==============================================
    end;

    if not Assigned( AFrame ) then
    begin
        Exit; //<== GUARD ==============================================
    end;

    ACarrier.BeginUpdate;

    try
        AFrame.Parent := nil;

        AFrame.Parent := ACarrier;
        AFrame.Align := AAlign;

    finally
        ACarrier.EndUpdate;
        ACarrier.Repaint;
    end;

end;


procedure Frame_Embed_ReleaseFrom( const AFrame  : TFrame;
                                   const ACarrier : TControl );
begin

    if Assigned( ACarrier ) and Assigned( AFrame) then
    begin

        ACarrier.BeginUpdate;

        try
            AFrame.Parent := nil;

        finally
            ACarrier.EndUpdate;
            ACarrier.Repaint;
        end;
    end;

end;
Man kann auch TForm auf diese Weise zuweisen, dann muss man nur die ganzen Komponenten rüberholen.
Hatte so funktioniert, ist aber schon lange nicht mehr benutzt, seitdem ich alles auf Frames umgestellt habe.

Delphi-Quellcode:

procedure Form_Embed_To(const AForm:TCustomForm; const AParent:TControl);
var
  chld: TFmxObject;
  I: Integer;
begin
  if Assigned( AParent ) then
  begin
      AParent.BeginUpdate;

      I := 0;
      while AForm.ChildrenCount > 0 do
      begin
        chld := AForm.Children[I];
        if chld.Name <> '' then
          AForm.Children[I].Parent := AParent
        else
          Inc(I);
      end;

      AParent.EndUpdate;
  end;
end;

procedure Form_Embed_ReleaseFrom(const AForm:TCustomForm; const AParent:TControl);
var
  I: Integer;
  chld: TFmxObject;
begin

  I := 0;
  while AParent.ChildrenCount > I do
  begin
    chld := AParent.Children[I];
    if chld.Name <> '' then
      chld.Parent := AForm
    else
      Inc(I);
  end;
end;

sh17 13. Jun 2025 12:36

AW: Hat schon mal jemand TFormTabsBar verwendet?
 
ok, danke, da probiere ich es damit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 Uhr.
Seite 2 von 2     12   

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