Seite 1 von 1

getlist nachträglich ändern

Verfasst: So, 20. Okt 2019 9:08
von Manfred
Ich baue einen DC_Browse zusammen, was dynamisch funktionieren muß. Anfänglich sind die Spaltendaten noch nicht alle vorhanden. Ich möchte trotzdem so viel wie möglich am Anfang erstellen. Es gibt Spalten, die erst während der eigentlichen Laufzeit bekannt werden, sich aber bei jedem Aufruf der Funktion, die den Browser samt Inhalt anzeigen soll, ändern können. Das heißt für mich, es sind mal die Spalten und mal die Spalten, die benötigt werden. Jeweils unterschiedlicher Namen und Mengen.
mit DCREAD GUI wird ja anfänglich alles aufgebaut. Wie kann man aber dieses anfängliche Konstrukt später wieder ändern? Und zwar nach dem Schema, das es mal mehr oder mal weniger Spalten sind. Einfach löschen und neu hinzufügen geht ja nicht, da Roger alles in ein Array schreibt.
Ginge das überhaupt einfach, oder müßte da einiges drumherum programmiert werden? Im Prinzip würde mir auch genügen zu sagen: "Entferne den kompletten Browse und erstelle folgenden neu und schiebe ihn ein" Dann würde ich zu Anfang nur den Parentrahmen erstellen, den verstecken und dann zu gegebener Zeit mit dem neuen Browser füllen und sichtbar machen.

Re: getlist nachträglich ändern

Verfasst: So, 20. Okt 2019 18:18
von Wolfgang Ciriack
Ich würde alle Spalten erzeugen und mit dem HIDE Codeblock bei DCBROWSECOL steuern, welche angezeigt werden bzw. welche nicht.

Re: getlist nachträglich ändern

Verfasst: So, 20. Okt 2019 18:54
von Tom
Eher mit AddColumn/DelColumn. HIDE ist an dieser Stelle nicht verlässlich.

Re: getlist nachträglich ändern

Verfasst: So, 20. Okt 2019 18:58
von Manfred
OK, aber werden denn die Colums dann auch aus dem getlist Array entfernt, oder ist das hierbei egal? Daran hatte ich nämlich auch schon gedacht. Und da fiel mir dann halt die Technik von Roger ein und ich bekam so meine Zweifel und stellte deshalb hier die Frage.

Re: getlist nachträglich ändern

Verfasst: So, 20. Okt 2019 19:07
von Tom
Die sind da m.E. nicht drin.

Re: getlist nachträglich ändern

Verfasst: So, 20. Okt 2019 19:17
von Wolfgang Ciriack
Eher mit AddColumn/DelColumn. HIDE ist an dieser Stelle nicht verlässlich.
Gut zu wissen, habe HIDE oder AddColumn/DelColumn bisher nicht benötigt/benutzt, nur MoveColumn.

Re: getlist nachträglich ändern

Verfasst: Mo, 21. Okt 2019 12:09
von Manfred
lt. Anleitung werden die auch ins getlist Array eingetragen.

Re: getlist nachträglich ändern

Verfasst: Mo, 21. Okt 2019 12:55
von Tom
Stimmt, die Spalten sind im Getlist-Array, aber ich glaube nicht, dass das große Bedeutung hat, denn man manipuliert Spalten kaum inhaltlich. Ich hantiere aber viel mit Dialogen, die Browses enthalten, die mit AddColumn und DelColumn hinzugefügt oder entfernt werden, und das ohne Probleme. Möglicherweise ist die HIDE-Klausel inzwischen auch repariert; ist ein paar Jahre her, dass ich die für BrowseColumns zuletzt verwendet habe.

Re: getlist nachträglich ändern

Verfasst: Mo, 21. Okt 2019 13:15
von Manfred
ok, delcolumn wäre ja dann nicht das Problem. Aber wie löst Du das mit Addcolumn? Ds wäre ja dann wieder pur Xbase++ und hätte nicht den Charme des DCBROWSECOL, bei dem man so viele Parameter angeben kann, die Roger dann intern verwandelt.

Re: getlist nachträglich ändern

Verfasst: Mo, 21. Okt 2019 14:42
von Tom
Deshalb hänge ich mit AddColumn auch nur Spalten an, die ich mit DCBROWSECOL erzeugt und mit DelColumn entfernt habe. Dafür landen die Spaltenobjekte in einem Array:

Code: Alles auswählen

DCBROWSECOL DATA {|| ...} ... OBJECT aBrowseCol[xy]

oBrowse:DelColumn(xy)

...

oBrowse:AddColumn(aBrowseCol[xy])
Dieses Spaltenobjekt kann dann alles, was DC_XbpColumns können.