Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Probleme mit Listenelement...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.08.2003, 17:46 Uhr
~Jerusalem68
Gast


...genauer mit dem befüllen verschiedener Spalten. Habe ein solches Listenelement in einer Anwendung angelegt, lege mehrere Spalten (Columns) an und möchte diese mit Rechenergebnissen füllen. Mein Problem liegt im Moment darin, das ich es einfach nicht hinbekomme zum befüllen der weiteren Spalten auf diese zu verweisen. Ich bin nicht ganz so versiert in MFC/Visual C++ und hoffe hier kann mir jemand helfen.

Möchte SetColumn(...) benutzen, kann ir jemand zeigen wie, ich habe ein Problem mit dem zweiten Argument, auf was muss das verweisen??

Es kann eigentlich kein großes Problem sein, aber ich finde nirgends ein Beispiel dazu und in der Literatur die mir zur Verfügung steht habe ich auch nichts gefunden was mir geholfen hat.

Ach ja, wenn ihr weitere Infos benötigt, liefer ich gerne, will ja geholfen bekommen! Danke euch!!

Gruß Jerusalem68
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.08.2003, 18:24 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Probier mal folgendes:
füg ganz oben folgendes ein:

C++:
#define COLUMNS 2

static _TCHAR *_gszColumnTitle[COLUMNS] =
{
    _T("Column1"), _T("Column2")
};


Dann kannst du in z.B. OnInitialUpdate ganz bequem

C++:
for(int i = 0; i < COLUMNS; i++)
{
   m_cList.InsertColumn(i,_gszColumnTitle[i],LVCFMT_LEFT,100,-1);
}


schreiben
Und ändern kannst du z.B. die erste Spalte mit z.B.

C++:
LVCOLUMN col;
col.mask = LVCF_TEXT;

m_cList.GetColumn(0, &col);

col.pszText = "Das ist ein Test";
m_cList.SetColumn(0, &col);



mfg
--

Dieser Post wurde am 05.08.2003 um 18:25 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.08.2003, 18:14 Uhr
~Jerusalem68
Gast


Leider ändere ich nur den Text im Spaltenkopf, ich möchte aber gerne den Spaltenkopf behalten und die Zeilen unter dem Kopf mit Daten füllen!

void CZahnprofilDlg::FillAusgabeList(unsigned int iSchritt, double dRadius, double dBogenlaenge){

LVCOLUMN col;
col.mask = LVCF_TEXT;

m_ctlListenelement.GetColumn(0, &col);

col.pszText = "Hallo Fuchs";

// Ist ganz nett, ändert mir aber leider nur den
// Titel der Spalte, ich möchte aber gerne die
// Zeilen mit den übergebenen Werten füllen!?!

m_ctlListenelement.SetColumn(0, &col);

// Kann ich hierfür nicht vorher irgendwie auf die entsprechende Zeile
//verweisen??
m_ctlListenelement.InsertItem((int)iSchritt,m_strAusgabeSchritt);
}

Die Variable iSchritt passt zufällig auch zum Index für die zeilen, was mir fehlt ist etwas um jede der übergebenen Werte in eine andere Spalte zu füllen?!

Vielleicht bin ich auch einfach nur zu doof?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.08.2003, 19:09 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
zwar nicht an Deine Funktion angepasst, aber etwa so:

C++:
static CString text[2][2] = {
    _T("12345"), _T("DortDorf"),
    _T("67890"), _T("HierStadt")
};

m_list.InsertColumn(0,_T("Plz"),LVCFMT_LEFT,96);
m_list.InsertColumn(1,_T("Ort"),LVCFMT_LEFT,96);
for(int i=0; i < 2;i++){
    m_list.InsertItem(i,(LPCTSTR) text[i][0]);
    m_list.SetItemText(i,1, (LPCTSTR) text[i][1]);
}


--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 06.08.2003 um 19:11 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.08.2003, 21:00 Uhr
~Jerusalem68
Gast



Zitat:
Uwe postete
Hallo,
zwar nicht an Deine Funktion angepasst, aber etwa so:

C++:
static CString text[2][2] = {
    _T("12345"), _T("DortDorf"),
    _T("67890"), _T("HierStadt")
};

m_list.InsertColumn(0,_T("Plz"),LVCFMT_LEFT,96);
m_list.InsertColumn(1,_T("Ort"),LVCFMT_LEFT,96);
for(int i=0; i < 2;i++){
    m_list.InsertItem(i,(LPCTSTR) text[i][0]);
    m_list.SetItemText(i,1, (LPCTSTR) text[i][1]);
}





OK, es ändert mir die Spaltentitel, jedoch werden zumindest bei mir die
ganzen Werte in die erste Zeile geschrieben??! Ich verstehe es nicht,
es kann doch kein Problem sein, es wird ja tausendfach gemcht?!

Vielleicht weiß ja noch jemand etwas?

Aber trotzdem Danke!!!!!

Jerusalem68
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.08.2003, 22:04 Uhr
mike
Pinguinhüpfer
(Operator)


Hmmm...
m_cList.SetColumn(0, &col); Ändert den Spaltentitel der 1. Spalte
InsertItem(0,"Item 1") Fügt ein Elemnt ein - aber nur in die 1. Spalte. Jedes weitere Element wird mit SetItemText gesetzt.
In Excel Sparche würde das heißen
Den Wert von A1 setzt du mit InsertItem den von B1,C1,D1,.. mit SetItemText
Den Wert von A2 setzt du mit InsertItem den von B2,C2,D2 mit SetItemText

mfg
--

Dieser Post wurde am 07.08.2003 um 22:05 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.08.2003, 15:28 Uhr
~Jerusalem68
Gast


Ich habe es geschafft !!!

Ich danke euch,
das mit dem ...InsertItem() setzt wie du gesagt hast das erste Element,
mit ...SetItemText() kann ich alle folgenden Elemente in der Zeile füllen.
Das hatte ich ja auch schon mal probiert, aber durch meinen eigenen Fehler hat dies zunächst nicht funktioniert.

Habe mich dann in einer Ruhigen Minute, so gegen 2:30Uhr mal darangesetzt und habe meinen Fehler beseitigt.

Danke euch allen die mir mit Tipps zur Seite standen!

Gruß

Jerusalem68
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: