XbpQuickBrowse: gebrowstes Array durch längeres ersetzen

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Sören
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 205
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig
Danksagung erhalten: 11 Mal

XbpQuickBrowse: gebrowstes Array durch längeres ersetzen

Beitrag von Sören »

Hallo,

ich habe folgendes Problem:

Ich will in einem XbpQuickBrowse das aktuell gebrowste Array durch ein anderes ersetzen, welches länger oder auch kürzer sein kann.

Folgendes funktioniert:

aArray := { { "A", "A2" }, { "B", "B2" } }
aCol := { 1, 2 }
oBrowse := XbpQuickBrowse():new( ... )
oBrowse:dataLink := DacPagedDataStore():new( aArray, aCol )
oBrowse:create()

Das funktioniert auch (neues Array hat gleiche Länge wie das alte):

aArray := { { "X", "X2" }, { "Y", "Y2" } }
aCol := { 1, 2 }
oNewDataLink := DacPagedDataStore():new( aArray, aCol )
oBrowse:setDataLink( oNewDataLink )
oBrowse:refreshAll()

Das crashed (neues Array ist länger als das alte):

aArray := { { "X", "X2" }, { "Y", "Y2" }, { "Z", "Z2" } }
aCol := { 1, 2, 3 }
oNewDataLink := DacPagedDataStore():new( aArray, aCol ) // <- CRASH
oBrowse:setDataLink( oNewDataLink )
oBrowse:refreshAll()

Fehlermeldung:

Aufgerufen von DACARRAYROW:INIT(396)
Aufgerufen von DACARRAYSET:INIT(197)
Aufgerufen von ABSTRACTDATASTORE:NEW4ARRAY(159)
Aufgerufen von ABSTRACTDATASTORE:INIT(120)
Aufgerufen von DACPAGEDDATASTORE:INIT(188)
Aufgerufen von EDITCONTROL:CREATEEDITAREA(145)
Aufgerufen von EDITCONTROL:INIT(20)
Aufgerufen von MAINCLASS:MASKOPEN(217)
Aufgerufen von MAINCLASS:CREATEAPPDIALOG(156)
Aufgerufen von MAINCLASS:INIT(50)
Aufgerufen von MAIN(15)

Hat jemand eine Lösung dafür?

Tschüs,
Sören
Rolf
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 258
Registriert: Do, 27. Apr 2006 12:28
Wohnort: Görlitz

Beitrag von Rolf »

Hallo Sören

ich musste bei deinem Problem gleich an das Beispiel von Alaska denken ,in welchem Ordner durchlaufen werden.

C:\Alaska\XPPW32\SOURCE\SAMPLES\BASICS\GUIBROW\Fbrowse.prg

Da müsste die Lösung liegen, da auch dort unterschiedliche Arraygrößen verwendet werden.

Grüße Rolf
Sören
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 205
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig
Danksagung erhalten: 11 Mal

Beitrag von Sören »

Hallo Rolf,

danke für den Tipp. Das hat mir weiter geholfen.

Das Beispiel befindet sich jedoch hier:

C:\Alaska\XPPW32\SOURCE\SAMPLES\BASICS\QBROWSE\QBrowse1.prg

Und auf folgende Weise funktioniert es:

aArray := { { "X", "X2" }, { "Y", "Y2" }, { "Z", "Z2" } }
aCol := { 1, 2 }
oBrowse:dataLink := DacPagedDataStore():new( aArray, aCol )
oBrowse:dataLink:SetAbsolutePagesize( oBrowse:RowCount )
oBrowse:refreshAll()

Mein eigentlicher Fehler bestand aber darin, dass ich aCol := { 1, 2, 3 } gesetzt hatte. Das ist mir beim Ansehen des Alaska-Beispiels aufgegangen!

Danke nochmal und tschüs,
Sören
Antworten