POPUP bei einem DCGET automatisch [ERLEDIGT]

Moderator: Moderatoren

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

POPUP bei einem DCGET automatisch [ERLEDIGT]

Beitrag von Hans Zethofer »

...aufrufen wenn das Getfeld den Focus hat!

Hallo!

ich möchte bei einem Getfeld eine Auswahlliste automatisch öffnen lassen wenn der User in dieses Geldfeld wechselt.
Geht das vielleicht über die GOTFOCUS Anweisung?

Mit F1 (habe ich so vorbelegt) kann er das schon selbst auch veranlassen aber ich will wenn der Focus im Getfeld ::cARTNUMMER
ist die Liste automatisch öffnen lassen

Code: Alles auswählen

   @  6.4,22 DCGET ::cARTNUMMER OBJECT ::EcARTNUMMER   ;
      GOTFOCUS {|| DC_GetRefresh(GetList) };
      LOSTFOCUS {|| DC_GetRefresh(GetList) };
      valid {||::Artnummer_Valid(::cARTNUMMER)};
      POPUP {|o|::Datenuebernahme(o, GetList, 1)};
         POPCAPTION "v" ;
         POPFONT "10.Marlett" ;
         POPSTYLE DCGUI_POPUPSTYLE_IMBEDDED ;
         POPKEY xbeK_F1 ;
      EDITPROTECT {|| ::lShow}
Habe bisher keine brauchbaren Lösungsansatz gefunden - kann mir da vielleicht jemand auf die Sprünge helfen

Danke
Zuletzt geändert von Hans Zethofer am Di, 29. Mai 2012 11:13, insgesamt 1-mal geändert.
_____________
lg
Hans
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: POPUP bei einem DCGET automatisch aufrufen...

Beitrag von Koverhage »

mit GotFocus und PostAppEvent

mache es an manchen Stellen auch so.


@ 6.4,22 DCGET ::cARTNUMMER OBJECT ::EcARTNUMMER ;
GOTFOCUS {|| PostAppEvent( xbeP_Keyboard, xbeK_F1,, oBrowse ),DC_GetRefresh(GetList) };
Gruß
Klaus
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: POPUP bei einem DCGET automatisch aufrufen...

Beitrag von Hans Zethofer »

Hallo!

Diese Lösung hatte ich auch schon angedacht und probiert.
Das Problem ist nur er bleibt jetzt sozusagen in einem Loop. Wenn ich aus dem Auswahlfenster aussteige wird das Auswahlfenster sofort wieder gestartet.

Da fehlt mir noch eine Logik - eventuell ein Flag das es nur beim ersten Mal GOTFOCUS automatisch gestartet wird.
_____________
lg
Hans
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:

Re: POPUP bei einem DCGET automatisch aufrufen...

Beitrag von Tom »

Code: Alles auswählen

lPoppedUp := .F.

... GOTFOCUS {|o|IF(!lPoppedUp,(Eval(::Datenuebernahme(o, GetList, 1)),lPoppedUp:=.F.),nil)}
Herzlich,
Tom
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: POPUP bei einem DCGET automatisch aufrufen...

Beitrag von Hans Zethofer »

Genau so eine Lösung habe ich auch jetzt schon eingebaut und die funktioniert jetzt

Code: Alles auswählen

   
     lFirst:=.t.
     @  6.4,22 DCGET ::cARTNUMMER OBJECT ::EcARTNUMMER   ;
      GOTFOCUS {|| IIF (lFirst,(PostAppEvent( xbeP_Keyboard, xbeK_F1,,::EcARTNUMMER),DC_GetRefresh(GetList),lFirst:=.f.),NIL) };
      LOSTFOCUS {|| DC_GetRefresh(GetList) };
      valid {||::Artnummer_Valid(::cARTNUMMER)};
      POPUP {|o|::Datenuebernahme(o, GetList, 1)};
         POPCAPTION "v" ;
         POPFONT "10.Marlett" ;
         POPSTYLE DCGUI_POPUPSTYLE_IMBEDDED ;
         POPKEY xbeK_F1 ;
      EDITPROTECT {|| ::lShow}
bei deiner Lösung Tom

Code: Alles auswählen

lPoppedUp := .F .
... GOTFOCUS {|o|IF(!lPoppedUp,(Eval(::Datenuebernahme(o, GetList, 1)),lPoppedUp:=.F.),nil)}
muß es doch so sein (nach Eval)
lPoppedUp := .T. // <-----

Code: Alles auswählen

... GOTFOCUS {|o|IF(!lPoppedUp,(Eval(::Datenuebernahme(o, GetList, 1)),lPoppedUp:=.T.),nil)}
oder?
_____________
lg
Hans
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:

Re: POPUP bei einem DCGET automatisch aufrufen...

Beitrag von Tom »

Schulljung, Typo. Natürlich muss die Variable auf .T. gesetzt werden.
Herzlich,
Tom
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: POPUP bei einem DCGET automatisch [ERLEDIGT]

Beitrag von Hans Zethofer »

Endlösung! =D>

Code: Alles auswählen

   @  6.4,22 DCGET ::cARTNUMMER OBJECT ::EcARTNUMMER   ;
      GOTFOCUS {|o|IF(lFirst,(Eval({|o|::Datenuebernahme(o, GetList, 1)}),lFirst:=.f.,DC_GetRefresh(GetList)),nil)};
      LOSTFOCUS {|| DC_GetRefresh(GetList) };
      valid {||::Artnummer_Valid(::cARTNUMMER)};
      POPUP {|o|::Datenuebernahme(o, GetList, 1),DC_GetRefresh(GetList)};
         POPCAPTION "v" ;
         POPFONT "10.Marlett" ;
         POPSTYLE DCGUI_POPUPSTYLE_IMBEDDED ;
         POPKEY xbeK_F1 ;
      EDITPROTECT {|| ::lShow}
Danke für die Input's
_____________
lg
Hans
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:

Re: POPUP bei einem DCGET automatisch [ERLEDIGT]

Beitrag von Tom »

Schön! :)

Hinweis am Rande: DC_GetRefresh() funktioniert nicht nur für die (gesamte) GetList, sondern auch für Gruppen und Einzelobjekte (dann nebst Children). DC_GetRefresh(GetList) kann unschöne Nebeneffekte haben und bei umfangreichen Dialogen zu Verlangsamungen und sogar Flackereffekten führen, deshalb sollte man das eingrenzen, wenn man wirklich nur bestimmte Objekte refreshen will. Finden sich also beispielsweise alle Objekte, die man in einem bestimmten Fall refreshen will, in einer Gruppe, genügt etwas wie DC_GetRefresh(oGroup). Die enthaltenen Kinderobjekte werden mitrefreshed.
Herzlich,
Tom
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: POPUP bei einem DCGET automatisch [ERLEDIGT]

Beitrag von Hans Zethofer »

Danke für die Info - werde ich mir mal genauer anschauen :idea:
_____________
lg
Hans
Antworten