Autor Beitrag
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 09.11.04 11:44 
Guten Tag zusammen.
Ich hab ein kleines Problem mit einem Ownerdrawn PopupMenu.
Ich habe ein PopupMenu mit 5 Items. Die mittleren 3 Items haben jeweils noch ein Untermenü mit mehreren Items. Jedes Menüitem hat in seiner OnDrawItem-Prozedur folgenden Code:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
 mWnd := WindowFromDC(ACanvas.Handle);
  If     mWnd <> Self.Handle
  Then Begin
         cTemp := TCanvas.Create;
         cTemp.Handle := GetDC(0);

         Windows.GetWindowRect(mWnd, rMenu);
         Windows.DeleteMenu(ACanvas.Handle,rMenu.Left,rMenu.Top);

         cTemp.Brush.Color := cl_black;
         cTemp.FrameRect(rMenu);         // Außenrahmen zeichnen

         cTemp.Brush.Color := cl_window; 
         InflateRect(rMenu, -1, -1);     
         cTemp.FrameRect(rMenu);         // Außenrahmen zeichnen

         InflateRect(rMenu, -1, -1);     
         cTemp.FrameRect(rMenu);         // Außenrahmen zeichnen

         ReleaseDC(0, cTemp.Handle);
         cTemp.Free;
       End;


Mit dem oben aufgezeigten Code, überzeichne ich den von Windows vorgegebenen 3D-Look von Popupmenüs mit drei einfachen Rahmen. Ich habe bewusst den Rest meines Codes weggelassen, um das Ganze zu vereinfachen, also nicht wundern, dass in dem Menü überhaupt kein Text zu sehen ist :wink:

Das Problem ist jetzt dieses: Nachdem ich das Programm gestartet habe, es vorher, von mir aus, als PopupMenu von Form1 definiert habe, und ich mit der Maus von oben nach unten über das Menü streife und zu den Items mit den Untermenüs gelange, gibt es beim zweiten und dritten einen Überlappungsfehler, da das Menü nochmal über das Untermenü gezeichnet wird. Wenn ich die Maus von unten nach oben bewege, passiert dieser Fehler nicht.

Wer denkt, dass liegt an meinem Quelltext, schaue sich das gleiche Phänomen im Menü von Winace an: Hauptmenü -> Ansicht -> zwischen "Symbole anordnen" und "Auswahl".

Wer jetzt denkt, dass sei ein Windows Xp-Fehler (Klassik-Stil), schaue sich das Startmenü an, wo "Dokumente", "Einstellungen" und "Suchen" direkt übereinander sind und dieser Fehler nicht auftritt.

Meine Frage daher: Wie kriege ich diesen "Fehler" im Ownerdrawn-Menü weg?

Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt.
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.11.04 13:13 
Hoi.

Nach monatelanger Nichtbeantwortung kommt vielleicht jetzt jemand auf eine Lösung!?

Gruß