AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi PageControl -> Tabs selber beschriften -> TabVisible Problem
Thema durchsuchen
Ansicht
Themen-Optionen

PageControl -> Tabs selber beschriften -> TabVisible Problem

Ein Thema von HolgerCW · begonnen am 20. Mär 2008 · letzter Beitrag vom 12. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

PageControl -> Tabs selber beschriften -> TabVisible P

  Alt 20. Mär 2008, 12:30
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
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: PageControl -> Tabs selber beschriften -> TabVisib

  Alt 20. Mär 2008, 12:39
Hi Holger,

wie sieht Deine Beschriftungsprozedur aus?
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: PageControl -> Tabs selber beschriften -> TabVisib

  Alt 20. Mär 2008, 12:50
Das ist meine Procedure. Habe nur die relevanten Sachen stehen gelassen:

Delphi-Quellcode:
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;
Was muss ich da ergänzen wenn ich ein Tab Visible = TRUE setze ?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: PageControl -> Tabs selber beschriften -> TabVisib

  Alt 20. Mär 2008, 12:51
Zitat von Die Muhkuh:
Hi Holger,

wie sieht Deine Beschriftungsprozedur aus?
http://www.delphipraxis.net/internal...t.php?t=130914
Du musst abprüfen ob Tabs ausgeblendet sind und dann den Index berechnen
Markus Kinzler
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#5

Re: PageControl -> Tabs selber beschriften -> TabVisib

  Alt 20. Mär 2008, 13:02
Hast Du da ein Beispiel wie ich das am besten Abgfrage und den Index neu berechne ?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: PageControl -> Tabs selber beschriften -> TabVisib

  Alt 20. Mär 2008, 13:39
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.
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: PageControl -> Tabs selber beschriften -> TabVisib

  Alt 20. Mär 2008, 13:46
Hallo,

warum nimms du überhaupt den Index ?
Geht es nicht auch über die TabSheets direkt?


Heiko
Heiko
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#8

Re: PageControl -> Tabs selber beschriften -> TabVisib

  Alt 20. Mär 2008, 13:57
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 ?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: PageControl -> Tabs selber beschriften -> TabVisib

  Alt 20. Mär 2008, 14:02
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
Heiko
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#10

Re: PageControl -> Tabs selber beschriften -> TabVisib

  Alt 20. Mär 2008, 14:04
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 ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz