Neben deinem Tippfehler liegt wohl ein Missverständnis in der nötigen Anzahl der Dimensionen vor:
ich stelle mal ein XbpQuickBrowse() Beispiel von einem meiner Programme rein ... alles in Instanzvariablen, aber das ist ja egal
Code: Alles auswählen
// ich brauche diese Definitionen in verschiedenen Programmteilen, daher in CH Datei ausgelagert !
// Arraybeschreibung von Einkommen: dlgBeaEink **** immer auch die Zeile LeererDatensatz anpassen
#define SubArray_EK_ID 1
#define SubArray_EK_Text 2 // nicht in Datei speichern, sonder immer ber EK_ID laden
#define SubArray_EK_Von 3 // nur Monat
#define SubArray_EK_Bis 4 // nur Monat
#define SubArray_EK_BetragVorjahr 5
#define SubArray_EK_BetragAktuell 6 // nur wenn nötig
#define SubArray_EK_BetragZuletztAktuell 7 // bei RAG und Erstmaliger Anpassung hier aktuellen Wert speichern.
#define SubArray_EK_BetragTemp1 8 // Betragsfeld, welches je nach EK Art unterschiedlich verwendet
// werden kann, wenn es n”tig ist.
// Verletzenrente: hier wird Betrag der Verletzten Rente gespeichert
// im Monatsbetrag das Ergebnis von VLR - BVG Rente
#define SubArray_EK_EDITZEILE 9 // welche Zeile war vor Sortierung aktiv ?
#define aEinkommen_LeererDatensatz { "","","","",0,0,0,0,.f.} // eindimensional, eine Zeile !
// das steht im INIT(), da sind noch keine Daten im Array, daher wird der Platz nur mit Platzhalter vorbelegt.
// diese Zeile entspricht diesem Aufruf, wenn man nicht auslagert ...
// ::aEinkommen := { { "","","","",0,0,0,0,.f.} } // 2 Dimensional, mit einem Datensatz !
// ::aEinkommen := { { "","","","",0,0,0,0,.f.}, { "","","","",0,0,0,0,.f.} } // 2 Dimensional, mit zwei Datensätzen !
::aEinkommen := { aEinkommen_LeererDatensatz } // was in einem leeren Satz steht, genauso wie der Aufbau sind in CH ausgelagert.
//
::qbEinkommensListe := XbpQuickBrowse():new( ::gbEinkommensListe, ,; // owner ist static Element
{ 3,3 },;//nRandUnten},;
{ ngbEinkommensListeDimX-6,;
ngbEinkommensListeDimY-nRandUnten*3-2},; // war vorher auf 4
{ { XBP_PP_FGCLR, GRA_CLR_BLACK } } )
::qbEinkommensListe:dataArea:referenceArray := {space(30)," "," "," "," "} // *** das bestimmt die automatische Spaltenbreite !
::qbEinkommensListe:clipParent := .T.
::qbEinkommensListe:clipSiblings := .T.
::qbEinkommensListe:tabStop := .T.
::qbEinkommensListe:hScroll := .F.
::qbEinkommensListe:itemSelected := {|| ::EditEKZeile() }
// das steht im Create()
::gbEinkommensListe:create() // das ist die GroupBox, also der Rahmen und owner
// DatenArray zuweisen, ::aEinkommen ist hier schon ein passsendes Array (meist leer, da ich ja die Zeilen im Programm hinzufüge)
::qbEinkommensListe:datalink := DacPagedDataStore():new( ::aEinkommen, { SubArray_EK_Text, SubArray_EK_Von, SubArray_EK_Bis, SubArray_EK_BetragVorjahr, SubArray_EK_BetragAktuell } )
***** WICHTIG ***** jede Neuzuweisung an ::aEinkommen zerstört diese Beziehung !!!!!
* Entweder nur asize() und aadd() verwenden oder eine neue DATALINK-Zuweisung wie hier !
::qbEinkommensListe:create()
// nun wird das Aussehen geändert, Methodenaufrufe meist erst nach Create !
::qbEinkommensListe:setHeader({"Einkommensart","von","bis","Vorjahr","aktuell"})
::qbEinkommensListe:dataArea:SetAlignment(2,XBPALIGN_HCENTER,.f.) // .f. nicht sofort anzeigen, da noch nicht sichtbar
::qbEinkommensListe:dataArea:SetAlignment(3,XBPALIGN_HCENTER,.f.)
::qbEinkommensListe:dataArea:SetAlignment(4,XBPALIGN_RIGHT,.f.)
::qbEinkommensListe:dataArea:SetAlignment(5,XBPALIGN_RIGHT,.f.)
::qbEinkommensListe:dataArea:SetColType(1,"C",,,.f.) // .f. nicht sofort anzeigen, da noch nicht sichtbar
::qbEinkommensListe:dataArea:SetColType(2,"C",,,.f.) // .f. nicht sofort anzeigen, da noch nicht sichtbar
::qbEinkommensListe:dataArea:SetColType(3,"C",,,.f.)
::qbEinkommensListe:dataArea:SetColType(4,"N",,"@e 999,999.99",.f.)
::qbEinkommensListe:dataArea:SetColType(5,"N",,"@e 999,999.99",.f.)
::qbEinkommensListe:heading:SetAlignment(2,XBPALIGN_HCENTER,.f.) // .f. nicht sofort anzeigen, da noch nicht sichtbar
::qbEinkommensListe:heading:SetAlignment(3,XBPALIGN_HCENTER,.f.)
::qbEinkommensListe:heading:SetAlignment(4,XBPALIGN_RIGHT,.f.)
::qbEinkommensListe:heading:SetAlignment(5,XBPALIGN_RIGHT,.f.)
* ::qbEinkommensListe:setColWidth(54,2) // Von
::qbEinkommensListe:setColWidth(58,2) // Von
::qbEinkommensListe:setColWidth(58,3) // Bis
::qbEinkommensListe:setColWidth(74,4) // Betrag
::qbEinkommensListe:setColWidth(74,5) // VergleichsBetrag
* jetzt könnte der Browser mit einem Leersatz angezeigt werden, das will ich aber nicht.
// wenn man eine ausgefüllte Liste bekommt, dann ist das natürlich nicht anzuwenden !
asize(::aEinkommen,0)
::qbEinkommensListe:datalink:refresh()
::qbEinkommensListe:refreshAll()