Autor Beitrag
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Mo 03.03.03 14:40 
Hallo!

Habe zwei Fragen zum PageControl:

1. Wie kann ich den Reiter der aktiven Registerkarte (anders-)farbig darstellen bzw. hervorheben ??

2. Wie kann ich es erreichen, dass bei mehrzeiligen Registern diese in der Reihenfolge bleiben, also nicht immer die aktive Reihe unten ist?? Ist dies möglich? (Ich möchte keine einzeiligen Reiter, da es zu viele sind)

3. ...oder gibt es eine andere (einfache) möglichkeit die Pages zu steuern und die Reiter ganz auszublenden ? (allerdings wollte ich nicht ein ganz neues Control selbst erstellen ... SelectPage( ... ) und derartige Befehle sind mir schon bekannt)

_________________
Gruß,
MB
mb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Di 04.03.03 13:32 
Hat wirklich keiner hier ne Idee, wie das geht...

z.B. die Reiter einer Page farbig darzustellen ??

_________________
Gruß,
MB
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Di 04.03.03 13:46 
mb hat folgendes geschrieben:
Hat wirklich keiner hier ne Idee, wie das geht...

z.B. die Reiter einer Page farbig darzustellen ??

Hallo

slber zeichnen bei ondrawtab des pagecontrols

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
//ownerdraw des pagecontrols auf true stellen
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
  with control as TCustomTabControl do
    begin
      //hintergrund
      canvas.brush.color:=clBtnFace;
      canvas.fillrect(rect);
      //Text ausgeben
      if tabindex=0 then canvas.font.color := clred
                    else canvas.font.color := clgreen;
      if active then canvas.font.style:=[fsbold]
                else canvas.font.style:=[];
      canvas.textout(rect.left+10,rect.top+3,PageControl1.Pages[tabindex].Caption);
    end;
end;


Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
mb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Di 04.03.03 13:56 
Danke für die zügige Antwort. Leider funktioniert das bei mir nicht. Ähnlich hatte ich es bereits versucht, aber auch mit Deinem Code-Snippet sehe ich nach neuer Compilierung keinen Unterschied - unter XP - egal, ob Luna aktiv oder inaktiv ist...

Weißt Du zufällig, ob es möglich ist, dass die Reihenfolge der Registerkarten (mehrzeilig) gleich bleibt, und dass nicht immer die aktive Reihe unten ist?

_________________
Gruß,
MB
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Di 04.03.03 14:00 
mb hat folgendes geschrieben:
Danke für die zügige Antwort. Leider funktioniert das bei mir nicht. Ähnlich hatte ich es bereits versucht, aber auch mit Deinem Code-Snippet sehe ich nach neuer Compilierung keinen Unterschied - unter XP - egal, ob Luna aktiv oder inaktiv ist...

Keldorn hat folgendes geschrieben:

//ownerdraw des pagecontrols auf true stellen

gelesen?
Win XP habe ich nicht unter W2K gehts
Zitat:

Weißt Du zufällig, ob es möglich ist, dass die Reihenfolge der Registerkarten (mehrzeilig) gleich bleibt, und dass nicht immer die aktive Reihe unten ist?

Nein, leider keine Ahnung

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
mb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Di 04.03.03 14:22 
Zitat:

//ownerdraw des pagecontrols auf true stellen


Ok, danke. Wie dumm von mir. So geht es. Leider ist dann natürlich das ganze XP-Design hinüber. Besser wäre es, wenn die Registerkarten weiterhin "schattiert" dargestellt würden, und nur die Schriftfarbe anders wäre ... aber das ist wahrscheinlich ja nicht soo einfach möglich.

Danke trotzdem!

_________________
Gruß,
MB
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Di 04.03.03 14:33 
XP hab ich nicht, wie gesagt.
dann nimm mal die Zeilen für den Hintergrund raus (canvas.fillrect) und zeichne nur den Text , das kann dann aber andere Probleme bringen.

mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
mb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Di 04.03.03 15:07 
Ja, das hatte ich spontan auch schon versucht. Bringt aber keinen Erfolg. Sobald "OwnerDraw" auf TRUE gesetzt ist, ist das XP-Design nicht mehr aktiv. Außerdem werden - solage eben OwnerDraw auf TRUE ist - auch im DesignModus nicht mehr die Titel der Registerkarten angezeigt...

Die Methode ist mir nun prinzipiell klar, jedoch in meinem aktuellen Fall ungeeignet, da ich das XP-Design haben will ;-)

_________________
Gruß,
MB
mb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Di 04.03.03 15:07 
oops... die ist irgenwie zweimal angekommen...

_________________
Gruß,
MB