![]() |
Aktives TabSheet farblich hervorheben
Hallo,
ich würde gerne den Reiter in einem aktive TabSheet farblich hervorheben, damit es leichter für den Benutzer ist, zu Erkennen welcher TabSheet aktiv ist. Ich habe zur Zeit keinen Ansatzpunkt. Kann mir jemand weiterhelfen? Bis bald Chemiker |
Re: Aktives TabSheet farblich hervorheben
Moin Chemiker,
Du müsstest dazu nur die Eigenschaft OwnerDraw des PageControls auf true setzen, und kannst dann im Ereignis OnDrawTab das Tab nach Herzenslust gestalten. |
Re: Aktives TabSheet farblich hervorheben
Zitat:
das aktive Sheet ist doch im Vordergrund, deutlicher gehts nicht - und dazu gibt es noch die Eigenschaft Hilighted. Gruss Reinhard |
Re: Aktives TabSheet farblich hervorheben
Hallo,
Zitat:
Mit Highlighted wir der Tabsheet permanent farblich hervorgehoben und nicht nur der Aktive. Zitat:
Delphi-Quellcode:
verschwindet die Bezeichnung der Reiter und die Farbe wird erst beim 2 wechsel des Tabsheets angezeigt.
TabSheet1.Brush.color := clred;
Bis bald Chemiker |
Re: Aktives TabSheet farblich hervorheben
Moin Chemiker,
hier mal ein kleines Beispiel:
Delphi-Quellcode:
Das die Bezeichnung verschwindet ist nicht weiter verwunderlich, denn wenn das auf OwnerDraw gestellt ist, muss Du auch die Beschriftung selber zeichnen (TextOut).
procedure TfrmcsDLMain.pcMainDrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin if Active then begin Control.Canvas.Brush.Color := clInfoBk; Control.Canvas.Font.Style := Control.Canvas.Font.Style + [fsBold]; end else begin Control.Canvas.Brush.Color := clBtnFace; Control.Canvas.Font.Style := Control.Canvas.Font.Style - [fsBold]; end; Control.Canvas.FillRect(Rect); Control.Canvas.TextOut(Rect.Left+2,Rect.Top+2,(Control as TPageControl).Pages[TabIndex].Caption); end; |
Re: Aktives TabSheet farblich hervorheben
Hallo,
die beiden Anweisungen
Delphi-Quellcode:
habe ich gelöscht, weil sie dazu führten das über die Reiter hinaus geschrieben wurde.
Control.Canvas.Font.Style := Control.Canvas.Font.Style + [fsBold];
Darüberhinaus habe ich in der Anweisung
Delphi-Quellcode:
die 2 von Rect.Left und Rect.Top durch eine 5 ersetzt.
Control.Canvas.TextOut(Rect.Left+2,Rect.Top+2,(Control as TPageControl).Pages[TabIndex].Caption);
Das sieht schon ganz gut aus, da ist nur noch ein Problem: ich habe 2 PageControls, bei dem äußern PageControl ist ein Rahmen um die Beschriftung was nicht so gut aussieht, bei dem Inneren ist dieser nicht. Wie kann man vermeiden das der Rahmen um die Beschriftung der Reiter gezeichnet wird. Bis bald Chemiker |
Re: Aktives TabSheet farblich hervorheben
Hi,
Delphi-Quellcode:
kannst du mit Sicherheit lassen, wenn du die Breite mit einem bestimmten Faktor (kA, wie dieser lautet) veränderst.
Control.Canvas.Font.Style := Control.Canvas.Font.Style + [fsBold];
Unter dem letzten Problem mit den beiden PageControls kann ich mir leider nichts vorstellen. Hast du da etwa zwei PageControls praktisch ineinander oder was meinst du ? Kannst ja mal einen Screenshot hochladen. |
Re: Aktives TabSheet farblich hervorheben
Hallo,
Zitat:
Zitat:
Ein Screenschot kann ich leider nicht so einfach Hochladen, weil ich mit dem "Delphi-Rechner" nicht ins Internet gehe, auf dem "Delphi-Rechner" ist kein Virenscanner, Firewall usw.. Es wird auch nicht ständig Bill G. benachrichtigt welche Unterhose ich grade beim Programmieren anhabe. Ich muss auch nicht ständig irgendwelche LiveUpdates von Windows, Norton usw. durchführen. Ich kann den Rechner anstellen und mit einer vernünftigen Geschwindigkeit arbeiten. Entschuldigung das musste ich mal loswerden, weil der Bildschirm heute mal wieder ständig mit Sicherheitswarnungen der Firewall vollgeschrieben wird und Norten mich grade wieder zu einem LiveUpdate auffordert und ich das letzte Update erst gestern durchgeführt habe. Bis bald Chemiker |
Re: Aktives TabSheet farblich hervorheben
Delphi-Quellcode:
Damit wollte ich sagen, dass du die Breite der TabSheets mit einem Faktor multiplizierst, welcher immer passt, denn:
Delphi-Quellcode: markieren
Control.Canvas.Font.Style := Control.Canvas.Font.Style + [fsBold]; kannst du mit Sicherheit lassen, wenn du die Breite mit einem bestimmten Faktor (kA, wie dieser lautet) veränderst. du hast in einem TabSheet asd im Anderen asdasdasdasdasdasdasd . Der Zweite ist also von sich aus größer und müsste, genauso wie der erste TabSheet, mit einem Faktor multipliziert werden, so dass es perfekt passt. Allerdings ist das verändern der Breite eines Sheets nicht leicht, musst mal im Forum suchen. [OT] Stell doch Norton ruhig. [/OT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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