Keine Spalten im CListCtrl??



  • code:

    BOOL CDlgProcList::OnInitDialog(){
    
    	m_ListCtrl = (CListCtrl*) this->GetDlgItem(IDC_LISTCTRL);
    
    //	m_ListCtrl->setsty
    	CRect rect;
    	m_ListCtrl->GetClientRect(&rect);
    	int nColInterval = rect.Width()/5;
    
    	m_ListCtrl->InsertColumn(0, _T("Item Name"), LVCFMT_LEFT, nColInterval*3);
    	m_ListCtrl->InsertColumn(1, _T("Value"), LVCFMT_LEFT, nColInterval);
    	m_ListCtrl->InsertColumn(2, _T("Time"), LVCFMT_LEFT, rect.Width()-4*nColInterval);
    
    	return true;
    }
    

    wenn ich nun item anlege:

    m_ListCtrl->InsertItem(0,"HALLO0");
    	m_ListCtrl->InsertItem(1,"HALLO1");
    	m_ListCtrl->InsertItem(2,"HALLO2");
    

    schreib er mir alle itemd untereinandern, und zudame seh ich keine Spaltenüberschriften??



  • CRect m_lstrect;
    	// set list control's style
    	LONG lStyle = ((CListCtrl*)GetDlgItem(IDC_LIST))->SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
    	lStyle |= LVS_EX_FULLROWSELECT;
    	((CListCtrl*)GetDlgItem(IDC_LIST))->SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 10, (LPARAM)lStyle);
        ((CListCtrl*)GetDlgItem(IDC_LIST))->SetExtendedStyle(LVS_EX_TRACKSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_ONECLICKACTIVATE | LVS_EX_TWOCLICKACTIVATE | LVS_EX_FULLROWSELECT);
        ((CListCtrl*)GetDlgItem(IDC_LIST))->GetClientRect(&m_lstrect);
        //m_ctlCopyList.LoadColumnInfo();
    
    	((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(0,"ID",LVCFMT_LEFT, 100);
    	((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(1,"Edit 1",LVCFMT_LEFT, 100);
    	((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(2,"Edit 2",LVCFMT_LEFT, 100);
    	((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(3,"Edit 3",LVCFMT_LEFT, 100);
    	((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(4,"Edit 4",LVCFMT_LEFT, 100);
    	((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(5,"Edit 5",LVCFMT_LEFT, 100);
    


  • LowFly, das ist hier kein Code-Klo.

    BorisDieKlinge: Vermutlich ist dein ListCtrl nicht auf die Bericht-Ansicht eingestellt. Das kannst du entweder im Ressourceneditor machen (wenn das aus einer Ressource kommt), oder über den Style LVS_REPORT.



  • trozdem keine spalten.. (Sieht aus wie ne normal listbox)

    wird alles untereinander geschrieben...



  • ok.. danke sieht schon besser aus..
    lowfly wollte mir wohl zeigen wie ich den STYLE im code ändere..

    Jetzt hab ich spalten.. aber trozde, schreibt er mir alle Hallos in eine splate nich in die 3 verteilt??? wieso?? *nerv*



  • Das ist wohl ein kleines Verständnisproblem: Das "Item" ist die komplette Zeile des ListCtrl. Und den Inhalt der übrigen Spalten kannst du mit SetItemText() füllen:

    m_ListCtrl->InsertItem(0,"HALLO");
    m_ListCtrl->SetItemText(0,1,"erste Spalte");
    


  • BorisDieKlinge schrieb:

    ok.. danke sieht schon besser aus..
    lowfly wollte mir wohl zeigen wie ich den STYLE im code ändere..

    Das, was LowFly da so schön kommentarlos abgeliefert (hingerotzt?) hat, hat mit deinem Problem nichts zu tun, ist fehlerhaft und IMHO ziemlich hässlich. Am besten vergisst du das.

    BorisDieKlinge schrieb:

    Jetzt hab ich spalten.. aber trozde, schreibt er mir alle Hallos in eine splate nich in die 3 verteilt??? wieso?? *nerv*

    InsertItem erzeugt eine neue Zeile. In die hinteren Spalten kannst du SetItemText schreiben.



  • Nix nerv... :p

    InsertItem macht ne neue Zeile, also tut das Programm genau, was du ihm sagst.
    Schau mal in die FAQ, da is ein Beispiel.
    Ich glaube das was du suchst heißt SetItemText.



  • das nerv war nich wegen dem programm sonder wegen meiner unfähigkeit;) 🙄



  • Hmm mal LowFly's Code analysieren ... also

    CRect m_lstrect;
        // set list control's style
        LONG lStyle = ((CListCtrl*)GetDlgItem(IDC_LIST))->SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE); // Ext. ListCtrl Styles holen
        lStyle |= LVS_EX_FULLROWSELECT; // Den styles den ex. style. ganze Zeile auswählen hinzufügen
        ((CListCtrl*)GetDlgItem(IDC_LIST))->SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 10, (LPARAM)lStyle); // ext. styles setzen
        ((CListCtrl*)GetDlgItem(IDC_LIST))->SetExtendedStyle(LVS_EX_TRACKSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_ONECLICKACTIVATE | LVS_EX_TWOCLICKACTIVATE | LVS_EX_FULLROWSELECT); // ... diesmal direkt die setextendedstyle func. anstelle der message verwendet!! woho ... aber wir machen hier mal alles doppelt ... auch net schlecht ;)
        ((CListCtrl*)GetDlgItem(IDC_LIST))->GetClientRect(&m_lstrect); // das rect des ctrl holen ... ka warum :D
        //m_ctlCopyList.LoadColumnInfo();
    
        ((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(0,"ID",LVCFMT_LEFT, 100);
        ((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(1,"Edit 1",LVCFMT_LEFT, 100);
        ((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(2,"Edit 2",LVCFMT_LEFT, 100);
        ((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(3,"Edit 3",LVCFMT_LEFT, 100);
        ((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(4,"Edit 4",LVCFMT_LEFT, 100);
        ((CListCtrl*)GetDlgItem(IDC_LIST))->InsertColumn(5,"Edit 5",LVCFMT_LEFT, 100); // nen paar Rows einfügen  ...
    

    So ... der Code ist so dermaßen grausam und unübersichtlich ... zuerst holt er die ext. styles fügt dann sein gewünschtes hinzu ... das mit messages zu machen ... k kann man ... aber dann überschreibt er die ext. style nochmal ... also war das davor für die katz 😉 dann holt er nochmal nen client rect ... wird danach net mehr benötigt ... d.h. unnütz... tjo das ganze wäre übersichtlicher wnen man am anfang sich nen CListCtrl* angelegt hätte 😉



  • naja wenigsten hat ne antwort gegeben.. jetz weis ich sogar wie man die sytle naträglich ändert;)



  • wow
    @ Evil na das ist doch mal ne kritik die sich sehen lassen kann und die ich auch ernst & annehme 😉

    zu meiner entschuldigung sei gesagt ich hab den code vor etwas längerer zeit mal sprichwörtlich zusammengezimmert. und einfach mal wieder aus der versenckung geholt. (war ein fehler)
    aber
    ((CListCtrl*)GetDlgItem(IDC_....))->
    mach ich heute noch in Dlganwendungen.

    @MFK ich weis nicht, aber warscheinlich kommst du gerade vom besagten Klo das was du an kretik ablieferst ist wie du schon sagts hingerotzt und tangiert mich peripher. naja ob hässlich oder nicht ich bin sicher man kann sich über dein gesicht, wie über jedes andere auch, bzw. über den code, steiten und diskusionsabende füllen, ob es/er nun hässlich ist oder nicht, liegt im auge des betrachters. somit wenn du willst das man das, was du von dir gibt auch ernst nimmst, solltest du dir mal ne scheibe von evil abschneiden, und kleb sie dir an deine backe. 😉

    :xmas1: :xmas2:



  • LowFly schrieb:

    MFK ich weis nicht, aber warscheinlich kommst du gerade vom besagten Klo

    Dein Diskussionsniveau passt zu deinen Code.

    LowFly schrieb:

    naja ob hässlich oder nicht ich bin sicher man kann sich über dein gesicht, wie über jedes andere auch, bzw. über den code, steiten und diskusionsabende füllen,

    Ich habe mein Gesicht aber hier nicht kommentarlos als Problemlösung hingestellt. Somit wirst du dich damit abfinden müssen, dass über deinen Code, und nicht über mein Gesicht geredet wird.

    LowFly schrieb:

    ob es/er nun hässlich ist oder nicht, liegt im auge des betrachters.

    Eben darum habe ich diesen dritten Kritikpunk (die anderen beiden hältst du anscheinend für zutreffend) ausdrücklich mit "IMHO" gekennzeichnet. Kannst ja mal eine Umfrage starten.

    LowFly schrieb:

    ((CListCtrl*)GetDlgItem(IDC_....))->
    mach ich heute noch in Dlganwendungen.

    Das ist für sich allein ja auch kein Problem. Aber wenn das so oft hintereinander steht, sollte ein erfahrener Programmierer sich doch fragen, ob das nicht auch einfacher geht.

    LowFly schrieb:

    somit wenn du willst das man das, was du von dir gibt auch ernst nimmst, solltest du dir mal ne scheibe von evil abschneiden, und kleb sie dir an deine backe.

    Du meinst, ich hätte in meinem Beitrag mehr erklären sollen? Tut mir leid, wenn ich so offensichtlich schlechten Code sehe, halte ich das normalerweise nicht mehr für notwendig. Und was fehlende Erklärung in den Beiträgen angeht, bist du der Erste, der sich an (D)Evil ein Beispiel nehmen sollte.

    Dass du selbst nicht siehst, wie schlecht dieser Code ist, sondern (D)Evils Erklärung des Offensichtlichen brauchst, um das zu erkennen, passt dann auch recht gut ins Bild.



  • weis ja nicht wo du hier ne diskusion siehst, aber anscheinend bist du jemand der es nicht schnallt wenn man nicht mit ihm reden will.

    MFK schrieb:

    Dass du selbst nicht siehst, wie schlecht dieser Code ist, sondern (D)Evils Erklärung des Offensichtlichen brauchst, um das zu erkennen, passt dann auch recht gut ins Bild

    wer lesen kann ist klar im vorteil aber du diskutierst ja lieber

    LowFly schrieb:

    zu meiner entschuldigung sei gesagt ich hab den code vor etwas längerer zeit mal sprichwörtlich zusammengezimmert. und einfach mal wieder aus der versenckung geholt. (war ein fehler)

    mehr kann man glaub ich nicht mehr sagen.
    2. ich nehm evil's kretik an weil er sachlich bleibt & nicht zwingend auf provokation aus ist.

    und wenn du die diskusion nun weiterführen willst dreh dich bitte um und quatsch mit der wand. 😉

    PS: ja ich weis ich bin ein Ar....... & mir gehts erst so richtig gut wenn mich alle hassen & bomben nach mir schmeisen. Drum Kick my Ass Baby.


  • Administrator

    LowFly schrieb:

    2. ich nehm evil's kretik an weil er sachlich bleibt & nicht zwingend auf provokation aus ist.

    Provokation? Hmmm ich will mich ja nicht einmischen, aber dein Code dort oben ist ja wirklich reif fürs Klo 😃
    Und du hast es ja eigentlich auch selber zugegeben, also wo soll da eine Provokation drin sein? 😉

    Zudem ist z.b. ein

    (CListCtrl*)...
    

    Cast ein C-Cast und kein C++-Cast. Würde ich auch drauf verzichten. Desweiteren kann man sich in einer Dialoganwendung ein Control direkt als Membervariable anlegen, dann muss man sich nicht immer die CWnd Zeiger holen und ihn casten. Und wenn schon könnte man sich eben eine Variable anlegen *g*

    Zudem hat es mit dem Problem ja wirklich nix zu tun. Du erklärst ihm ja nicht, wie er Kolonnen füllt, sondern nur wie er in den Report Style wechseln kann *g*

    Naja ... Aber trotzdem finde ich es zumindest nett, dass du helfen wolltest 😃

    Grüssli



  • LowFly schrieb:

    weis ja nicht wo du hier ne diskusion siehst, aber anscheinend bist du jemand der es nicht schnallt wenn man nicht mit ihm reden will.

    Für jemanden, der nicht reden will, schreibst du aber recht viel und auch recht direkt:

    LowFly schrieb:

    @MFK

    LowFly schrieb:

    wer lesen kann ist klar im vorteil aber du diskutierst ja lieber

    LowFly schrieb:

    zu meiner entschuldigung sei gesagt ich hab den code vor etwas längerer zeit mal sprichwörtlich zusammengezimmert. und einfach mal wieder aus der versenckung geholt. (war ein fehler)

    mehr kann man glaub ich nicht mehr sagen.

    Schade. Auch schade, dass diese Entschuldigung absolut nichts darüber aussagt, ob und wann du geschnallt hast, dass der Code schlecht ist.

    2. ich nehm evil's kretik an weil er sachlich bleibt & nicht zwingend auf provokation aus ist.

    (D)Evil schrieb:

    dermaßen grausam ... für die katz ... unnütz

    findest du also sachlicher als

    MFK schrieb:

    hingerotzt ... hat mit deinem Problem nichts zu tun ... fehlerhaft ... hässlich

    Sei so nett und erklär mir, wie du "sachlich" definierst. Ich vermute da einigen Unterhaltungswert.

    Ich vermute, du kommst mit (D)Evils Kritik nur deswegen besser zurecht, weil er die Fehler in hirngerechte Häppchen aufbereitet hat. Alles, was darüber hinausgeht, scheitert vermutlich an deiner Kick-my-ass-Mentalität.

    und wenn du die diskusion nun weiterführen willst dreh dich bitte um und quatsch mit der wand. 😉

    Süß.



  • LOL 😃 er redet mit der wand 😃 😮


Anmelden zum Antworten