Mehrere Spalten in Memo-Feld...
-
ich benutze den borland c++ builder 6 - personal...
also ich habe folgendes problem:
bei meinem programm wird eine text-datei eingelesen und soll angezeigt werden im programm. allerdings soll die datei in mehrere spalten aufgeteilt werden, deren grösse man mit einem "HeaderControl" ändern kann. da ich aber keine ahnung habe wie das geht mit den spalten, habe ich jetzt für jede spalte ein einzelnes memo-feld erstellt...
also eigentlich sollte es ungefähr so aussehen wie im explorer, wo es verschiedene spalten gibt für den dateinamen, dateigrösse, datum, etc...
so wie ich es aber gemacht habe mit mehreren memofeldern, ist es mir allerdings ein rätsel wie ich mit ner scrollleiste von einem memofeld auch die andern spalten (memofelder) steuern kann, so dass nicht nur im aktuellen memofeld nach oben oder unten gescrollt werden kann.
auch wenn ich mein problem nur sehr schlecht und ungenau umschrieben habe, hoffe ich, dass jemand einigermassen kapiert, was ich machen will, und mir sagen kann, wie ich das problem mit mehreren spalten in den griff bekomme, das ich jetzt aus meiner sicht ziemlich schlecht gelöst habe. also ist es beispielsweise möglich in einem memo-feld mehrere spalten zu erstellen ?
vielen dank für euer verständnis und eure hilfe für einen armen, kleinen anfänger wie mich

-
Tja... nimm doch ListView. Oder StringGrid.
-
vielen dank für den tipp, jedoch wäre ich noch sehr froh wenn du mir sagen kannst, wie ich bei ner "ListView" einen eintrag zur laufzeit in einer bestimmten spalte hinzufüge...
-
Auf "Report" hast du gestellt?
Dann mit SubItems.
-
ja ich habe report ausgewählt und ich kann auch im borland builder nen eintrag in ne spalte hinzufügen, aber wie das zur laufzeit geht, habe ich keine ahnung
-
also wenigstens habe ich jetzt herausgefunden, dass mit "AddItem" ein neuer eintrag hinzugefügt werden kann. dabei müssen als argumente der text sowie ein objekt angegeben werden. der text ist ja danach die beschriftung des eintrages, allerdings habe ich keine ahnung wofür das objekt ist, welches man angeben muss, und des weiteren weiss ich auch immer noch nicht, wie man ein SubItem einfügt...
-
Sieh dir das Beispiel zu TListItems::Add in der Hilfe an.
Und das mit dem "Objekt" hast du glaube ich geträumt.

-
also wegen dem objekt meinte ich eigentlich folgendes:
auszug aus hilfe...
*
Die Methode AddItem fügt dem Listenfeld einen Eintrag hinzu.virtual void __fastcall AddItem(AnsiString Item, System::TObject* AObject) = 0;
Beschreibung
AddItem fügt einen Eintrag am Ende der Liste hinzu. Der Eintrag kann mit einem Objekt verknüpft werden.
Item ist der Text, der den Wert des Eintrags darstellt. Dieser String wird im Listenfeld angezeigt.
AObject ist ein Objekt, das mit dem Eintrag verknüpft wird. Das Listenfeld wird nicht zum Eigentümer dieses Objekts. Das Objekt wird also nicht automatisch freigegeben, wenn der Eintrag gelöscht wird.*
die methode "add" die du beschrieben hast, mit der kann ja beispielsweise in einer "ListBox" ein eintrag hinzugefügt werden, aber in einer "ListView" finde ich keine solche methode...
-
Dein Zitat stammt aus der Hilfe zu TListBox, alle Vorschläge hier beziehen sich aber auf TListView.
-
tut mir leid ich bin noch ein noob im programmieren und anscheinend zu dumm, um eure vorschläge zu verstehen...
-
Vielleicht solltest du dich dann erstmal mit der effizienten Benutzung der BCB-Hilfe vertraut machen.
-
ja, das sollte ich wohl

Edit:
Vielen Dank Jansen und Plemplem, dank eurer Hilfe (ListView bzw. ListItem) konnte ich das Problem doch noch lösen, so wie ich es mir vorgestellt habe

-
ist es irgendwie möglich für die einzelne zeilen in dem "ListView"-Fenster die Farbe des Textes zu ändern ?
ich weiss nur, dass man mit "ListView->Font->Color" die Textfarbe für alle Zeilen ändern kann...
-
Im OnDrawItem-Event kannt du jede "Zelle" (und somit auch die Zeilen) nach Herzenslust einfärben.
OnDraw-Beispiele findest du u.a. in der FAQ unter "StringGrid" und "ListBox".Das alles hat aber nichts mehr mit der ursprünglichen Fragestellung zu tun. In Zukunft bitte die Faustregel beachten: ein Thema pro Thread, ein Thread pro Thema.
-
vielen dank
