OwnContext UDF (vorher MenuEx)

  • Hier ein neues Projekt von mir, die MenuEx OwnContext-UDF.
    Im Moment nur für Kontextmenüs, Erweiterung für Standardmenüs in Planung.


    Das sind die Eigenschaften:
    - Anzeige des Menüs kann an Bedingung gekoppelt werden (z.B. Anzahl Item eines Listview muss > 0 sein)
    - Itemtypen: Label, Checkbox, Radio, Image (jpg,bmp,gif), Icon (aus Icondatei, DLL), Shape (Trennlinie) --- Bilddateien sollten quadratisch sein, werden auf 16x16 px skaliert
    - Menübreite wählbar, Standard 200 px
    - Linker Rand für Menü allgemein und zusätzlich für jedes einzelne Item einstellbar (dadurch sind Einzüge möglich)
    - Item-ID sind völlig normale Standard-Ctrl-ID und können somit auch "normal" angesprochen werden. Von Farbgebung (ausser Schrift) rate ich aber ab, da die Controls auf einem Background-Label liegen (vereinfacht die Größenanpassung des Menü-Fensters)



    Edit 1: Noch einen Fehler bei der Positionierung beseitigt


    Edit 2:
    - Neu: Hervorhebung der Item bei Mouse-Hover
    - kleinen Bug für Fensterposition behoben
    - Klick auf GUI bei offenem Menü wird jetzt erkannt


    Edit 3:
    Jetzt ergänzt: Wenn ein Item auf GUI_DISABLE gesetzt ist, wird dieses beim Hover nicht gehighlightet und ein Mausklick bleibt ohne Effekt.


    Edit 4:
    - Funktionen umbenannt zu _GUICtrlOwnContext_...
    - Hover Color kann bei Erstellen des Menüs oder später mit eigener Funktion individuell festgelegt werden
    - Bug beim Rechtsklick auf/neben offenes Menü gefixed
    - Tipp von funkey für Bkcolor eingearbeitet
    - Hover Geschwindigkeit erhöht (Adlibzeit von 50 auf 10 ms verringert)
    - Im Bsp. sind jetzt alle Imagedaten binär hinterlegt (deshalb nur als Anhang)
    aktuelle Version v0.8


    Edit 5:
    - NEU Je Item kann ein Submenü (1 Level tief) erstellt werden. Markierung für Submenü differenziert nach Status Enable/Disable des Item.
    WICHTIG: Bevor Submenüs erstellt werden können, müssen erst alle Item im Hauptmenü erstellt werden:


    - überarbeitet: Erkennen, ob Maus über Item - nicht mehr an Ctrl gebunden. Die gesamte Fläche des Eintrags, inkl. Image, wird als Ctrl erkannt
    - keine AdlibRegister-Funktion mehr, alles wird in Window- und Mouse-Procedure ausgewertet
    - funkeys Hinweis berücksichtigt: bei erneutem Aufruf Menü jetzt alte Hovermarkierung gelöscht
    Jetzt auch in der UDF Binärdaten (für SubItem-Markierung), daher neue Version nur im Anhang.
    Neues Bsp-Skript. Die Bsp.-Skripte sind aufgrund kleiner interner Änderungen in der UDF mit den unterschiedlichen Versionen nicht kompatibel.
    aktuelle Version v0.9


    so sieht es z.B. aus:
    v0.8 [Blockierte Grafik: http://www.imgbox.de/users/BugFix/ContextMenu.jpg] v0.9 autoit.de/wcf/attachment/15961/



    DL bisher: 15

  • Net schlecht deine UDF, nur wird bei mir das Contextmenü unterhalb der GUI angezeigt.
    autoit.de/wcf/attachment/15925/

  • Das ist schon sehr seltsam, ich hatte zwar eine Codezeile vergessen (Korrektur, wenn Menüfenster den unteren Bildschirmrand überragt), aber das kann eigentlich bei dir nicht zutreffen.
    Die Position richtet sich nach dem Mausklick (Fenster Menü linke obere Ecke an Mauspos).
    Kann ich so nicht nachbilden, sehr seltsam.


    Edit: Ahhh, habs entdeckt: Wenn nach Aufpoppen der GUI, diese verschoben wird und dann das Menü aufgerufen wird, erscheint es in Relation zum alten Standort.
    Da muss ich mal suchen, warum das passiert - bei Parent-Child sollte das eigentlich nicht vorkommen.

  • Keine Ahnug woran es liegt.
    Eventuell wird Mist gebaut weil ich 2 TFT hab und 1 noch eine höhere Auflösung.
    TFT 1 1440x900 und TFT 2 1920x1080
    Werde es morgen mal an meinen Arbeitsrechnern testen. Bin jetzt zu faul wieder aufzustehen.

    Edit: Die neue Version funzt, lag scheinbar nur an der 1. Zeile, hab eben erst gesehen das du eine neue Version hochgeladen hattest.
    Der Fehler war bei MenuEx[0.3].au3

  • Hi
    Wir haben ja schon bekanntschaft gemacht.


    Schaut gut aus und leicht zum erstellen - Traymenü mit den id´s...
    könnte man als Traymenü für Linksclick und rechtsclick auch verwenden - also zwei getrennte menüs.
    Der Vorteil währe dass das script nicht stehen bleibt währen das menü offen ist (was mich gerade an den pause bug übers traymenü erinnert der mir aufgefallen ist :D )


    Hab da ein paar sachen entdeckt die verbesserungswürdig währen - ohne dass du es als schlecht kritik auffasst.
    - wenn du das menü offen hast, nimmt er bei einem linksclick nicht auf dem menü, erst den zweiten - der erste wird fürs schliessen 'gefressen'.
    - die geänderten werte werden erst gesetzt wenn man das menü öffnet.


    schön währe noch wenn die zeile auf der man sich gerade mit dem cursor befindet, erhöht wird.


    Kann leider nix dazu sagen wie das geht - kenn mich mit Guis garnicht aus :( .


    Mfg Dominic

  • könnte man als Traymenü für Linksclick und rechtsclick auch verwenden - also zwei getrennte menüs.

    Hier verstehe ich jetzt nicht, was du meinst. Du möchtest dieses Kontextmenü als Traymenü verwenden? Könnte klappen, musst du dann für das TrayBar-Handle erstellen. Einfach mal Probieren.


    wenn du das menü offen hast, nimmt er bei einem linksclick nicht auf dem menü, erst den zweiten - der erste wird fürs schliessen 'gefressen'.

    Trifft zu, wenn du bei offenem Kontextmenü das Parent schließen willst oder eine andere Mausaktion stattfinden soll.
    --> Behoben in nächster Version

    die geänderten werte werden erst gesetzt wenn man das menü öffnet.

    Gesetzt werden diese sofort. Wenn du das Event auswertest und den Status auslliest, wirst du das feststellen. Es ist nur eine optische Verzögerung, die beim erneuten Öffnen des Menüs erscheint. Funktionell ohne Einfluss.


    schön währe noch wenn die zeile auf der man sich gerade mit dem cursor befindet, erhöht wird.

    Ich schau mal, was sich machen lässt.

  • Danke für die antworten

    Gesetzt werden diese sofort. Wenn du das Event auswertest und den Status auslliest, wirst du das feststellen. Es ist nur eine optische Verzögerung, die beim erneuten Öffnen des Menüs erscheint. Funktionell ohne Einfluss.

    wegen auslesen - kenn mich garnicht mit Gui´s aus, hab mich noch nie damit beschäftigt :( , sollte eh mal zeit werden.
    Bin aber im moment mit einem andere interessanten script beschäftigt.


    mfg

  • Schön, wenns euch gefällt. 8o


    Vorschlag: Mach die MouseOver-Farbe festlegbar. Das blau ist ja schön und gut, aber wenn ich meine GUI in Richtung grün beispielsweise designe, dann passt's nicht. Ich meine damit: Ein eigener Parameter zum Farbe festlegen. ;)

    Ich wollte mich da eigentlich an Standardmenüs orientieren. Und eine extra Farbgebung als Funktion möchte ich eigentlich nicht einbauen. Aber du kannst ja bei Bedarf die Globale Variable für die Farbe in deinem Skript überschreiben. Global $__iHOVER_COLOR = 0xADD8E6