Wellenreiter Geschrieben 14. Januar 2002 Geschrieben 14. Januar 2002 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 Zitieren
Goos Geschrieben 14. Januar 2002 Geschrieben 14. Januar 2002 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 Zitieren
ElBarto82 Geschrieben 14. Januar 2002 Geschrieben 14. Januar 2002 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. Zitieren
Wellenreiter Geschrieben 14. Januar 2002 Autor Geschrieben 14. Januar 2002 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 Zitieren
Wellenreiter Geschrieben 14. Januar 2002 Autor Geschrieben 14. Januar 2002 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: Zitieren
ElBarto82 Geschrieben 14. Januar 2002 Geschrieben 14. Januar 2002 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. Zitieren
Wellenreiter Geschrieben 14. Januar 2002 Autor Geschrieben 14. Januar 2002 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.... Zitieren
gugelhupf Geschrieben 15. Januar 2002 Geschrieben 15. Januar 2002 wie wärs mit : m_mycontrol.EnableWindow(FALSE); Zitieren
ElBarto82 Geschrieben 15. Januar 2002 Geschrieben 15. Januar 2002 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. Zitieren
Empfohlene Beiträge
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.