List Control Steuerelement

bukem

Mitglied
Hi,

ich versuche mich gerade an einem List Control Steuerelement. Dort versuche ich zeilen und spalten einzufügen diese dann mit daten zu füllen nur klappt es mit keinem meiner versuche. Ich habe da eine denkfehler und kom nicht drauf.

Hab schon in der MSDN und im forum ( codeprojece und codeguru ) geschaut. aber mir ist es immer noch nicht klar.

Wie kann ich zeilen und spalten hinzufügen ? ( dynamisch augfbauen )
Wie kann ich ein titeltext den spalten geben ?
Was hat es mit subitems auf sich?
Wie spreche ich die einzelen inhalte an ?
Wie kann ich einzelen items selectiren und den wert(pos) erfahren.
Was sind Groups ?

Soll für ein Ansicht ein Tabellen für eine Datenbank sein.

Kann mit jemand dabei helfen ?

tnx

alex
 
>Wie kann ich zeilen und spalten hinzufügen ? ( dynamisch augfbauen )

Immer zuerst Spalten hinzufügen. Geht mit InsertColumn. Dabei kann man auch den Namen der Column angeben. Spalten gibt es NUR in der Report-Ansicht!

>Wie kann ich ein titeltext den spalten geben ?

Siehe oben.

>Was hat es mit subitems auf sich?

Wenn mehr als eine Spalte da ist, bezeichnen die Subitems die Felder einer Zeile. Mit InsertItem wird immer eine Zeile angelegt, der Text geht dann automatisch in SubItem 0. Die Zellen rechts davon sind dann SubItem 1 bis...

>Wie spreche ich die einzelen inhalte an ?

Die Zeile mit dem Index des Items, die Zellen rechts über SubItem-Index. Mit SetItemText und den beiden Indices kannst du den Inhalt des Feldes setzen.

>Wie kann ich einzelen items selectiren und den wert(pos) erfahren.

Da die ListControl Mehrfachselektion unterstützt, gibt es kein SelectItem. Um ein einzelnes Item zusätzlich zu selektieren, SetItemState mit LVIF_STATE und LVIS_SELECTED benutzen.
Den Wert (Text?) kannst du mit GetItemText erfahren.

>Was sind Groups ?

Keine Ahnung.
 
Ahh

oki werd ich mal versuchen

Eine frage zu deiner meinung, ist die darstellung einer datenbank ansicht besser mit List control oder als FlexGrid ( Active-X) zu machen ? Mir geht es da um die schnelligkeit der darstellung bei einer großen anzahl von datensätze.

besten dank

Alex
 
Da ist glaube ich FlexGrid besser geeignet, die bietet da ja echte Zellen, die ListControl ist ja mehr eine Liste (ein Item pro Zeile), und bietet da nur begrenzte Unterscheidungsmöglichkeiten bei den SubItems.
 
Die sind in der MSDN eigentlich aussagekräftiger, ma guggen:

// Spalten hinzufügen
m_ListDaten.InsertColumn( 0, "Name", LVCFMT_LEFT, 70 );
m_ListDaten.InsertColumn( 1, "Alter", LVCFMT_LEFT, 100 );

// Items hinzufügen
int iItem = m_ListDaten.InsertItem( "Wullewatz" );

// Subitem-Text setzen
m_ListDaten.SetItemText( iItem, 1, "17 * PI" );

// Text holen
CString cstrText = m_ListDaten.GetItemText( 0, 1 ); // iItem, iSubItem
 
// Spalten hinzufügen
m_ListDaten.InsertColumn( 0, "Name", LVCFMT_LEFT, 70 );
m_ListDaten.InsertColumn( 1, "Alter", LVCFMT_LEFT, 100 );

Leider kommt der spalten name nicht ?



// Items hinzufügen
int iItem = m_ListDaten.InsertItem( "Wullewatz" );


Muss das nicht so heißen

// Items hinzufügen
int iItem = m_ListDaten.InsertItem( 0, "Wullewatz" );


hab alles kopiert und laufen gelassen leider bekomme ich keine spalten titel keine ahnung warum einscheinend mag mich das listcontrol nicht :-(

tnx alex
 
Zu InsertItem, ja klar, mit 0 vorne dran.

Keine Spalten-Titel: Hast du LVS_REPORT (Bericht-Ansicht) an? Ist auch NICHT der Styles "keine Spalten-Header" (warum müssen die Rinder die umbenennen, wieso nicht den Style im Editor direkt angeben) an?
 
Hi, nun klappst mein gott was für ein auswand für eine lsite :)

aber ich füge mit einen while schleife datensätze in die list ein nur das der erste eintrag noch an erste stelle steht dann aber mit dem lezten datensatz abwärtz angezeigt wird ?

alex
 
Das haben die seltsam gemacht, setze bei InsertItem als Index einfach m_ListControl.GetItemCount() ein. Dann wird es immer an letzter Stelle eingefügt.
 

Neue Beiträge

Zurück