Filou Geschrieben 19. April 2006 Geschrieben 19. April 2006 Hi, ich möchte gern einen Eintrag in meinem ListCtrl umbenennen können. So wie man Dateien im Explorer umbenennt. Mit welcher Funktion macht man denn das? Zitieren
Klotzkopp Geschrieben 19. April 2006 Geschrieben 19. April 2006 Schau mal hier rein: http://forum.fachinformatiker.de/c-compiler-ides-apis/80302-clistcontrol-direkt-bearbeiten.html Zitieren
Filou Geschrieben 19. April 2006 Autor Geschrieben 19. April 2006 Danke für den Hinweis :hells: Hab jetzt bei Codeprojekt eine Demo Anwendung runtergeladen und auch die Funktion StartEdit und EndEdit gefunden. Aber das lässt sich wohl nicht so ohne weiteres in mein Programm einbauen. Schaut nämlich sehr kompliziert aus und ICH NIX VERSTEHEN!! Weil dazu gibts ja keine Hilfe und kompilieren lässt sichs bei mir nicht. Stürtr gleich ab. BOOL CReportCtrl::StartEdit(int nItem, int nSubItem) { // Get the grid width and height if (!m_bAllowEdit || !_IsValidIndex(nItem) || nSubItem < 0 || nSubItem >= GetColumnCount()) return FALSE; if (m_ptEditting.x == nItem && m_ptEditting.y == nSubItem) return TRUE; EndEdit(TRUE); m_ptEditting.x = nItem; m_ptEditting.y = nSubItem; SetAllItemStates(RC_ITEM_SELECTED, RC_ITEM_UNSELECTED); // unselect all SetItemStates(m_ptEditting.x, RC_ITEM_SELECTED | RC_ITEM_FOCUSED); // determine editbox font and alignment const DWORD FMT = _GetHeaderTextFormat(nSubItem); if (FMT != m_dwPrevEditFmt) { m_dwPrevEditFmt = FMT; // Funny thing: // Changing CEdit style among ES_LEFT, ES_CENTER, ES_RIGHT at runtime works // sometimes and fails other times. It just cannot guarantee to be succeed. // So I decided to destroy and recreate the CEdit every time when the text // format changes. if (m_pWndEdit->GetSafeHwnd() != NULL) m_pWndEdit->DestroyWindow(); if (!m_pWndEdit->Create(ES_AUTOHSCROLL | ES_NOHIDESEL | WS_CHILD | WS_BORDER | FMT, CRect(0, 0, 1, 1), this, 0)) return FALSE; } else { if (m_pWndEdit->GetSafeHwnd() == NULL && !m_pWndEdit->Create(ES_AUTOHSCROLL | ES_NOHIDESEL | WS_CHILD | WS_BORDER | FMT, CRect(0, 0, 1, 1), this, 0)) { return FALSE; } } m_pWndEdit->SetFont(GetFont()); CRect rcEdit; ListView_GetSubItemRect(GetSafeHwnd(), m_ptEditting.x, m_ptEditting.y, LVIR_LABEL, &rcEdit); if (m_ptEditting.y > 0 && GetImageList() != NULL && GetItemImage(m_ptEditting.x, m_ptEditting.y) >= 0) rcEdit.DeflateRect(16, 0, 0, 0); // Move the editbox to that grid, obtain text from the grid, display the // editbox, and, finally, highlights all text in the editbox and set the // windows focus to the editbox. m_pWndEdit->MoveWindow(&rcEdit); m_pWndEdit->SetWindowText(GetItemText(m_ptEditting.x, m_ptEditting.y)); m_pWndEdit->ShowWindow(SW_SHOW); m_pWndEdit->SetSel(0, -1); m_pWndEdit->SetFocus(); return TRUE; } Zitieren
Klotzkopp Geschrieben 19. April 2006 Geschrieben 19. April 2006 Hab jetzt bei Codeprojekt eine Demo Anwendung runtergeladen und auch die Funktion StartEdit und EndEdit gefunden.Wenn es nur um die erste Spalte geht, brauchst du nichts von Codeproject. kompilieren lässt sichs bei mir nicht.Wenn es sich nicht kompilieren lässt, dann rück mit der Fehlermeldung raus. Stürtr gleich ab.Was sich nicht kompilieren lässt, kann nicht abstürzen Zitieren
Filou Geschrieben 19. April 2006 Autor Geschrieben 19. April 2006 Sorry, etwas doof ausgedrückt... Es lässt sich kompilieren läuft aber net. Hier knallts: CReportCtrl::PreSubclassWindow() line 935 + 37 bytes Ich möchte nicht nur die erste Spalte umbenennen. Man soll irgeneine Spalte anklicken und dann im Kontextmenü auf "Umbenennen" klicken können. Du kannst Dir das Projekt hier runter laden: http://www.codeproject.com/listctrl/ReportControl.asp Vielleicht läufts ja bei Dir?! Zitieren
Klotzkopp Geschrieben 19. April 2006 Geschrieben 19. April 2006 Bei läuft das Demoprojekt prima. Mit VC6 und VC7.1. Zitieren
Filou Geschrieben 19. April 2006 Autor Geschrieben 19. April 2006 Oh mann, sorry! Ich hab das Projekt in dem Unterordner geöffnet. Dachte ich brauch das ListView. Ich habe diese Struktur net kapiert. Dachte das sind mehrere Projekte zusammengefasst wo es um verschiedene Themen geht... Jetzt kann ichs auch öffnen. Bin gespannt ob ich raus bekomme wie die das gemacht machen. Jetzt muss ich aber schluss machen. Hab noch einen Termin. Bis morgen!! Bin mir sicher ich brauche Dich nochmal Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.