PDA

Vollständige Version anzeigen : Kontext Menüs Einfach gemacht


WeinGeist
23.09.2008, 23:13
Anbei mal eine kleine, einfache Beispieldatei mit welcher man auf sehr einfache weise Kontextmenüs ertellen und das angeklickte auswerten kann.

Ist quasi Kontextmenüs für Dummies ;) Versprochen! :)

Aktueller Funktionsumfang in Version 1:
- Einträge hinzufügen
- Einträge manipulieren
-- Status: Enabled / Disabled / Greyed
-- Mark: Checked / Unchecked
- Click auswerten
- Trennlinien (Separator)
- Spalten (Columns)
- Das Design ist aktuell nur als "System-Like" verfügbar.

Wie isses gelöst
Das ganze wurde mit zwei kleinen Klassen gelöst, die Anwendungsweise sieht man sehr gut im Formular welches beim Start aufgeht.

Geplantes
- Irgendwann Umsetzung mit AC2003 Menüs (Hübscher)
- Untermenüs aktivieren
- Symbole

Da ich das aktuell nicht unbedingt brauche bleibts mal dabei. :cool:

Anmerkungen
Eventuale muss bei Access vor 2003 der Verweis auf die AccessVersion neu gesetzt werden.
Im VBA-Editor>Verweise>Microsoft Access Object Library referenzieren. Hab leider kein Acc2000 um das so anzubieten.

Grüsse und so, hoffe es gefällt ;)

mabe79
14.10.2008, 19:16
Hallo WeinGast!

Erstmals Gratulation zu dem echt genialen Teil, welches wirklich sehr einfach in ein bestehendes Projekt einzubinden ist.

Wenn ich mir etwas wünschen dürfte wäre das eine Möglichkeit für ein MenüItem mit Eingabefeld (Textbox) ... würde ich sogar selber machen, hab nur selber gerade nicht Zeit und Muse da in die Tiefen zu rauschen; beschäftige mich lieber mit C# und .Net :)

Der Verweis wie oben beschrieben war z.B. in der Access Version 2007 nicht notwendig, es funktioniert einwandfrei..


Ich darf noch auf einen kleinen Bug aufmerksam machen: Die Checkbox kann man nicht mehr auf unChecked stellen.... ;) wenn man es dann doch nicht mehr verstehen sollte :)

Ich wünsch noch viel Spaß beim Basteln...

glg
B

WeinGeist
14.10.2008, 21:11
Danke für die Rückmeldung :)

Zu dem Bug: Es müsste eigentlich auch so gehen. Musst aber das Menü neu aufbauen lassen, das wird ja zwischengespeichert. Dann dürfte es gehen. Einfach die entsprechende Variable auf Nothing setzen. Eine Erweiterung, dass die Klassen "haltbar" bleiben können ist schon geplant. ;) Ich werde es mir aber mal genauer anschauen, vielleicht hab ich in der Beispieldatei auch nicht die aktuellste Variante gehabt!

Untermenüs sind auch schon fast fertig. Brauchte das doch für mich auch. Muss ich aber noch etwas entbuggen. Der Aufruf wird ähnlich einfach bleiben.

WeinGeist
17.10.2008, 01:56
Hi, habe übrigens mal nachgeschaut. Das Häckchen funktioniert in der aktuell downloadbaren Version, wenn man vorher die Context-Menü-Variable auf nothing setzt. Dadurch wird das Menü neu aufgebaut und somit auch die entsprechenden Status korrekt abgefragt.

mabe79
18.10.2008, 16:13
hi! du hast Recht mit nothing...

mabe79
18.10.2008, 16:27
Hi! ja du hast Recht mit nothing....

bin selber darauf gekommen, da ich dein Kontext Menü zum Suchen und Filtern, sowie Verrechnen verwende und dies in einem Endlosformular eingebaut hab. Da ich nach jedem Klick in eine neue Zeile das Menü neu aufbauen muss, um die aktuellen Werte übergeben zu können, hab ich einfach einen kleinen Rückzug als Sub implementirt und dort die Variable auf Nothing gesetzt... sozusagen ein Dispose() ;)

Funktioniert einwandfrei...

HINWEIS: aufpassen muss man, wenn man bei den FallEntscheidungen kein else select macht, da dies die Escapemöglichkeit darstellt, wenn man wo anders hinklickt als auf das Kontext Menü. Die Anwendung wartet sonst sehr beharrlich vergeblich auf den nächsten Programmpunkt .
In diesem Else sollte man dann auch den Rückzug durchführen (aufrufen), denn man hat sonst beim nächsten Klick ja gleich wieder den alten Wert ;)

Ansonst kann ich nur nocheinmal sagen.. . ein echt geniales Teil ..

freue mich schon auf deine nächste Version.. bis dahin ...
glg
B

WeinGeist
15.06.2010, 15:37
@Mabe79: Den Hinweis hatte ich sogar mal in der Beispieldatei, meine ich zumindest. Aber ja, das ist wichtig! --> Else

Leider habe ich die nächste Version noch nicht parat. Meine Testungen waren mit der windows-api einfach wesentlich zuverlässiger und deutlich einfacher als mit dem Office-Style. Auch tut er in jeder Office-Version. Daher habe ich da nimmer viel Zeit investiert. Ein zwei gimmicks für die Windows-Api kommen aber mal noch. ;)

mabe79
01.08.2010, 10:48
Hallo Weingeist!
Ich hab gerade wieder mal dein tolles Control in eine Anwendung eingebaut und mich hauts jedes mal wieder vom Hocker, wie toll das geht.

Ich verwende dieses Tool nicht nur als Kontextmenü sondern auch ganz normal als Auswahlmöglichkeit auf einen Button mit der linken Maustaste

If Button = 1 Then
Select Case getContextDet
Case optEdit
Vernichten.....


Wollt nur mal meiner Freude Ausdruck verleihen und mit Lob um mich werfen!!!
Wünsch noch eine schöne Zeit

lg