Ownerdraw-Menus und Tastenkürzel (Alt+...)

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
rschi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 38
Registriert: Mo, 25. Sep 2006 13:41

Ownerdraw-Menus und Tastenkürzel (Alt+...)

Beitrag von rschi »

Hallo zusammen

In unserer Applikation setzen wir Ownerdraw-Menus ein. Nun stellten wir fest, dass wenn ein Fenster maximiert wird, sich ein Icon ganz links von den Menus einnistet. Das gleiche Verhalten sieht man im Excel von MS, da befindet sich ein Excel-Icon links von "Datei", wenn eine Arbeitsmappe offen ist.

Möchte man in diesem Zustand nun ein Menu mit dem Kürzel (z.B. Alt+D) öffnen, dann wird immer ein falsches Menu geöffnet, nämlich immer eines links vom gewünschten.

Ist dieses Phänomen schon jemandem aufgefallen?
Weiss jemand, die man dem Abhilfe verschaffen kann?

Ich habe es schon mit dem Callback-Slot "onMenuKey" versucht, aber dann habe ich weitere Probleme.

Besten Dank schon im Voraus für jeden Hinweis und Tipp.

Gruss Robin
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Ownerdraw-Menus und Tastenkürzel (Alt+...)

Beitrag von AUGE_OHR »

hi,
rschi hat geschrieben: Ist dieses Phänomen schon jemandem aufgefallen?
Weiss jemand, die man dem Abhilfe verschaffen kann?
hm ... ich verwende auch Owner Menu und hab dass noch nicht bemerkt.

Frage : benutzt du das "original" sample von Owner Menu ?

Probleme gibt es mit Owner Menu wenn du es als Pop-Up über einem
XbpActiveXControl() (nicht wie zuerst geschrieben XbpDialog) oder
XbpListbox hast ... beides mal it es "leer".

Abhilfe schafft da nur ein "update" von XPPUI1.DLL welche man bei
Alaska-Software anfordern "muss"

gruss by OHR
Jimmy
rschi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 38
Registriert: Mo, 25. Sep 2006 13:41

Beitrag von rschi »

Hallo Jimmy

Besten Dank für Deine Antwort.

Nein, ich benutze nicht das Original-Beispiel von Alaska. Bei diesem Original-Beispiel haben wir aber auch schon ein Fenster eingebaut und dort ist der Effekt genau der gleiche.

Ich versuche es gleich noch mit den neusten DLLs aus.

Gruss
Robin
rschi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 38
Registriert: Mo, 25. Sep 2006 13:41

Beitrag von rschi »

Hallo!

Leider brachten die neusten DLLs nichts. :-(

Hat sonst jemand Erfahrung mit Ownerdraw-Menus?

Wie kann ich abfragen, welches Menu gerade geöffnet ist oder ob ein bestimmtes geöffnet oder aktiviert ist?
Ich habe diesbezüglich schon einiges versucht, aber kam bis jetzt auf keinen grünen Zweig.

Oder kann mir jemand sagen, wie man per rundll oder sonst wie über das Betriebssystem auf die Menus zugreifen kann?

Danke und liebe Grüsse
Robin
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Ownerdraw-Menus und Tastenkürzel (Alt+...)

Beitrag von AUGE_OHR »

hi,
rschi hat geschrieben: Das gleiche Verhalten sieht man im Excel von MS, da befindet sich ein Excel-Icon links von "Datei", wenn eine Arbeitsmappe offen ist.
ich hab mir das nochmal angesehen. Es tritt bei Excel ja nur auf
wenn du die Arbeitsmappe "maximize".

Da es aber in der "horizontalen" Ebene passiert hat das nichts mit
dem Owner Menu zu tun was nur "vertikal" geht.

Es ist vielmehr ein "verschmelzen" von 2 "Dialog" Fenstern was
ich unter Xbase++ auch schon mal hatte. Ich hab das dann auch
im Alaska Forum mal gepostet wie man da hin kommt (wenn man
es mal benötigt)

Die Lösung des Problem´s war ein "falscher" Parent/Owner/DrawingArea

gruss by OHR
Jimmy
p.s. ein MDI Fenster hat/darf kein Menu haben !!!
rschi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 38
Registriert: Mo, 25. Sep 2006 13:41

Menus im Zusammenhang mit maximierten ("Unter"-)Fe

Beitrag von rschi »

Hallo,

Merci für Deine Hilfe, Jimmy, nun bin ich schon ein Stück weiter, leider aber noch nicht am Ziel.

Genau, das mit dem Excel habe ich zuwenig exakt geschrieben, sorry.

Bei unserer Applikation haben wir beim Menu horizontal UND vertikal ownerdraw. Nun habe ich es bei den horizontalen Menus einmal rausgenommen. Somit nimmt er nun zwar das richtige Menu, welches ich mit Alt+... ausgewählt habe, aber da bleiben immer noch andere Problemchen/Unschönheiten.

Wenn ich nun ein maximiertes Fenster habe und mit Alt+... ein Menu öffne, sollte ich es ja wieder schliessen können, wenn ich zwei Mal ESC drücke. Beim ersten geht es zwar weg (der Menu-Eintrag oben bleibt noch aktiviert, was auch korrekt ist), aber wenn ich das zweite Mal ESC drücke, geht das Menu wieder auf. :-(
Das ist völlig falsch und auch sehr mühsam.

Das Menu geht auch nicht zu, wenn ich mit Alt+... ein Menu öffne und dann mit einer weiteren Taste einen Eintrag im Menu wähle. Die Funktion dahinter wird zwar ausgeführt, aber das Menu bleibt geöffnet.

Ich hoffe, ich habe mich einigermassen verständlich ausgerückt.
Wie gesagt, dieses Problem habe ich nur, wenn ich ein maximiertes Fenster habe und mit der Tastatur durch die Menus navigiere.

Wie ich nun gemerkt habe, tritt dieses Problem wirklich (wie Jimmy richtig bemerkt hatte), nicht nur bei Ownerdraw Menus auf, sondern immer.

Besten Dank für alles mitdenken und alle Hinweise!
Gruss
Robin

PS: Wieso darf/kann ein MDI-Fenster kein Menu haben?
rschi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 38
Registriert: Mo, 25. Sep 2006 13:41

Beitrag von rschi »

Hallo Leute!

Besten Dank für die Mithilfe (vor allem Jimmy).

Die Probleme an "meinen" Menus sind nun gelöst. Jimmy, Deine Tipps haben mich nochmals zum Weitermachen und Ausprobieren angeregt und nun habe ich die Lösung gefunden.

Die horizontalen Menus mache ich nun ohne Ownerdraw. Vielleicht wird dieser Bug ja einmal noch von Seiten Alaska behoben, dass nicht immer das falsche Menu aufgeht.
Der Grund für die weiteren Probleme war, dass ich das Keyboard-Event (Alt+...) an ein weiteres Fenster weitergeleitet wurden und somit zweimal behandelt wurden. Nun habe ich diese Weiterleitung unterbunden und nun klappt es, wie ich es mir schon lange gewünscht habe. :-)

Nun kann ich mich endlich wieder anderen Problemen widmen. :-)

Besten Dank nochmals!!!
Gruss Robin
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
rschi hat geschrieben: Die horizontalen Menus mache ich nun ohne Ownerdraw. Vielleicht wird dieser Bug ja einmal noch von Seiten Alaska behoben, dass nicht immer das falsche Menu aufgeht.
Das "horizontale" Owner Draw Menu würde mich mal interssieren,
würdest du es hier mal bitte posten ?

gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Menus im Zusammenhang mit maximierten ("Unter"

Beitrag von AUGE_OHR »

hi,
rschi hat geschrieben: PS: Wieso darf/kann ein MDI-Fenster kein Menu haben?
s.h. XbpDialog :
Hinweis: ein MDI Client Fenster wird erzeugt, indem ein XbpDialog Fenster als Parent die :drawingArea eines anderen XbpDialog-Fensters bekommt).

- Wenn ein XbpDialog-Fenster MDI Clients enthalten soll, muß ein
Menüsystem im Fenster installiert sein (siehe die Methode :menuBar() ).
- MDI Client Fenster können kein eigenes Menüsystem haben.
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Aber eben nur, wenn das MDI-Fenster tatsächlich Bestandteil des Hauptdialogs sein soll. Wenn man es als eigenständiges neues Fenster öffnet, kann man so viele MDI-Children mit Menüs haben, wie man will.
Herzlich,
Tom
rschi
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 38
Registriert: Mo, 25. Sep 2006 13:41

Beitrag von rschi »

Hallo Jimmy

Sorry, dass ich mich so lange nicht gemeldet habe. Ich war so beschäftigt, dass ich es ganz vergessen habe, wieder einmal hier rein zu schauen.

Leider weiss ich nicht, wie ich das Beispiel mit dem horizontalen Ownerdraw-Menu hier gescheit posten kann. Aber ich habe in der offiziellen Alaska-Newsgroup geschrieben und es dort angehängt. Könntest Du es evtl. dort holen?
Am 20.09.2006 habe ich unter public.xbase++.gui eine Frage dazu gepostet.

Gruss
Robin
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

rschi hat geschrieben:Leider weiss ich nicht, wie ich das Beispiel mit dem horizontalen Ownerdraw-Menu hier gescheit posten kann.
Einfach cut & paste, dann hier einfügen und CODE drum herum setzen (Text markieren und oben auf CODE klicken).

PS: der Text sollte nicht zu lange sein.
Gruß
Hubert
Antworten