Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

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

Geschrieben

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);

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...