Edit Control - disabled = true - farbe ändern?
-
moin,
wie kann man bei einer Edit Control die Disabled ist die Farbe ändern, nun ist sie ja so grau...aber leider gibt es dar keine Einstellungen...;-(
vielleicht weiss das jemand!danke
-
Beim disablen habe ich noch keinen Weg gefunden.
Aber schreibgeschützt, dann kannst du die Farben IMHO ändern. Hast du das schon versucht? (Dann sollte das mit WM_CTLCOLOR gehen.)
-
wie stell ich schreibgeschützt ein bei der edit control? dachte ich lieg da mit disabled richtig...
bye
-
properties styles read only
-
Mit SetReadOnly geht das.
-
ok hab nun das read only aktiviert...disabled wieder ausgeschalten...hm..aber die frabe kann ich noch nicht ändern;-( wie soll das mit WM_CTLCOLOR gehen?
cu
-
Teste doch mal die Forumssuche.
Hier mal ein Ergebnis: http://www.c-plusplus.net/forum/viewtopic-var-t-is-87118-and-highlight-is-wmctlcolor.html
-
estartu_de schrieb:
Teste doch mal die Forumssuche.
Hier mal ein Ergebnis: http://www.c-plusplus.net/forum/viewtopic-var-t-is-87118-and-highlight-is-wmctlcolor.htmldanke, das hab ich schon probiert...aber wenn ich das mache und es steht noch kein text in der edit control dann ändert sich nur die hintergrundfarbe der ersten zeile...stehen 2 Zeilen in der Edit Control dann haben nur die 2 Zeilen die hintergrundfarbe grün..
möchte aber gerne die hintergrundfarbe der ges. edit control ändern aber wie!?
vielleicht geht das in der OnInitDialog über die Control variable auf die Edit Control??!
tschüss..HBRUSH Client_MessageDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if (pWnd->GetDlgCtrlID()== IDC_EditControl_Receive) { pDC->SetBkColor(RGB(0,255,255)); //Hintergrundfarbe } // TODO: Return a different brush if the default is not desired return hbr; }
-
Guck mal, du hast die Lösung vor der Nase:
// TODO: Return a different brush if the default is not desired
So läßt man den Hintergrund deaktiviert aussehen (Listboxen sind dann trotzdem weiß, das fand ich iritierend und habe es so korrigiert.):
HBRUSH B = CreateSolidBrush(::GetSysColor(COLOR_3DFACE)); //Hintergrundfarbe return (HBRUSH) B;
Okay?
-
hm....so geht das auch nicht;-(
jetzt ist der static text in dem dialog auch weiss;-( und das andere edit control welches nicht readonly ist auch nur 1 zeile weiss....und das edit control welches readonly ist, da ist auch nur 1 zeile weiss, rest ist grau...
hm?cu
-
öhm versteh jetzt nur ich das grad nicht so richtig?
Welche Edits sollen denn farblich geändert werden und welche nicht?
-
tja ich hab ja einen dialog mit einer edit control die ist read only, eine edit control die ist ganz normal, 2 buttons, 2 static textfelder hab ich...
will nur den hintergrund der edit control die read only ist ändern, also den gesamten hintergrund, egal ob da was schon drinnen steht oder nicht...
aber diese vorschläge bis jetzt waren erfolglos;-(
n8
-
Zeig doch mal den aktuellen Code der Funktion.
Ich habe dir ja nur Bauteile geliefert, wie du die nun eingebaut hast ist auch noch die Frage.
-
Hi, vielleicht hilfts was wenn du noch eine Zeile in deine Funktion einfügst, also so:
if (pWnd->GetDlgCtrlID()== IDC_EditControl_Receive) { pDC->SetBkMode(TRANSPARENT); pDC->SetBkColor(RGB(0,255,255)); //Hintergrundfarbe }
-
im mom schaut es so aus, so gehts aber auch nicht;-(
vielleicht muss man das ja anders machen?
hab was interessantes gefunden:
http://www.codeproject.com/editctrl/CReadOnlyEdit.asp
hm aber die leiten ein eigenes CReadOnlyEdit ab...geht das nicht einfacher?HBRUSH Client_MessageDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if (pWnd->GetDlgCtrlID()== IDC_EditControl_Receive) { pDC->SetBkMode(TRANSPARENT); pDC->SetBkColor(RGB(255,255,255)); //Hintergrundfarbe } // TODO: Return a different brush if the default is not desired return hbr; }
-
Ahso, ich bin jetzt von einem Disbaled Edit ausgegangen. Für ein schreibgeschütztes Eingabefeld hat dir estartu_de ja schon die Lösung gepostet.
Erstelle einen Brush und gib ihn in der OnCtlColor Funktion für das Eingabefeld zurück und schon ist dein Hintergrund farbig.
-
Panschev schrieb:
Ahso, ich bin jetzt von einem Disbaled Edit ausgegangen. Für ein schreibgeschütztes Eingabefeld hat dir estartu_de ja schon die Lösung gepostet.
Erstelle einen Brush und gib ihn in der OnCtlColor Funktion für das Eingabefeld zurück und schon ist dein Hintergrund farbig.
also wenn du diese lösung meinst:
HBRUSH B = CreateSolidBrush(::GetSysColor(COLOR_3DFACE)); //Hintergrundfarbe return (HBRUSH) B;
dann funktioniert die aber nicht wirklich (dh.: am anfang hat nur die erste zeile einen weissen hintergrund, wir kommt eine neue textzeile hinzu dann ändert sich erst die hintergrundfarbe mit)...probiers mal selber aus, dann siehst es auch...
cu
-
// Brush für den Hintergrund des Eingabefeld festlegen HBRUSH hBGEdit = CreateSolidBrush(RGB(0, 0, 0)); // TODO: Attribute des Gerätekontexts hier ändern if (pWnd->GetDlgCtrlID()== IDC_EDIT1) { //pDC->SetBkMode(TRANSPARENT); pDC->SetBkColor(RGB(0,255,255)); //Hintergrundfarbe pDC->SetTextColor(RGB(255,133,33)); return hBGEdit; }
Das funktioniert bei mir wunderbar und Code von estartu_de ist das gleiche, du musst halt nur die Farbe anpassen, z.B.:
HBRUSH B = CreateSolidBrush(::GetSysColor(RGB(0,255,255))); //Hintergrundfarbe return (HBRUSH) B;
-
hi, nun funktioniert es auch;-)
if (pWnd->GetDlgCtrlID() == IDC_EditControl_Receive) { HBRUSH hBGEdit = CreateSolidBrush(RGB(255, 255, 255)); return hBGEdit; }
ich schreib ja sowas in die edit control rein:
<Sabine> Hallo <--- in dieser zeile den Text rot
<torti> hi <--- in dieser zeile den Text blau
<torti> wie gehts? <--- in dieser zeile den Text blau
usw...kann ich also zeilenweise die Textfarbe festlegen? stell ich mir problematisch vor, wenn es schon 10 zeilen gibt...
danke noch mal;-)
ciao
cu
-
Ich glaube, dafür brauchst du dann ein RichEdit.
Oder eine Listbox (wenn du nichts editieren willst).