Veröffentlicht 14. Januar 200223 j Hallo, ich habe da folgendes Problem: Es handelt sich um eine Maske mit verschiedenen Eingabefeldern. Nachdem ein Datensatz eingegeben wurde(abgepeichert), soll dieser nicht mehr zu bearbeiten sein. Soll heißen, wenn ich auf den entsprechenden DS klicke , darf dieser nicht änderbar sein. Vielleicht hat ja wer von euch eine Idee, wie man das lösen könnte. THX im vorraus
14. Januar 200223 j Hmmm erzaehl doch mal etwas genauer.....was verstehst unter verschiedenen Eingabefeldern? Nur verschiedene Editboxen, oder auch diverse andere Steuerelemente (Checkboxen, Comboboxen....) ? ....und du willst das wirklich sperren? Mal ne dumme Frage, aber wieso überträgst du den Inhalt dann nicht einfach? Es ist wohl einfacher die Daten woanders reinzuschreiben, als alles für die Bearbeitung zu sperren Goos
14. Januar 200223 j hi. na schön, du möchtest also, dass daten z.B. in einem eingabefeld nachträglich nicht mehr verändert werden dürfen. sicherlich hast du schon einen dialog o.ä., worin sich ein eingabefeld befindet. 1.schritt: lege für dieses eingabefeld (z.B. IDC_EDIT1) eine membervariable der kategorie control und des typs CEdit an. du kannst diese membervariable z.B. "m_ctlEdit1" nennen. 2.schritt: du musst dem eingabefeld irgendwie mitteilen, ab wann es für veränderungen gesperrt werden soll. dies kannst du z.B. durch einen button realisieren, den der user nach der eingabe betätigt. es gibt auch andere möglichkeiten. 3.schritt: füge eine funktion für den button hinzu. in dieser funktion solltest realisieren, dass das feld auf read-only gesetzt wird. m_ctlEdit1.SetReadOnly(TRUE); //eingabefeld auf read-only setzen UpdateData(FALSE) //bildschirmausgabe aktualisieren ich hoffe, das diese kleine ausführung dir bei deinen problem hilft.
14. Januar 200223 j Hi Goos, es handelt sich um einige Edit-, und um drei Combolistboxen. Das ganze ist ein Buchungsprogramm, in das man halt verschiedene Daten eingibt, die letztendlich halt gebucht werden. Ist dieses einmal geschehen, darf natürlich an den Buchungssätzen nichts mehr verändert werden. Die Datensätze werden in einer Accsesstabelle abgelegt. Es muss praktisch über die Steuerelemente "Nächster/Vorheriger Datensatz" geprüft werden, ob der anzuzeigende Datensatz schonmal abgebucht wurden, oder nicht. Ist dieses der Fall, dürfen die Eingabefelder und Comboboxen ncht beschreibbar sein. Gruss
14. Januar 200223 j Hallo ElBarto82, das Problem dabei ist, dass SetReadOnly kein Element von CString ist. Alle meine Membervariablen sind dies. Um bei deinem Beispiel zu bleiben, hiesse es dann m_pSet->m_ctlEdit1. Bei der Vergabe der Membervariablen waren alle Namen der Variablen schon vorgegeben (im Dropdown-Menue "Name der Member-Variablen"). Gruss :confused:
14. Januar 200223 j hi, es ist richtig, dass die methode SetReadOnly kein element von String ist. die methode SetReadOnly ist aber ein bestandteil von CEdit. versuche doch mal die membervariable nicht vom typ String, sondern vom typ CEdit zu deklarieren. m_ctlEdit1 sollte dies nochmal unterstreichen. ctl = control.
14. Januar 200223 j Sauber..., So weit so gut, danke. Es ist jetzt noch das Problem, dass man zwar nichts mehr eingeben kann, aber leider auch nicht mehr lesen kann was drinne steht. Das Feld ist halt komplett grau ! Ick freu mir schon....
15. Januar 200223 j hi, das mit SetReadOnly funktioniert. bist du auch sicher, dass du vor der anweisung "m_ctlEdit1.SetReadOnly(TRUE)" auch UpdateData(TRUE) gemacht hast? natürlich funktioniert es auch mit "EnableWindow(FALSE)". du wirst jedoch einen kleinen schönheitsfehler entdecken. wenn du EnableWindow(FALSE) anwendest, ist das feld und die schrift grau. wenn du jedoch SetReadOnly(TRUE) verwendest, ist das feld grau und die schrift schwarz.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.