Editcontrol in MDI aktualisieren.

Klef

Grünschnabel
Hallo, alle zusammen.
Ich bin neu hier und habe folgendes Problem:
Ich öffne in einem MDI-Projekt (erstellt mit VC++ 6.0/XP)zwei gleiche View`s (Instanzen) gleichzeitig und ändere nun irgendeinen Wert in einem Editfeld X(Daten werden aus einer Access-Datenbank aufgerufen) der ersten Ansicht. Das selbe Editfeld X in der zweiten Ansicht soll nach dem Schliessen der ersten Ansicht mit dem Wert des Editfelds aus der ersten Ansicht aktualisiert und neu angezeigt werden. Wie realisiere ich so was am besten? Hat jemand eine Idee?

Danke Klef
 
Dann kannst Du doch die Daten vom ersten View aus in das Dokument schreiben und vom zweiten View wieder aus dem Dokument lesen. Du kannst die neuen Daten natürlich auch gleich in der DB speichern und dann vom zweiten View aus der DB lesen.
 
Also wie gesagt, wenn ich die erste View schließe, werden die Daten aus dem Editfeld in die Datenbank geschrieben. Bevor ich aber die zweite View schließe muss das Editfeld aktualisiert worden sein. Ansonsten wird der neue Datensatz vom alten Datensatz wieder überschrieben.Das heißt, wie du schon sagtest, die Daten erneut aus der datenbank abrufen. Gibt es hierfür vielleicht eine fertige Funktion oder weißt du auf die Schnelle ein Beispiel aus dem Netz, wo ich mir das anschauen könnte? Das müsste ja dann in der Nachrichtenbearbeitung von WM_CLOSE stattfinden?
 
Wie Du die Daten aud der DB holst, hängt davon ab, wie der View mit der DB verknüpft ist. Wenn Du das mit dem Assistenten gemacht hast, dann sollte ein Aufruf von UpdateData(FALSE) ausreichen. Aber Du liest die Daten doch jetzt auch schon aus, wenn Du den View anzeigst, oder? Genauso machst Du das da auch.
Statt in OnClose kannst Du das evtl. auch in OnSetFocus (Nachricht WM_SETFOCUS) machen.
 
Hallo,
der Vorschlag war nicht schlecht. Allerdings schaffe ich es bisher nur die Daten in einer Instanz von Editfeld zu Editfeld zur Laufzeit zu übertragen. Gibt es Funktionen in MFC für folgende Prozedur. Sobald ich meine 2.Instanz(View) schliesse sollten die Werte in den Editfelder ausgelesen (Geht das mit folgerndem Code)
(CEdit *pEntry = static_cast<CEdit*>(GetDlgItem(IDC_EDIT_TEST));
und anschließend in einer CString Variablen oder Map abgelegt werden.
In der 1. Instanz werden die Werte aus den Variablen aufgerufen und dargestellt.
Hier muss sicherlich die View mit Invalidate() ungültig und danach neu dargestellt werden.
Theoretisch klar, aber wie funktioniert es praktisch? Mit OnSetFocus (ON_EN_SETFOCUS)
war ein guter Tip, komme aber nicht weiter, wenn die Übertragung von Instanz zu Instanz nicht klappt.
 
Zurück