TPageControl Hervorheben des gewählten Tabs?

Rund um die LCL und andere Komponenten
Antworten
MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

TPageControl Hervorheben des gewählten Tabs?

Beitrag von MmVisual »

Hallo,

Gibt es eine einfache Möglichkeit dass man den Tab Reiter, der gerade angewählt wurde vervorhebt?
Mir würde es reichen wenn man einfach z.B. die Schrift auf "Fett + Unterstichen" ändern könnte.

Ich habe mal das versucht:

Code: Alles auswählen

procedure TfrmMain.pgMainChange(Sender: TObject);
var
  i: Integer;
begin
  For i := 0 To pgMain.PageCount - 1 Do
  Begin
    If pgMain.ActivePageIndex = i Then
      pgMain.Pages[i].Font.Style := pgMain.Pages[i].Font.Style + [fsBold, fsUnderline]
    Else pgMain.Pages[i].Font.Style := pgMain.Pages[i].Font.Style - [fsBold, fsUnderline];
  End; 
Damit wird nur der Inhalt vom Reiter, also alle Steuerelement geändert und nicht die Caption vom Tab.

Ich habe diese Möglichkeit gefunden:
viewtopic.php?p=121876#p121876
Doch das ist Murks. Es mag ja funktionieren wenn man 1 Projekt hat mit einem einzigen Formular, doch sobald man mehrere Formulare hat und den Reiter aus dem aufrufenden setzen möchte dann kennt der diese speziell erzeugte Komponente nicht, weil jedes Formular dann seine eigene Spezial Instanz von TPageControl hat.

Ich verwende Lazarus V3.2, gibt es in der Zwischenzeit eine Erweiterung?
Die Windows Theme werden immer schlechter so dass man zum selber zeichnen immer mehr gezwungen wird.

Vielen Dank für die Hilfe.

VG Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de

wp_xyz
Beiträge: 5188
Registriert: Fr 8. Apr 2011, 09:01

Re: TPageControl Hervorheben des gewählten Tabs?

Beitrag von wp_xyz »

MmVisual hat geschrieben: Mo 22. Apr 2024, 10:43 Ich habe diese Möglichkeit gefunden:
viewtopic.php?p=121876#p121876
Doch das ist Murks. Es mag ja funktionieren wenn man 1 Projekt hat mit einem einzigen Formular, doch sobald man mehrere Formulare hat und den Reiter aus dem aufrufenden setzen möchte dann kennt der diese speziell erzeugte Komponente nicht, weil jedes Formular dann seine eigene Spezial Instanz von TPageControl hat.
Naja, der Preis für die Bequemlichkeit, keine eigene Komponente installieren zu müssen. Trotzdem geht der Trick etwas allgemeiner: Packe den Code, der TPageControl erweitert, in eine eigene Unit und setze diese in der Uses-Zeile jedes Formulars, das eine PageControl verwendet, ganz ans Ende. Da bei gleichen Namen nur die letzte Unit "zählt" wird, bei der Erzeugung einer neuen Intanz die dortige Implementierung von TPageControl verwendet.

Weil das aber nur ohne Themes und nur für Windows funktioniert, ist die Verwendbarkeit engeschränkt. Schau dich mal im Netz nach alternativen PageControls um, spontan fällt mir ATTabs (oder ähnlich) ein. Oder warte auf WIndows 12, da wird alles wieder anders (oder schlechter?)

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: TPageControl Hervorheben des gewählten Tabs?

Beitrag von MmVisual »

Vielen Dank für den Tipp!
Jedenfalls bin ich mir nun sicher dass dass ich so weit nichts übersehen habe.

Ich glaube mal nicht dass es mit Win12 in eine andere Richtung geht als wie bei Win10/11.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten