TPageControl

Rund um die LCL und andere Komponenten
Antworten
khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

TPageControl

Beitrag von khh »

hallo zusammen, ich wollte nach diversen Vorschlägen im Netz die Farbe der Componente TpageControl ändern.

Code: Alles auswählen

type 
  TForm1 = class(TForm) 
    PageControl1: TPageControl; 
    TabSheet1: TTabSheet; 
    TabSheet2: TTabSheet; 
    TabSheet3: TTabSheet; 
    procedure PageControl1DrawTab(Control: TCustomTabControl; 
      TabIndex: Integer; const Rect: TRect; Active: Boolean); 
    procedure FormCreate(Sender: TObject); 
  private 
    { Private-Deklarationen } 
  public 
    { Public-Deklarationen } 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; 
  TabIndex: Integer; const Rect: TRect; Active: Boolean); 
var 
  TabCaption : String; 
  TabRect    : TRect; 
begin 
  TabRect:=Rect; 
  InflateRect(TabRect,-4,-2); 
  TabCaption:=TPageControl(Control).Pages[TabIndex].Caption; 
  With Control.Canvas do 
    begin 
    Case TabIndex of 
      0 : Brush.Color:=clRed; 
      1 : Brush.Color:=clLime; 
      2 : Brush.Color:=clBlue; 
      else 
        Brush.Color:=clBtnFace; 
      end; 
    Brush.Style:=bsSolid; 
    FillRect(Rect); 
    Brush.Style:=bsClear; 
    DrawText(Handle,PChar(TabCaption),-1,TabRect,dt_singleline+dt_left+dt_vcenter); 
    end; 
end; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  PageControl1.OwnerDraw:=True; 
end; 
 
end.

Lieider funktioniert das nicht :-(
In meiner ComCtrls sind die
//property OwnerDraw;
und
// property OnDrawTab;

auskommentiert.

Lazarus-Version ist 0.9.27 beta Rev. 18444

gibts da in neueren Versionen ne Änderung, oder reicht es eine geänderte ComCtrls einzupflegen.

Oder gibts gar ne andere Möglichkeit die Farbe des TPageControl zu setzen?


Danke Gruss KH

Benutzeravatar
theo
Beiträge: 10891
Registriert: Mo 11. Sep 2006, 19:01

Re: TPageControl

Beitrag von theo »

khh hat geschrieben:gibts da in neueren Versionen ne Änderung, oder reicht es eine geänderte ComCtrls Hasswort entfernt.
Nö. Warum wollt ihr immer Farben ändern? Lasst doch die Themes das erledigen und wendet euch dem Wesentlichen zu.

S.a. http://www.lazarusforum.de/viewtopic.php?p=31307#p31307" onclick="window.open(this.href);return false;

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: TPageControl

Beitrag von khh »

theo hat geschrieben:
khh hat geschrieben:gibts da in neueren Versionen ne Änderung, oder reicht es eine geänderte ComCtrls Hasswort entfernt.
Nö. Warum wollt ihr immer Farben ändern? Lasst doch die Themes das erledigen und wendet euch dem Wesentlichen zu.

S.a. http://www.lazarusforum.de/viewtopic.php?p=31307#p31307" onclick="window.open(this.href);return false;

Hintergrund ist folgender:
ich möchte an exakt der gleichen Stelle auf dem Form, je nach Benutzerauswahl, unterschiedliche Tabcontrols anzeigen.
Damit ich die zur Entwicklungszeit plegen kann, hatte ich gedacht diese auf diverse "unsichtbare" Tabs zu legen und so zwischen den einzelnen umzuschalten.
Dazu müssten diese aber die Farbe des Form, also clBtnFace haben.
Hat du ne ander Idee sowas umzusetzten?
Bin für jede bessere Möglichkeit offen.

EDIT: hat sich erledigt, habs über Panels gelöst.


Gruss KH

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TPageControl

Beitrag von pluto »

Vorschlag:
Damit ich die zur Entwicklungszeit plegen kann, hatte ich gedacht diese auf diverse "unsichtbare" Tabs zu legen
Schau dir mal die Komponente NoteBook an. Die kann das.
Nö. Warum wollt ihr immer Farben ändern? Lasst doch die Themes das erledigen und wendet euch dem Wesentlichen zu.
Weil es Spaß macht und eine Möglichkeit ist. Währe doch Langweilig das nur über die Thmens zu machen. Damit kennt sich sowieso keiner in Lazarus aus.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10891
Registriert: Mo 11. Sep 2006, 19:01

Re: TPageControl

Beitrag von theo »

pluto hat geschrieben: Weil es Spaß macht und eine Möglichkeit ist. Währe doch Langweilig das nur über die Thmens zu machen. Damit kennt sich sowieso keiner in Lazarus aus.
Für dich selber kannst du natürlich machen was du willst, von mir aus kannst du dir auch Senf in die Augen schmieren.
Aber wenn du sowas auf die Menschheit loslässt, hört der Spaß auf. ;-)

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TPageControl

Beitrag von pluto »

Für dich selber kannst du natürlich machen was du willst, von mir aus kannst du dir auch Senf in die Augen schmieren.
Nun ja, leider bieten die Lazarus Komponenten sowas nicht an... bzw. nur unzureichend. gerade was den Senf angeht *G*....
MFG
Michael Springwald

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: TPageControl

Beitrag von Socke »

pluto hat geschrieben:
Für dich selber kannst du natürlich machen was du willst, von mir aus kannst du dir auch Senf in die Augen schmieren.
Nun ja, leider bieten die Lazarus Komponenten sowas nicht an... bzw. nur unzureichend. gerade was den Senf angeht *G*....
Wenn ich mich recht erinnere, ist die Hintergrundfarbe des TPageControls hardcoded; du müsstest also einfach ableiten und die entsprechende Methode überschreiben (welche das ist, kann ich dir gerade nicht sagen).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten