Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Drawtab will nicht (https://www.delphipraxis.net/187290-drawtab-will-nicht.html)

Mattze 17. Nov 2015 07:52

Drawtab will nicht
 
Hallo,

also jetzt bin ich kurz vorm Verrücktwerden!

TPageControl, ownerdraw:=true, Drawtab definiert und DrawTab wird trotzdem nicht aufgerufen.

In einem anderen Programm (von mir) geht es problemlos.

Was könnte das sein?

(D7 pro unter Win7 pro 64)

Gruß
Mattze

TiGü 17. Nov 2015 09:20

AW: Drawtab will nicht
 
Eventhandler ist auch wirklich verlinkt im Objektinspektor?

Mattze 17. Nov 2015 09:38

AW: Drawtab will nicht
 
Natürlich!

Ich habe mal alles rausgeschmissen, was nicht nötig ist.
Es bleibt das Formular mit einem TPageControl und einem Label (caption gesetzt in drawtab zur Kontrolle).
Lediglich Pagecontrol.ownerdraw:= true gesetzt und OnDrawTab geschrieben.

Nix! Wird gar nicht aufgerufen!

Bei anderen Projekten (Programmen) von mir gab's da noch nie Probleme!
Auch jetzt nicht, wenn die neu compiliert werden!!!

Gruß
Mattze

baumina 17. Nov 2015 10:05

AW: Drawtab will nicht
 
In der dfm nachschauen, ob OnDrawTab zugewiesen und sonst alles normal und richtig ausschaut, vielleicht hats da ja irgendwelche komischen Sachen drin.

Mattze 17. Nov 2015 10:15

AW: Drawtab will nicht
 
Hallo baumina,

soweit ich weiß, ist alles richtig. Und trotzdem...
Hier der relevante Ausschnitt aus der dfm:
Delphi-Quellcode:
  object PageControl1: TPageControl
    Left = 8
    Top = 16
    Width = 873
    Height = 513
    ActivePage = TabSheet3
    OwnerDraw = True
    TabOrder = 0
    OnDrawTab = PageControl1DrawTab
    object TabSheet1: TTabSheet
      Caption = 'TabSheet1'
    end
    object TabSheet2: TTabSheet
      Caption = 'TabSheet2'
      ImageIndex = 1
    end
    object TabSheet3: TTabSheet
      Caption = 'TabSheet3'
      ImageIndex = 2
    end
  end
Gruß
Mattze

Sailor 17. Nov 2015 21:35

AW: Drawtab will nicht
 
Klappt doch. Setze mal einen Breakpoint in TCustomTabControl.DrawTab von ComCtrls in die Zeile "IF Assigned(FOnDrawTab)".

Delphi-Quellcode:
  PROCEDURE TShellForm.PageControlDrawTab(control:TCustomTabControl; tab_index:Integer; CONST rect:TRect; active:Boolean);
   BEGIN
    WITH PageControl
     DO Canvas.TextOut(rect.Left+5,6,Pages[tab_index].Caption)
   END; {OF PROCEDURE TShellForm.PageControlDrawTab}

Mattze 18. Nov 2015 06:48

AW: Drawtab will nicht
 
Hallo,

klappt doch... nicht!
Der Breakpoint wird bei mir nicht angesprungen.

Ich weiß nicht, warum es bisher ging und nun nicht mehr.
Wenn ich ein älteres Programm neu übersetze, funktioniert es ja auch weiterhin!
("älteres Programm" hört sich gut an. Gemeint ist z. Bsp. ein Programm von vor etwa einem Monat.)

Gruß
Mattze

Sailor 18. Nov 2015 07:48

AW: Drawtab will nicht
 
Hast Du compiliert mit Debug DCUs an?

Mattze 18. Nov 2015 11:41

AW: Drawtab will nicht
 
Hallo,

habe ich immer an, solange ich ein Programm entwickle.
Habe auch gerade nochmals nachgeschaut - sicher ist sicher.
Ist an.
Funktioniert trotzdem nicht.

Gruß
Mattze

Fritzew 18. Nov 2015 12:16

AW: Drawtab will nicht
 
Hast Du Themes aktiviert?

Sailor 18. Nov 2015 13:05

AW: Drawtab will nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wird TCustomTabControl.CNDrawItem in ComCtrls aufgerufen? Diese Routine ruft dann DrawTab auf, ohne Wenn und Aber. Was passiert denn, wenn OwnerDraw auf False steht?
Das Projekt im Anhang kompiliert/funktioniert unter Delphi2010/WinVista.

Mattze 18. Nov 2015 17:40

AW: Drawtab will nicht
 
Hallo,

wäre durchaus möglich. Dann aber, ohne das ich es weiß.
Ich nutze keine Themes!

Gruß
Mattze

taaktaak 18. Nov 2015 19:08

AW: Drawtab will nicht
 
Moin,
ich habe in meinen Unterlagen folgenden Hinweis gefunden:

Delphi7 only - WMDrawItem fails under WOW64
e.g. DrawTab() of TPageControl won't works correct
see http://qc.codegear.com/wc/qcmain.aspx?d=19859

>> schau 'mal hier
http://codeverge.com/embarcadero.del...-win64/1068914

.. ob es daran liegt??

Mattze 19. Nov 2015 07:46

AW: Drawtab will nicht
 
Hallo,

vielen Dank!!!
Genau das war es!

Wer kommt denn auch auf sowas? ;)

Mit der PatchUnit geht alles klar.

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 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