![]() |
PageControl -> Tabs selber beschriften -> TabVisible P
Hallo zusammen,
ich beschrifte meine Tabs mit dem Draw-Ereignis selber. Wenn ich z.B. 3 Tabs auf einem PageControl habe werden diese auch richtig beschriftet. Würde ich aber jetzt das mittlere Tab Visible = FALSE stellen, beschriftet er mir das dritte Tab mit der Beschriftung des zweiten. Wie kann ich das lösen ? Gruss Holger |
Re: PageControl -> Tabs selber beschriften -> TabVisib
Hi Holger,
wie sieht Deine Beschriftungsprozedur aus? |
Re: PageControl -> Tabs selber beschriften -> TabVisib
Das ist meine Procedure. Habe nur die relevanten Sachen stehen gelassen:
Delphi-Quellcode:
Was muss ich da ergänzen wenn ich ein Tab Visible = TRUE setze ?
procedure Berechtigung_Tab_zeichnen(PageControl: TPageControl; Bilder: Boolean;Control: TCustomTabControl; Der_TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin //bitte Tabindex in Deklaration mit ATabindex auswechseln, //sonst überschneidung mit Pagecontrol.tabindex. Deklaration in //Tform nicht vergessen //OwnerDraw des PageControls auf true setzen with Control as TPageControl do begin If Berechtigt = TRUE then begin //Wenn Berechtigt wird normal gezeichnet (Tahoma) Canvas.Brush.Style := bssolid; Canvas.Font.Color := clbtntext; Canvas.TextOut(rect.left+25,rect.top+7,Pages[Der_Tabindex].Caption); If Bilder = TRUE then Images.Draw(Canvas,rect.Left+7,rect.Top+2, Der_Tabindex); end else begin //Wenn nicht berechtigt wird enabled gezeichnet Canvas.Brush.Style := bssolid; Canvas.Font.Color := clBtnHighlight; Canvas.TextOut(rect.left+25,rect.top+7,Pages[Der_Tabindex].Caption); //text in anderer Farbe wieder drüberzeichnen (25 Pixel nach links oben versetzt) Canvas.Brush.Style := bsclear; Canvas.Font.Color := clBtnShadow; Canvas.TextOut(rect.left+26,rect.top+8,Pages[Der_Tabindex].Caption); If Bilder = TRUE then Images.Draw(Canvas,rect.Left+7,rect.Top+2, Der_Tabindex); end; end; end; |
Re: PageControl -> Tabs selber beschriften -> TabVisib
Zitat:
![]() Du musst abprüfen ob Tabs ausgeblendet sind und dann den Index berechnen |
Re: PageControl -> Tabs selber beschriften -> TabVisib
Hast Du da ein Beispiel wie ich das am besten Abgfrage und den Index neu berechne ?
|
Re: PageControl -> Tabs selber beschriften -> TabVisib
Du nimmst ja den Laufindex um die X-Position zu berechnen. ich würde eine 2. Variable (z.B.) I2 verwenden welche ich inkrementieren würde wenn der Ite Tab sichtbar ist und dann nur zeichnen.
|
Re: PageControl -> Tabs selber beschriften -> TabVisib
Hallo,
warum nimms du überhaupt den Index ? Geht es nicht auch über die TabSheets direkt? Heiko |
Re: PageControl -> Tabs selber beschriften -> TabVisib
Irgendwie ist da ein Brett vor dem Kopf.
Wie könnte ich das nun realisieren. Wenn z.B. folgende konstellation besteht: Tab1(FALSE), Tab2, Tab3, Tab4(FALSE), Tab5 Dann müsste I2 ja global sein, oder ? Könntest Du mir das mal ein kleinen Codeansatz schreiben. Ich komme da jetzt nciht hinter ? :? Vielleicht verstehe ich auch noch nciht das Draw Ereignis. wird das Ereignis für jedes Tab neu aufgerufen. Oder wird es einmal aufgerufen und läuft dann in einer Schleife oder ? |
Re: PageControl -> Tabs selber beschriften -> TabVisib
Hallo,
jedes Tabsheet in einem PageControl ist selbst eine Komponente mit einem Namen. Das ist wie ein Label auf einem Panel, beide sind getrennt ansprechbar. Heiko |
Re: PageControl -> Tabs selber beschriften -> TabVisib
aber ich nutze ja das Ereignis onDrawTab von dem PageControl -> kann ich dann in dem Ereignis einfach I:=I+1 rechnen und am Ende habe ich den Count der Tabs ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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