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.