Veröffentlicht 19. Februar 200817 j Viele kennen bestimmt das Projekt CGridCtrlDemo von Chris Maunder. Es gibt auch ein Grid mit CRichEditCtrl Unterstützung (CInPlaceRichEdit, ES_WANTRETURN | ES_MULTILINE, usw.). Leider funktioniert es nicht so richtig. Erstes Problem: Wenn ich mehre Textzeilen in einer Zelle erfasse und diese dann verlasse so wird immer nur die erste Zeile angezeigt. Ich hab versucht die Funkt. Drawtext() anzupassen (DT_CALCRECT |DT_WORDBREAK). Ohne sichtbaren Veränderungen. Zweites Problem: In der Zelle markiere ich eine(n) Text bzw. Buchstabe und verändere die Schriftgröße. Wird auch richtig ausgeführt, aber die Zellenhöhe (row) wird nicht bzw. falsch angepaßt. Ist ja auch logisch da bei zeichnen und rowheight ermitteln Richedittext verwendet wird. Mein Problem ist, wann und welcher Stelle ich den Richedittext in ein String umwandeln soll!? Hat jemand eine Idee? mfg, kaldemor
19. Februar 200817 j Viele kennen bestimmt das Projekt CGridCtrlDemo von Chris Maunder. Das möchte ich bezweifeln. Alles, was Google dazu ausspuckt, stammt offenbar von dir selbst. Hast du vielleicht einen Link?
20. Februar 200817 j Genau so einen Grid suche ich bzw. versuche es zu programmieren. TAdvStringGrid example 30 oder im diesem Projekt http://www.codeproject.com/KB/miscctrl/gridctrl.aspx hab ich die Projektklassen von http://www.codeproject.com/KB/miscctrl/mdricheditgrid.aspx eingefügt. DT_SINGLELINE durch DT_WORDBREAK ersetzt. Bei Create von Richeditfeld setze ich die Parameter ES_MULTILINE und ES_WANTRETURN um multiline usw. zu unterstützen CInPlaceRichEdit::CInPlaceRichEdit() { DWORD dwEditStyle = WS_BORDER|WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL|ES_MULTILINE| ES_WANTRETURN|dwStyle; if (!Create(dwEditStyle, rect, pParent, nID)) return; } Meiner meiner Meinung liegt das Problem in der Funktion BOOL CGridCellRich::Draw() Danke für die Antworten! mfg, kaldemor
20. Februar 200817 j Das Problem ist nicht das In-Place-Steuerelement, sondern das ganz normale Rich Edit Control, das zum Rendern der Texte benutzt wird. In CRichEditGridDlg::OnInitDialog muss man bei m_RichEditTemp.Create zusätzlich ES_MULTILINE angeben. Zusätzlich muss man in CInPlaceRichEdit::OnChar die Sonderbehandlung der Entertaste entfernen und im In-Place-Steuerlement ES_MULTILINE und ES_WANTRETURN hinzufügen.
21. Februar 200817 j Entschulding, hab die Frage etwas falsch gestellt. Die Probleme mit Create(..|ES_MULTILINE|ES_WANTRETURN) sowie mit der Eingabe im Richeditfeld (OnChar) habe gleich am Anfang gelöst. Die eigentlichen Probleme liegen mit Darstellung von mehrzeiligen Text, wo auch Returns (\r\n) vorhanden sind, Fontgröße ändern. Es immer nur die erste Zeile sichtbar. Danke, kaldemor
22. Februar 200817 j Es immer nur die erste Zeile sichtbar.Wie du das beheben kannst, habe ich auch schon geschrieben.
22. Februar 200817 j Jetzt weiß ich es warum ich es nicht funktiniert hat. Im Projekt gridctrl_demo226 wird ein Benutzersteuerelement IDC_GRID verwendet. In der Datei GridCtrlDemo.rc hab ich die Style wie folgt CONTROL "Custom1",IDC_GRID,"MFCGridCtrl",WS_TABSTOP |ES_MULTILINE|ES_WANTRETURN,7,7,477,297 geändert. Projekt bereinigt und neu erstellt. Das hat leider keine Änderungen bei Darstellung von mehrzeiligen Text bewirkt. Die Lösung: Benutzersteuerelement IDC_GRID löschen und Element, wie Projekt RichEditGrid erstellen: m_RichEditTemp.Create (WS_CHILD|ES_MULTILINE|ES_WANTRETURN, CRect(0,0,0,0),this,IDC_RICHEDIT_TEMP); Vielen Dank für Hilfe an Klotzkopp! Mfg, kaldemor
22. Februar 200817 j Ich bin auch so blind! Es ist ja nicht IDC_GRID Element gemeint sondern Richeditelement! Problem in beiden Projekten behoben! m_RichEditTemp.Create (WS_CHILD|ES_MULTILINE|ES_WANTRETURN, CRect(0,0,0,0),this,IDC_RICHEDIT_TEMP);
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.