AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TabSet und tsOwnerDraw

Ein Thema von Popov · begonnen am 18. Apr 2014 · letzter Beitrag vom 18. Apr 2014
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

TabSet und tsOwnerDraw

  Alt 18. Apr 2014, 17:02
Ich hab ein Programm das enthält die Komponente TabSet, und die wirkt mit dem Windows 3.1 Look etwas deplatziert. Also wollte ich das Aussehen aufpeppen und die Tabs unter DrawTabs selbst zeichnen, nur klappt das irgendwie nicht. Inzwischen weiß ich nicht ob das überhaupt geht.

Zuletzt habe ich das Beispiel unten geschrieben, das beim letzten Tab die gesamte Canvas von TabSet löscht. Eigentlich sollte die ganze Fläche danach leer sein. Und siehe da, danach wird noch ein Tab gezeichnet.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  TabSet1.Style := tsOwnerDraw;
  for i := 0 to 5 do
    TabSet1.Tabs.Add(StringOfChar(Chr(i + 65 ), i + 1));
end;

procedure TForm1.TabSet1DrawTab(Sender: TObject; TabCanvas: TCanvas;
  R: TRect; Index: Integer; Selected: Boolean);
begin
  with TabSet1, TabCanvas do
    if Index = (FirstIndex + VisibleTabs - 1) then
      FillRect(ClipRect);
end;
Nun stellt sich mir die Frage ob man die Tabs neu zeichnen kann und ich nur etwas übersehe, oder ob das überhaupt nicht geht?
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#2

AW: TabSet und tsOwnerDraw

  Alt 18. Apr 2014, 23:42
Hallo,

Zitat:
[...] Also wollte ich das Aussehen aufpeppen und die Tabs unter DrawTabs selbst zeichnen, nur klappt das irgendwie nicht. [...]
Mittels DrawTab funktioniert es nicht. Der Eventhandler wird eigentlich nur zum Zeichnen der Beschriftung angestoßen, das Zeichnen (Shape, etc.) des Tabs macht die Komponente selbst.
Zitat:
[...] Eigentlich sollte die ganze Fläche danach leer sein. Und siehe da, danach wird noch ein Tab gezeichnet.
Dabei wird in der Paint-Methode das DrawTab irgendwo zwischendrin angestoßen und anschließend zeichnet die Paint-Methode fröhlich weiter - daher auch das Verhalten in Deinem Beispiel.
Zitat:
Nun stellt sich mir die Frage ob man die Tabs neu zeichnen kann und ich nur etwas übersehe, oder ob das überhaupt nicht geht?
Dazu musst Du schon die Paint-Methode (oder, wenn vorhanden DoDefaultPainting) überschreiben.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:52 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