problem mit optionsfelder/butoon
-
Ich habe zwei dialoge, auf dem zweiten habe ich optionsfelder. Wenn ich auf ein aktionsfeld 'drücke', löste das die aktion aus, das es etwas in ein editfeld schreibt. und das vorhergegange speichert und das editfeld leert.
Wenn ich aber eine weile drücke, passiert gar nichts mehr. Ich meien es wird nichts mehr geschrieben oder auch ausgelesen. Es wird einfach nur ncoh ein leeres feld angezeigt.
Da das natürlich nicht sehr wünschenswert ist versuche ich das natürlcih weg zu bekommen aber irgendwie finde ich nicht an was das liegen könnt.könntet ihr mir vielleicht einen denkanstoss geben.
Danke
-
Hallo
Könntest Du vielleicht auch mal noch ein wenig Code posten? Wäre gut...
Dann könnte es vielleicht mit dem Denkanstoss klappen...Gruz Dani
-
klar könnte ich das
void CHinzuDlg::OnOp1() { speicherntxt(); UpdateData(false); oeffnen(); // weiter zu funktion oeffnen() } void CHinzuDlg::OnOp2() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen // alter inhalt speichern speicherntxt(); oeffnen();UpdateData(false); } void CHinzuDlg::OnOp3() { speicherntxt(); oeffnen();UpdateData(false); } void CHinzuDlg::OnOp4() { speicherntxt(); oeffnen();UpdateData(false); }
Das ist der code der ausgeführt wird nach dem das entsprechende dfeld betätigt wurde.
speicherntxt(); ist einen andere fkt, in der der inhalt gespeichert wird.
Achso, da ich denke das es an den feldern liegt habe ich jetzt nur den code dafür gepostet.
-
Hallo...
Was macht denn die Funktion öffnen()?
Ich nehme an, dass Du in der Funktion speicherntxt() das Editfeld ausliest (UpdateData(TRUE)) und dann diesen Wert in eine Variable oder sowas schreibst.Mit Öffnen lässt Du was ins Editfeld reinschreiben, oder?
Nach wieviel mal drücken, kommt nichts mehr? Und ist es egal welche Optionsfelder du drückst?
Da würde ich mal noch den Code vom ersten Optionsfeld angucken...
Da machst Du nämlich zuerst einen UpdateData(false)...Wenn Du also die Funktion Öffnen NACHHER aufrufst, könnte es sein, dass Dir das Editfeld dann nicht aktualisiert wird...Falls die Funktion Öffnen wirklich das macht, was ich vermute...Gruz
Danny
-
das UpdateData(false); habe ich erst später eingefügt. Also vorher hatte ich das gleiche problem. Und da dachte ich es würde vielleicht damit weggehen.
Die funktion öffnen macht nix anderes als wie etwas lesen und dann den inhalt in das feld zuschreiben.
und mit speicherntxt wird der inhalt gespeichert.
Ich habe schon problem mit dem Pkt das dieser angezeigt wir. Wenn ich z.Bsp. sage das keines der felder am anfang true ist, wird nach öfteren drücken der zweite aufeinmal aktiviert und bleibt das dann auch bis zum schluss.
Die anderen fkt. laufen auch nicht mehr richtig, danach.Es ist irgendwie durcheinander geworden. ich weiss nciht wie, denke aber das ich vielleicht einfach etwas übersehen hab.
Aber ich werde das ausprobieren, sprich das UpdateData(false); in onop1 später setzen.
danke erstmal soweit.
aber denke das es nicht darab hängt, da wie gesagt das UpdateData(false); erst später eingefügt wurde.
-
Ähem...
Mal noch ne Frage:
Passiert das alles auf einem der zwei Dialogfelder? Oder schickst Du noch Daten zwischen den Dialogfeldern hin und her?
Ruft das eine Dialogfeld das andere auf, oder wie läuft das?Gruz Danny
-
das passiert alles auf einem dlg.
Es werden keinen daten hin und her geschickt.Es ist nur eine Variable die immer zwischen den Optionsfeldern hin und her geschickt wird. Diese hatte ich aber nicht aufgeführt im code bsp.
Es ist einen membervariable vom typ cstring und public. Damit ich sie in der ganzen klasse.etc verwenden kann. Diese gibt einen pfad weiter der sich immer wieder ändert, je nach dem welches optionsfeld betätigt wurde. diese variable wird aber erst in der oeffnen verwendet, in den gepostet fkt wird nur der variablen einen wert zugewissen.
-
Hallo
Bitte sage mir mal schnell, ob ich da alles richtig mitbekommen habe:
Es gibt da zwei Möglichkeiten:
Variante 1:
Du drückst Option 1, in deinem Editfeld steht der Pfad, dieser wird mit speicherntxt() in die Variable gespeichert. Das Editfeld wird gelöscht. Danach wird mit der Funktion Oeffnen() etwas geöffnet, was auf dem entsprechenden Pfand liegt.
Dies könnte ich mir durchaus vorstellen....Variante 2:
Du drückst zum Beispiel Option 1, danach wird Deiner Variable ein Pfad zugewiesen, diese Variable wird dann zum Öffnen eines Textes (zum Beispiel) verwendet.
Dieser Text wird dann im zugehörigen Editfeld angezeigt.
Wenn erneut auf Option 1 gedrückt wird, soll der sich darin befindliche Text gespeichert und dann gelöscht werden. Soll dann ein neuer Text angezeigt werden? Und wohin soll der zu speichernde Text abgelegt werden, wenn Du nur mit einer Variable arbeitest?
Dies könnte ich mir weniger vorstellen...Sag mir mal schnell, mit welcher Variante ich näher bei deiner Lösung liege.
Vielleicht kommen wir dann weiter...Gruz
Danny
-
Man drückt Opti1:
es wir ein pfad mit einer variablen übergeben, dieser wird geöffnet und der inhalt in das feld eingetragen.
Wenn man nun Opti2 drückt:
wird erst der inhalt in das file, desen pfad bereits übergeben wurde in 1, gespeichert. Dann wird ein neuer pfad übergeben, dieser wird geöffnet und der inhalt ausgegeben.
und das macht er für 4 Opti- felder.Der inhalt des ausgabe feldes wird natürlich vor jedem öffnen gelöscht ( nach dem speichern), damit nur das was in dem entsprechenden file steht ausgegeben wird.
-
OK, alles klaro...
Hast du mal geprüft, was mit den Files nach mehrmaligem drücken passiert?
Du könntest ja mal, wenn das Phänomen auftritt, die einzelnen Files angucken ob's da überhaupt noch n' Inhalt drin hat...Was passiert, wenn du das erste mal Option 1 drückst? Dann steht meiner Meinung nach noch nichts im Editfeld und folglich müsste dies dann mit speicherntxt() in File Nummer 4 gespeichert werden, oder? Dann hättest Du also nichts in File 4 ... Irgendwann hast Du dann bei allen 4 Files den Inhalt mit Leer überschrieben...
Gruz Danny
-
hört sich plausibel an.
Aber eigentlich schreibt er schon etwas in das feld.
er fängt halt irgendwann an mist zu schreiben.
und in den files steht auch immer was drin.Wie meinst du könnte ich das umgehen??? ( das mit dem leeren feld)
-
Hallo...
Hmmm...Ich würde da ne Flagvariable setzen, welche du beim Starten deiner APP mit FALSE initialisierst. Danach könntest Du mit einer If Abfrage jeweils checken, ob die Flagvariable TRUE oder FALSE ist... Wenn FALSE: nur die Oeffnen Funktion ausführen und danach die Flagvariable auf TRUE setzen, sonst speicherntxt und Oeffnen ausführen....Irgendwie sowas...
Du müsstest das bei allen Optionsfeldern einbauen, da es ja dem User freisteht, wie er beginnen soll...gelle(speicherntxt() kommt ja immer zuerst...)
Apropos Müll: Steht in den Files immer der korrekte Inhalt? Sind das normale TXT Files, oder ist das sonstwas?
Gruz Danny