AGB  ·  Datenschutz  ·  Impressum  







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

Hat schon mal jemand TFormTabsBar verwendet?

Ein Thema von Codehunter · begonnen am 11. Jun 2025 · letzter Beitrag vom 13. Jun 2025
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#1

AW: Hat schon mal jemand TFormTabsBar verwendet?

  Alt 11. Jun 2025, 20:19
Ja, in D10 (weiß nicht mehr seit wann), wurde OldCreateOrder nur ignoriert.
In Delphi 11 wird es nun direkt aus der DFM gelöscht, bzw. nicht neu gespeichert.

Was geil ist, wenn man z.B. noch gleichzeitig mit XEx und D11/D12 arbeiten möchte/muß,
weil dann XE denkt die DFM seit "uralt", da kein OldCreateOrder enthalten ist, und es somit dieses mit True wieder einfügt, was aber falsch ist.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.291 Beiträge
 
Delphi 12 Athens
 
#2

AW: Hat schon mal jemand TFormTabsBar verwendet?

  Alt 12. Jun 2025, 14:04
Ja, in D10 (weiß nicht mehr seit wann), wurde OldCreateOrder nur ignoriert.
In Delphi 11 wird es nun direkt aus der DFM gelöscht, bzw. nicht neu gespeichert.

Was geil ist, wenn man z.B. noch gleichzeitig mit XEx und D11/D12 arbeiten möchte/muß,
weil dann XE denkt die DFM seit "uralt", da kein OldCreateOrder enthalten ist, und es somit dieses mit True wieder einfügt, was aber falsch ist.
Das ist ein schönes Beispiel dafür, wie schwierig es sein kann, wenn man irgendwann mal einen Irrweg beschritten hat bei der Entwicklung und dann die Wahl hat ob man lieber auf ewig Altlasten mit sich rumschleppen will oder lieber ein Stück weit Rückwärtskompatibilität opfert. OldCreateOrder im DFM war so ein Irrweg.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#3

AW: Hat schon mal jemand TFormTabsBar verwendet?

  Alt 12. Jun 2025, 15:06
Das nun zu löschen ist per se kein schlechter Weg, weil man damit zukünftig auch das Fake-Property entfernen kann. (was dafür ist, damit jetzt DFMs geladen werden können, obwohl es das Property nicht mehr gibt, aber es noch in alten DFMs drin steht)

Uns hätte es aber keine Probleme bereitet, hätte man das Löschen deaktivieren können, damit es weiterhin mit alten Delphis keine Probleme gibt.

Während den Jahren der Umstellungsphase, mußten wir inzwischen doppelte Bugfixes einbauen,
einmal, damit das Alte im Neuen nicht knallt, aber auch das mit das Neue im Alten nicht knallt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.291 Beiträge
 
Delphi 12 Athens
 
#4

AW: Hat schon mal jemand TFormTabsBar verwendet?

  Alt 13. Jun 2025, 06:15
Uns hätte es aber keine Probleme bereitet, hätte man das Löschen deaktivieren können, damit es weiterhin mit alten Delphis keine Probleme gibt.
Das ist bei uns zu einem echten Problem geworden. In unserer über 20 Jahre gewachsenen Anwendung haben wir inzwischen Unmengen an Konfigurationsmöglichkeiten und ein erheblicher Teil hat mit Rückwärtskompatibilität zu tun.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.735 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Hat schon mal jemand TFormTabsBar verwendet?

  Alt 13. Jun 2025, 07:59
Meine "Lösung" für das Problem war, allen Code aus FormCreate Events in eine Init-Methode zu verschieben und diese am Ende des Constructors aufzurufen.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

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

AW: Hat schon mal jemand TFormTabsBar verwendet?

  Alt 13. Jun 2025, 12:18
Gibt es einen ähnlichen Ansatz von TFormTabsBar auch für FMX?
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#7

AW: Hat schon mal jemand TFormTabsBar verwendet?

  Alt 13. Jun 2025, 12:24
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)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.242 Beiträge
 
Delphi 12 Athens
 
#8

AW: Hat schon mal jemand TFormTabsBar verwendet?

  Alt 13. Jun 2025, 12:31
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;

Geändert von Rollo62 (13. Jun 2025 um 12:44 Uhr)
  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 15:56 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