DCMENU Focus bei Aufruf

Moderator: Moderatoren

Antworten
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

DCMENU Focus bei Aufruf

Beitrag von Ewald »

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 ?
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
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

Beitrag von Hans Zethofer »

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 :wink:

lg
hans
_____________
lg
Hans
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCMENU Focus bei Aufruf

Beitrag von Ewald »

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.
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
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

Beitrag von Hans Zethofer »

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
_____________
lg
Hans
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCMENU Focus bei Aufruf

Beitrag von Ewald »

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

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


Antworten