Autor Beitrag
Wilcox
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 20.11.02 14:53 
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:
ausblenden 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.

_________________
Zu fragen bin ich da, nicht zu antworten!
FriFra
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 557

Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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*

_________________
Zu fragen bin ich da, nicht zu antworten!
Wilcox Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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

_________________
Zu fragen bin ich da, nicht zu antworten!