Seite 1 von 1

ArrayBrowse falsch refreshed [ERLEDIGT]

Verfasst: Di, 01. Mai 2012 22:05
von Manfred
Hi,

ich habe ein Arraybrowse, in dem man durch RETURN einen Spaltenwert ändern kann. Das klappt. Sobald ich aber in der Liste weiter runterscrolle und die Daten oben aus dem Scrollfenster verschwinden, wird nicht mehr die aktuelle Zeile geändert, sondern in einer Zeile weiter höher. Ein Dc_getrefresh(getlist) erfolgt jedesmal nach einem Itemselected.

Code: Alles auswählen

@ 15,5 DCBROWSE oDialogZusatz:oBrowse;
               CURSORMODE XBPBRW_CURSOR_ROW;
                     DATA aBrowse;
             ITEMSELECTED {|| IF(aBrowse[oDialogZusatz:oBrowse:rowPos,5] == "Nein",;
                                 aBrowse[oDialogZusatz:oBrowse:rowPos,5] := "Ja",;
                                 aBrowse[oDialogZusatz:oBrowse:rowPos,5] := "Nein"),dc_getrefresh(getlist);
                          };
              NOSOFTTRACK;
                   PARENT oRahmenBrowse;
                     SIZE DCGUI_PARENTWIDTH-10,DCGUI_PARENTHEIGHT-20

Re: ArrayBrowse falsch refreshed

Verfasst: Mi, 02. Mai 2012 6:56
von Wolfgang Ciriack
Hallo Manfred,
probier das mal so:

Code: Alles auswählen

ITEMSELECTED {|| IF(DC_GetColArray(5,oDialogZusatz:oBrowse) == "Nein",;
                                 DC_GetColArray(5,oDialogZusatz:oBrowse,"Ja"),;
                                 DC_GetColArray(5,oDialogZusatz:oBrowse,"Nein")), oDialogZusatz:oBrowse:RefreshCurrent() };

Re: ArrayBrowse falsch refreshed

Verfasst: Mi, 02. Mai 2012 7:39
von Manfred
Hi Wolfgang,

Danke, das war es wohl. Ich wußte irgendwas war da mit Arrays. Aber ich arbeite sonst immer nur mit DBF und dadurch hatte ich das wieder vergessen.

Re: ArrayBrowse falsch refreshed [ERLEDIGT]

Verfasst: Mi, 02. Mai 2012 10:27
von Tom
oBrowse:rowpos ist ohnehin ein relativer Wert, der sich auf die Zeilenposition nach sichtbaren Zeilen bezieht. Das wäre nicht nur bei Arrays falsch, sondern auch bei Tabellen. Wenn man sechs Seiten abwärts geblättert hat und in der obersten sichtbaren Zeile steht, ist :rowpos immer 1. Mit diesem Wert kommt man nicht an die entsprechenden Zeilendaten.

Bei Arrays gibt es in eXpress++ neben dem DC_GetColArray(x,oBrowse) (Inhalt der aktuellen Zelle in Spalte x) auch noch DC_BrowseRow() (nur bei Arrays!). Das liefert für die aktuell markierte Zeile die Referenz auf die Datenquelle, ist also ein absoluter Wert.

Re: ArrayBrowse falsch refreshed [ERLEDIGT]

Verfasst: Mi, 02. Mai 2012 10:29
von Manfred
Tom,

stimmt. Fällt mir jetzt auch gerade auf. Sowas Dummes.

Ja, es sind die Details, die einem das Leben versüssen.