Startinhalt von Edit Control automatisch löschen

noel1982

Mitglied
Hallo!

Ich habe in einem Dialog eine Textbox eingefügt, in die der Benutzer Begriffe eingeben kann. Beim Initialisieren habe ich einen "Startinhalt" angegeben, also z.B. "Bitte hier Ihren Namen eingeben". Wenn der Benutzer nun jedoch das Feld ausfüllen will, so muss er zunächst den Startinhalt löschen, was doch recht umständlich ist...wie kann ich bewirken, dass durch einen Klick in die Textbox der ursprüngliche Startinhalt automatisch verschwindet? (wie es ja bei professionellen Anwendungen auch der Fall ist)


Vielen Dank!
 
Beim Klicken in ein Editcontrol bekommt dieses automatisch den Fokus zugewiesen. D.h. weitere Texteingaben gehen in dieses Feld hinein. Es gibt dafür eine Windows-Message, die du abfangen kannst. Das wäre eine gute Stelle, um die Editbox zu löschen. OnFocus wäre da ein Stichwort. Wenn du nicht weiterkommst, frag noch mal.
 
Danke für die Antwort :)

Allerdings weiß ich nicht wirklich, wie und wo ich das genau mit OnFocus anstellen soll (hab nicht so wirklich viel Programmiererfahrung...).
Wäre deshalb für genauere Tipps dankbar :)

Gruß noel1982.
 
Hallo,
ich habe ein ähnliches Problem: Den Startinhalt eines Edit Controls kann ich löschen, indem (wie oben beschrieben) die SetFocus-Nachricht abfange und die CString-Membervariable des Edit Controls auf "" setze. Habe ich jedoch zwei Edit Controls, die ich beide so programmiere, löscht das eine Edit Control das andere und umgekehrt:

void CDivision2Dlg::OnEnSetfocusZahl1()
{
m_CStringZahl1="";
UpdateData(FALSE);
}

void CDivision2Dlg::OnEnSetfocusZahl2()
{
m_CStringZahl2="";
UpdateData(FALSE);
}

Was mache ich falsch?

Gruß
nase1970
 
Hallo MCoder,
nein da liegt keine Vertauschung vor, es funktioniert zuerst ja auch: Wenn ich in den ersten Edit Control klicke, wird diese gelöscht (vorher steht ein Anfangstext darin). Das gleiche passiert mit dem zweiten Edit Control auch. Wenn ich dann aber z.B. eine Zahl in die erste Box eingebe und dann die zweite anklicke (um auch hierhinein eine Zahl zu schreiben) wird die erste Box gelöscht. Umgekehrt passiert das Gleiche.
Wo könnte da der Fehler liegen?

Gruß
nase1970
 
Hallo,

das hängt wohl irgendwie mit dem DDX-Mechanismus zusammen (ohne, dass die das jetzt im Detail erklären könnte). Füge mal jeweils noch eine Methode für die KILLFOCUS-Message ein und schreibe dort die Zeile "UpdateData(true);" rein.

Gruß
MCoder
 
Hallo MCoder,
ich habe das UpdateData(true) probehalber in die Setfocus-Methode mit aufgenommen (siehe unten). Jetzt funktioniert es, obwohl ich darin keinen Sinn sehe.

void CDivision2Dlg::OnEnSetfocusZahl1()
{
UpdateData(TRUE);
m_CStringZahl1="";
UpdateData(FALSE);
}

void CDivision2Dlg::OnEnSetfocusZahl2()
{
UpdateData(TRUE);
m_CStringZahl2="";
UpdateData(FALSE);

Vielen Dank für die Hilfe!
Gruß
nase1970
 

Neue Beiträge

Zurück