Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Owner draw eines Popupmenü bringt Probleme seit D6
Wilcox - Mi 20.11.02 14:53
Titel: Owner draw eines Popupmenü bringt Probleme seit D6
Hallo allesamt.
Ich habe ein kleines Problem mit einer Procedure, welche ein Popupmenü
andersfarbig gestalten soll (was sie ja auch tut) - nun das Problem, trat beim Wechsel zu D6 auf und ich weiss keine Lösung dafür.
Also lange Rede kurzer Sinn :
Die Procedure soll den obersten Menüpunkt ausmalen mit Grau und den Text darin weiss darstellen. Gut funktioniert auch soweit, nur leider ist der Checked-Haken bei den anderen darunterliegenden Menüpunkten nicht mehr sichtbar, sondern es wird nur ein kleiner hellgrauer Punkt dargestellt. Hat jemand eine Idee wie das zu fixen ist?
Also hier das Quellbeispiel:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TfrmDeveloperMain.DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: boolean); var LeftPos: integer; TopPos: integer; TextLength: integer; Text: string; begin Text := (Sender as TMenuItem).Caption; ACanvas.Brush.Color := clGray; ACanvas.FillRect(ARect); ACanvas.Font.Color := clWhite; ACanvas.Font.Style := [fsBold]; // Draw right in the middle of the menu TopPos := ARect.Top + (ARect.Bottom - ARect.Top - ACanvas.TextHeight(Text)) div 2; TextLength := Length(Text); if TextLength > (ARect.Right - ARect.Left) then LeftPos := ARect.Left + 3 else LeftPos := ARect.Left + (ARect.Right - ARect.Left - ACanvas.TextWidth(Text)) div 2; ACanvas.TextOut(LeftPos, TopPos, Text); end; |
Ich danke für die Mühen und Hilfen,
Grüße sendet
Wilcox
(20.11. 17:19 Tino) Code-Tags hinzugefügt.
FriFra - Mi 20.11.02 15:14
Hallo,
ich kann zwar dein Problem nicht lösen, aber das Problem tritt nicht erst seit Delpi6 auf.
Ich habe Deinen Code gerade in Delphi5 und Delphi7 getestet, jedesmal mit dem gleichen Fehler.
Wilcox - Mi 20.11.02 15:17
hi FriFra,
das ist ulkig, ich hatte es früher in delphi 5 laufen und dort lief es ohne probleme inkl. der anzeige der checked-häkchen :(
*grübel*
Wilcox - Mi 20.11.02 16:15
Titel: Des Rätsels Lösung
Naja ich hab eine Lösung gefunden, ist zwar keine elegante Lösung aber reicht für meine Applikation aus.
Man muss in dem Menü einfach nur Images verwenden und somit wird die Breite für alle Menü/Submenüeinträge neu berechnet und das Menü auch automatisch verbeitert.
:)
Ich danke für die Mühen.
Grüße sendet
Wilcox
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!