Pushbutton Auslösen [Erledigt]

Moderator: Moderatoren

Antworten
Benutzeravatar
uwe.24
UDF-Programmierer
UDF-Programmierer
Beiträge: 52
Registriert: Di, 01. Aug 2006 15:47
Wohnort: Osnabrück
Danksagung erhalten: 1 Mal

Pushbutton Auslösen [Erledigt]

Beitrag von uwe.24 »

Hallo.

Ich habe mir eine Maske ausgebaut, die über Pusbuttons bedient wird.
Dazu nutze ich @ DCToolbar und DCADDBUTTON.
Je nach Bedarf starte ich das Programm normal oder übergebe 2 Variablen mit.
Wenn jetzt die Variablen übergeben werden, möchte ich diesen Button sofort automatisch auslösen.

Code: Alles auswählen

DCADDBUTTON CAPTION 'Neu' PARENT oToolBar SIZE 9 ;
         ACTION {||lEditMode := .t., lNeu := .t., NewFields(GetList), SetAppFocus(oDesc), ;
         DC_GetRefresh(GetList)} ;
         ID 'EDIT_BUTTON' ;
         WHEN {||!lEditMode}
Also sowas wie
if lUebernahme = .t.
....PushButtonAktivieren
endif


Zur Zeit belege ich nur 2 GetFelder mit der Übergabe vor und muss dann den Button mit der Maus manuell aktivieren.

Wie kann ich das lösen?

Uwe aus OS
Zuletzt geändert von uwe.24 am Do, 28. Feb 2019 14:30, insgesamt 1-mal geändert.
Uwe aus OS
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Pushbutton Auslösen

Beitrag von Tom »

Hallo, Uwe.

Es ginge ganz einfach, indem Du den Codeblock für den Button in eine Variable packst:

Code: Alles auswählen

LOCAL bMyButtonAction := {||lEditMode := .t., lNeu := .t., NewFields(GetList), SetAppFocus(oDesc), ;
         DC_GetRefresh(GetList)}

DCADDBUTTON CAPTION 'Neu' PARENT oToolBar SIZE 9 ;
         ACTION  bMyButtonAction ;
         ID 'EDIT_BUTTON' ;
         WHEN {||!lEditMode}
Dann kannst Du den Button-Codeblock beliebig auch woanders verwenden, etwa, wenn der Dialog fertig aufgebaut ist, im DCREAD :

Code: Alles auswählen

DCREAD GUI TITLE "Mein Zeug" .... EVAL bMyButtonAction
Wenn Du aber den Pushbutton wirklich physisch auslösen willst, musst Du ihn zuerst in ein Objekt stecken:

Code: Alles auswählen

DCADDBUTTON ... OBJECT oMyButton
Dann kannst Du ihn über PostAppEvent() auslösen:

Code: Alles auswählen

PostAppEvent(xbeP_Activate,,,oMyButton)
Die dritte Möglichkeit: Du evaluierst den Activate-Slot des Pushbuttons:

Code: Alles auswählen

... Eval(oMyButton:Activate) ...
Und, am allereinfachsten: Du löst codeseitig das aus, was der Button machen soll. Du rufst also "NewFields" usw. einfach im Code auf. :wink:
Herzlich,
Tom
Benutzeravatar
uwe.24
UDF-Programmierer
UDF-Programmierer
Beiträge: 52
Registriert: Di, 01. Aug 2006 15:47
Wohnort: Osnabrück
Danksagung erhalten: 1 Mal

Re: Pushbutton Auslösen

Beitrag von uwe.24 »

Hallo Tom.

Mit Eval im DCREAD hat es geklappt.

Vielen Dank. :thumbup:

Uwe aus OS
Uwe aus OS
Antworten