Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Probleme mit CGridCtrlDemo und Richedittext

Empfohlene Antworten

Veröffentlicht

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

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

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.

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

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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.