DCGET aus Array und Update [ERLEDIGT]

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

DCGET aus Array und Update [ERLEDIGT]

Beitrag von Manfred »

Bisher habe ich immer nur mit Speichervariablen gearbeitet, die ich dann jeweils ausgelesen/zurückgeschrieben habe in eine DBF.
jetzt habe ich aber ein Array, aus dem ich mir eine Eingabemaske erzeuge. Die einzelnen Arrayfelder dienen dabei als Eingabefelder für die DCGET.

Code: Alles auswählen

FOR nI := 1 TO Len(ar_get)
             @ ar_get[nI]:nOben,ar_get[nI]:nLinks DCSAY ar_get[nI]:text;
                                                 OBJECT oDialogZUsatz:oText;
                                                 PARENT oDialogZUsatz:oRahmenKopf;
                                                   SIZE 0
             IF ValType(ar_get[nI]:eingabe) <> "U"                              // es muß was drin stehen, sonst macht es wenig Sinn
                @ DCGUI_ROW,DCGUI_COL DCGET ar_get[nI]:eingabe;
                                     PARENT oDialogZUsatz:oRahmenKopf;
                                    PICTURE ar_get[nI]:picture;
                                    TABSTOP
             ENDIF
         NEXT
Meine Frage: Wie ist die verbindung vom Eingabefeld zum Array? Wie kommt der Wert aus dem Eingabefeld ins Array zurück? Wenn ich es ändere und dann das Feld verlasse passiert nichts. Was muß ich wie machen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: DCGET aus Array und Update

Beitrag von Koverhage »

Was bedeutet es passiert nichts ?
Was steht im Array nach verlassen des GETs ?
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DCGET aus Array und Update

Beitrag von brandelh »

da war was mit einer Instanzvariable im GET System, die Xbase++ nicht unterstützt (oGet:subscript), da Xbase++ selbst das nicht benötigt. Ich aber schon ...
ich weiß es ist hier eXpress und ich weiß nicht ob das dein Problem ist, aber hier mein Code um die Info zu übergeben:

Code: Alles auswählen

          do while getnr=5

              for x := 1 to REZEIMAX

                y := 1

                @5+x,1  get rechnung[ x+offset , ARENUM ]  ;
                        picture "999"  when springen(rechnung)
                        #ifdef __XPP__
                           aTail(getlist):subscript := {x + Offset, y++}
                        #endif
                @5+x,5  get rechnung[ x+offset , AANZ ]   ;
                        picture "@E 99.9"       valid rechn_n(rechnung) ;
                        when springen(rechnung)
                        #ifdef __XPP__
                           aTail(getlist):subscript := {x + Offset, y++}
                        #endif
                @5+x,9  get rechnung[ x+offset , AANZ_ART ]     ;
                        picture "!"  when springen(rechnung)
                        #ifdef __XPP__
                           aTail(getlist):subscript := {x + Offset, y++}
                        #endif
                @5+x,11 get rechnung[ x+offset , AARTNR ]     ;
                        picture "@!@S15"        valid rechn_n(rechnung) ;
                        when springen(rechnung)
                        #ifdef __XPP__
                           aTail(getlist):subscript := {x + Offset, y++}
                        #endif
                @5+x,27 get rechnung[ x+offset , AA_BEZ ]     ;
                        picture "@S28"  when springen(rechnung)
                        #ifdef __XPP__
                           aTail(getlist):subscript := {x + Offset, y++}
                        #endif
                @5+x,56 get rechnung[ x+offset , ACODE ]      ;
                        picture "!!"             valid rechn_n_code() ;
                        when springen(rechnung)
                        #ifdef __XPP__
                           aTail(getlist):subscript := {x + Offset, y++}
                        #endif
                @5+x,59 get rechnung[ x+offset , APREIS ]     ;
                        picture "@E 99,999.99"   valid rechn_n(rechnung) ;
                        when springen(rechnung)
                        #ifdef __XPP__
                           aTail(getlist):subscript := {x + Offset, y++}
                        #endif
                @5+x,69 get rechnung[ x+offset , AGES_PREIS ] ;
                        picture "@E 999,999.99"  valid rechn_n(rechnung) ;
                        when springen(rechnung)
                        #ifdef __XPP__
                           aTail(getlist):subscript := {x + Offset, y++}
                        #endif

              next

              setcursor(1)
              read
              setcursor(0)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCGET aus Array und Update

Beitrag von Manfred »

Koverhage hat geschrieben: Mo, 26. Apr 2021 10:04 Was bedeutet es passiert nichts ?
Was steht im Array nach verlassen des GETs ?
wenn ich das Array abfrage direkt nach dem Verlassen des DCREAD GUI, also kurz vor dem Return, dann steht da immer noch der Ursprungswert drin, der dort stand, als das Array an die Maske übergeben wurde. es wird also nicht automatisch aktualisiert.

Code: Alles auswählen

FUNCTION al_edit_var_neu(ar_get,apos,agruppe,xpush,abig,ex_ok,x_syspush,nZeilen)
         LOCAL aButton       := {;
                                 {"Übernehmen",,,{|| DC_ReadGuiEvent(DCGUI_EXIT_ABORT,getlist)},,,,,"Wert übernehmen"},;
                                 {"Abbruch"   ,,,{|| quit_edit(ar_get)},,,,"{|| ." + Transform(ex_ok,"L") + ". }","Abbruch des Vorgangs"};
                                 }
         LOCAL bDatalink
         LOCAL cRahmenTitel  := aGruppe[1,3]
         LOCAL cTitel        := aGruppe[1,4] + oVtPara:cVersion
         LOCAL getlist       := {}
         LOCAL GetOptions
         LOCAL nI
         LOCAL oDialog       := NIL
         LOCAL oDialogZUsatz := mk_dialog():new()
         LOCAL oLocal_style  := Local_style():new():initvaria(oVtPara:us_font_input)
         LOCAL p_gross       := {0,0}
         LOCAL zbig          := {}
         LOCAL zzbreit       := 8
         LOCAL zzhoch        := 16

         MEMVAR oSysPara
         MEMVAR oVtPara
         MEMVAR xx_font_input                                                   // hier unbekannt

         DEFAULT ex_ok   TO .T.                                                 // für die ANzeige der einelnen Pushbutton-
         DEFAULT nZeilen TO Len(ar_get)*2

         oDialogZusatz:standardRahmenKopf(aGruppe[1,3],,@getlist,.F.,,,,.T.,nZeilen)
         xx_font_input := oVTpAra:us_font_input

         zbig    := string_big_text( Replicate("M",100) , xx_font_input )
         zzhoch  := zbig[2]
         zzbreit := Round((zbig[1] / 100),0)
         p_gross := { zzbreit*20 , zzhoch }
********************************************************************************
         aButton[1,2] := p_gross[1]
         aButton[2,2] := p_gross[1]
         aButton[1,3] := p_gross[2]*1.3
         aButton[2,3] := p_gross[2]*1.3
         FOR nI := 1 TO Len(xPush)
             AAdd(aButton,{xPush[nI,3],;                                        /* Caption*/
                           p_gross[1],;                                         /* width*/
                           p_gross[2]*1.3,;                                     /* height*/
                           xPush[nI,4],;                                        /* Action Code Block*/
                           ,;                                                   /* Cargo*/
                           ,;                                                   /* Bitmap Resource*/
                           ,;                                                   /* COnfig Object*/
                           ,;                                                   /* When CodeBlock*/
                           ,;                                                   /* Tooltip*/
                           oLocal_style:sty_user;                               /* Font*/
                          };
                 )
//             AAdd(aButton,{xPush[nI,3],p_gross[1],p_gross[2]*1.3,xPush[nI,4],,,,{|| xPush[nI,5]},,oLocal_style:sty_user})
         NEXT
********************************************************************************
         FOR nI := 1 TO Len(ar_get)
             @ ar_get[nI]:nOben,ar_get[nI]:nLinks DCSAY ar_get[nI]:text;
                                                 OBJECT oDialogZUsatz:oText;
                                                 PARENT oDialogZUsatz:oRahmenKopf;
                                                   SIZE 0
             IF ValType(ar_get[nI]:eingabe) <> "U"                              // es muß was drin stehen, sonst macht es wenig Sinn
                @ DCGUI_ROW,DCGUI_COL DCGET ar_get[nI]:eingabe;
                                     PARENT oDialogZUsatz:oRahmenKopf;
                                    PICTURE ar_get[nI]:picture;
                                    TABSTOP
             ENDIF
         NEXT
********************************************************************************
         DCGETOPTIONS;
           AUTORESIZE;
               BORDER XBPDLG_SIZEBORDER;
              BUTTONS aButton;
                COLOR oSysPara:doParaWS:dialog_hg;
            COLORGETS {oSysPara:doParaWS:colorgets_aktiv,oSysPara:doParaWS:colorgets_inaktiv};
              GETFONT oVtpara:us_font_menue;
           HILITEGETS oSysPara:doParaWS:hilitegets;
          NOESCAPEKEY;
          NOMAXBUTTON;
          NOMINBUTTON;
                PIXEL;
         PRESENTATION oVtPara:aPresGet;
              SAYFONT oVtpara:us_font_menue;/*             SAYWIDTH oDialogZusatz:nSayBreite+oSysPara:skaliereXbParts(30); */
           SAYOPTIONS XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT;
           SCROLLBARS XBP_SCROLLBAR_VERT+XBP_SCROLLBAR_HORIZ;
         TOOLTIPCOLOR oSysPara:doParaWS:tooltipcolor_vg,oSysPara:doParaWS:tooltipcolor_hg;
          TOOLTIPFONT oSysPara:doParaWS:tooltipfont

         DCREAD GUI;
                FIT;
         		TITLE cTitel;
                OPTIONS GetOptions;
                PARENT @oDialog
	 	 RETURN ar_get <------ hier abgefragt, steht immer noch der Ursprungswert drin, obwohl im Eingabefeld geändert wurde.
	 	 
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: DCGET aus Array und Update

Beitrag von Koverhage »

Ich mache das so und habe keine Probleme.

Code: Alles auswählen

@  2.5,  1 DCGET ts[1]     pict '999'  MESSAGE msg01_ts
@  2.5,  7 DCGET mnktxt[1] pict 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' GETSIZE 40  message msg02_bez
@  2.5, 48 DCGET mnkdat[1] message msg26
Gruß
Klaus
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: DCGET aus Array und Update [ERLEDIGT]

Beitrag von Manfred »

Problem gelöst.
Eigentlich sollte ich mich schämen, aber da auch keienr von euch das Problem erkannt hat (Quellcode liegt ja vor), schäme ich mich jetzt doch nicht. :angel8:
es ist das

Code: Alles auswählen

DC_ReadGuiEvent(DCGUI_EXIT_ABORT,getlist)}
da muß

Code: Alles auswählen

DC_ReadGuiEvent(DCGUI_EXIT_OK,getlist)}
stehen.
tja, cut & paste war immer schon gefährlich.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten