Hallo,
ich möchte erreichen, das sofort bei Aufruf eines Menüs, das mit DCMENU erstellt wurde, der erste Menüpunkt (DCSUBMENU) akiviert ist und der User sofort mit den Pfeiltasten auswählen kann, ohne mit der Maus die Leiste aktivieren zu müssen.
Beispiel:
dcmenubar omenu
dcsubmenu punkt 1 promt "anlegen" ...
dcsubmenu punkt 2 promt "sehen "...
... einzelne Untermenüs
dcread gui ...
Hier sollte bei Aufruf der Punkt 1 "anlegen" blau hinterlegt (aktiv) sein. Mit "setfocus" bin ich nicht weitergekommen.
Hat jemand einen Tip für mich ?
DCMENU Focus bei Aufruf
Moderator: Moderatoren
- Hans Zethofer
- Rekursionen-Architekt
- Beiträge: 278
- Registriert: Fr, 27. Jan 2006 8:29
- Wohnort: 2700 Wiener Neustadt
- Hat sich bedankt: 1 Mal
- Kontaktdaten:
Re: DCMENU Focus bei Aufruf
Hallo
ich schicke vor der Hauptschleife im Main-Programm einen Event "ALT-A", damit wird mein erster Menüpunkt
automatisch aktiviert und der Balken steht am 1.Menüeintrag
.
.
.
PostAppEvent(xbeP_Keyboard, xbeK_ALT_A) // Menüfenster gleich öffnen
// Das Programm wird in AppQuit() abgebrochen
DO WHILE .T.
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
hoffe das hilft vorerst einmal - geht aber vielleicht auch anders zu lösen
lg
hans
ich schicke vor der Hauptschleife im Main-Programm einen Event "ALT-A", damit wird mein erster Menüpunkt
automatisch aktiviert und der Balken steht am 1.Menüeintrag
.
.
.
PostAppEvent(xbeP_Keyboard, xbeK_ALT_A) // Menüfenster gleich öffnen
// Das Programm wird in AppQuit() abgebrochen
DO WHILE .T.
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
hoffe das hilft vorerst einmal - geht aber vielleicht auch anders zu lösen
lg
hans
_____________
lg
Hans
lg
Hans
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: DCMENU Focus bei Aufruf
Hallo Hans,
wenn ich mir dein Bild so ansehe werde ich da Gefühl nicht los, dass ich dich irgendwo schon mal gesehen haben
Dein Tip bleibt leider ohne den erwünschten Erfolg. Wird einfach von DCREAD GUI ignoriert. Allerdings habe ich grade gelesen,
dass es im DCREAD GUI den Parameter postevent gibt. Dem hätte ich die Lösung zugetraut, habe aber auch bis jetzt damit keinen
Erfolg gehabt.
wenn ich mir dein Bild so ansehe werde ich da Gefühl nicht los, dass ich dich irgendwo schon mal gesehen haben
Dein Tip bleibt leider ohne den erwünschten Erfolg. Wird einfach von DCREAD GUI ignoriert. Allerdings habe ich grade gelesen,
dass es im DCREAD GUI den Parameter postevent gibt. Dem hätte ich die Lösung zugetraut, habe aber auch bis jetzt damit keinen
Erfolg gehabt.
- Hans Zethofer
- Rekursionen-Architekt
- Beiträge: 278
- Registriert: Fr, 27. Jan 2006 8:29
- Wohnort: 2700 Wiener Neustadt
- Hat sich bedankt: 1 Mal
- Kontaktdaten:
Re: DCMENU Focus bei Aufruf
also ich denke mir, daß dein Menüsystem nur anders aufgebaut ist.
Ich habe im wesentlichen die MDIDEMO.PRG aus dem Alaskaverzeichnis abgeändert.
Probiere mal die MDIDEMO aus.
Füge im MDIDEMO.PRG die angeführte Zeile ein (im MAIN vor dem Hauptloop)
PostAppEvent(xbeP_Keyboard, xbeK_ALT_A) // Menüfenster gleich öffnen
Du mußt natürlich für das DEMO den Key ändern (dort steht ja "Dokument" als erster Menüpunkt und der
Tastencode ist ALT_D (geht vielleicht nicht wegen dem Debugger) ich habe es auf Do~kument geändert
und dann xbeK_ALT_K verwendet.
Damit sollte es genau so wie gewünscht funktionieren
Auch habe ich noch bevor das Hauptmenü kommt noch einen Versionsscreen zuvor eingebaut mit der Möglichkeit
Datum und Uhrzeit abzugleichen. Aber ich denke nicht das das etwas damit zu tun hat.
Auch rufe ich mein Programm nicht direkt sondern über eine Verknüpfung auf - probiere es auch mal so.
lg
hans
Ich habe im wesentlichen die MDIDEMO.PRG aus dem Alaskaverzeichnis abgeändert.
Probiere mal die MDIDEMO aus.
Füge im MDIDEMO.PRG die angeführte Zeile ein (im MAIN vor dem Hauptloop)
PostAppEvent(xbeP_Keyboard, xbeK_ALT_A) // Menüfenster gleich öffnen
Du mußt natürlich für das DEMO den Key ändern (dort steht ja "Dokument" als erster Menüpunkt und der
Tastencode ist ALT_D (geht vielleicht nicht wegen dem Debugger) ich habe es auf Do~kument geändert
und dann xbeK_ALT_K verwendet.
Damit sollte es genau so wie gewünscht funktionieren
Auch habe ich noch bevor das Hauptmenü kommt noch einen Versionsscreen zuvor eingebaut mit der Möglichkeit
Datum und Uhrzeit abzugleichen. Aber ich denke nicht das das etwas damit zu tun hat.
Auch rufe ich mein Programm nicht direkt sondern über eine Verknüpfung auf - probiere es auch mal so.
lg
hans
_____________
lg
Hans
lg
Hans
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: DCMENU Focus bei Aufruf
Hallo Hans,
in der MdiDemo habe ich das auch geau so wie von dir beschrieben hinbekommen. In meiner Express-Anwendung nicht. Es folgt ein wening zusammgeschmolzener Originalcode mit der eingefügten Zeile. Ist wie gesagt ohne Auswirkung. Ich denke, dass man das irgendwie in die read Anweisung reinbasteln muss. Es gibt in der Beschreibung zum dcreadgui diese Parameterbeschreibung:
Zitat:
POSTEVENT <nEvent> will post an event to the event queue
before starting up the event loop.
Zitat Ende
Was mir das genau sagen will habe ich (noch) nicht rausbekommen.
Gruß
Ewald
in der MdiDemo habe ich das auch geau so wie von dir beschrieben hinbekommen. In meiner Express-Anwendung nicht. Es folgt ein wening zusammgeschmolzener Originalcode mit der eingefügten Zeile. Ist wie gesagt ohne Auswirkung. Ich denke, dass man das irgendwie in die read Anweisung reinbasteln muss. Es gibt in der Beschreibung zum dcreadgui diese Parameterbeschreibung:
Zitat:
POSTEVENT <nEvent> will post an event to the event queue
before starting up the event loop.
Zitat Ende
Was mir das genau sagen will habe ich (noch) nicht rausbekommen.
Gruß
Ewald
Code: Alles auswählen
#include 'dcdialog.ch'
#include 'xbp.ch'
#include 'appevent.ch'
local getlist := {} , oclipphoto ,ofoto,obitmap
cbitmap = "logo.bmp"
dcbitmap cbitmap autoscale center parent ofoto
DCMENUBAR oMenuBar
DCSUBMENU oAnlegen PROMPT "&Neu/Ändern" PARENT oMenuBar
DCSUBMENU oSehen PROMPT "&Sehen" PARENT oMenuBar
DCSUBMENU oDrucken PROMPT "D&rucken" PARENT oMenuBar
DCSUBMENU oBuchen PROMPT "&Buchen" PARENT oMenuBar
DCSUBMENU oStammdaten PROMPT "S&tammdaten" PARENT oMenuBar
@ 01,33 dcstatic TYPE XBPSTATIC_TYPE_TEXT caption "Firmenabwicklung"
@ 02,33 dcstatic TYPE XBPSTATIC_TYPE_TEXT caption "(c) by "
@ 03,33 dcstatic TYPE XBPSTATIC_TYPE_TEXT caption "www.xyz_egal.com"
@ 06,00 dcpushbutton size 10,1 caption "Ende" ;
action {||dc_readguievent(DCGUI_EXIT_OK,Getlist)}
DCMENUITEM "&Referenzen" PARENT oanlegen ;
ACTION {||lagerefe()}
DCMENUITEM "Reser&vierung zurück" PARENT oanlegen ;
ACTION {||resezuru()}
DCMENUITEM "Alle Teile neu disponieren" PARENT oanlegen ;
ACTION {||dispgesa()}
DCMENUITEM "Alle Teile neu abgleichen" PARENT oanlegen ;
ACTION {||kontalle()}
DCMENUITEM "Offene Bestellungen" PARENT osehen ;
ACTION {||offebest()}
DCMENUITEM "Lager Bestandslisten" PARENT odrucken ;
ACTION {||lagelist()}
.
.
.
PostAppEvent(xbeP_Keyboard,xbeK_ALT_N)
DCREAD GUI ;
TITLE 'Lagerabwicklung' ;
FIT
RETURN