Texteingabe in Edit-Fenster direkt anzeigen

spiesser

Grünschnabel
Ich möchte einem Edit-Fenster den Text eines anderen Edit-Fensters zuweisen und den veränderten Text des ersten Edit-Fensters direkt anzeigen (während in der Funktion weitere Aktionen folgen)! Bei mir erscheint der veränderte Text aber erst nach Durchlaufen der Funktion! Wie kann ich das ändern?

spiesser
 

Turri

Erfahrenes Mitglied
Hallo,

Was hast du denn vor, dass du mitten im Funktionsaufruf ne Ausgabe brauchst.
Du kannst die Ausgabe ja in die Funktion an der entsprechende Stelle implementieren.

Noch ne Idee wäre ein Timer der parallel zu deiner Funktion läuft und der die Ausgabe macht.

MfG Turri
 

spiesser

Grünschnabel
Erklärungsversuch:
Ich möchte den Text eines Edit-Fensters durch den Text eines anderen Edit-Fensters ersetzen:

Edit2->Text=Edit1->Text;

Der Nutzer soll diese Veränderung direkt nachverfolgen können - in meinem Programm ist dies aber erst möglich, nachdem die gesamte Funktion durchlaufen wurde (vorher ist Edit2 leer) - warum ist das so und wie kann ich das ändern?

spiesser
 

Turri

Erfahrenes Mitglied
Probier doch mal bei Edit1 das OnKeyPress Ereignis...
und da machste das rein.
Code:
Edit2->Text = Edit2->Text + Key;
Sobald du in Edit1 ne Taste drückst, nimmt das Ereignis den Buchstabe und hängt ihn bei Edit2 dran.
Das hier funktioniert momentan aber nur wenn ein Zeichen angehangen wird, nicht wenn man eines wegnimmt.
Aber ist bestimmt schonmal ne Anregung.

Das funktioniert nicht, weil man da immer ein Zeichen verzögerung hat.
Code:
Edit2->Text = Edit1->Text;

MfG Turri
 

spiesser

Grünschnabel
Kann damit ehrlich gesagt nichts anfangen, trotzdem vielen Dank!

Ich weiß einfach nicht, wo der Fehler sein soll:

Wenn ich schreibe
Edit1->Text="Hallo!";
--> Warum gibt er das dann nicht sofort aus, sondern erst, wenn die Funktion durchlaufen ist
 

Turri

Erfahrenes Mitglied
Weil direkt nach der Funktion erst der Befehl für das Neuzeichnen oder Aktualisieren des Form ausgeführt wird. Dadurch sind die Änderungen nicht sofort sichtbar...

Kann damit ehrlich gesagt nichts anfangen, trotzdem vielen Dank!
Was verstehst du denn nicht?
Wenn du den Borland C++ Builder 6.0 hat sieht du links den "Objektinspektor"
Da kannst du Eigenschaften für die Sachen, die auf einem Form plaziert sind, einstellen.
Da gibts aber nicht nur den Tab Eigenschaften sondern auch "Ereignisse".

Du klickst also das Edit1 an, und dann guckst du links bei Ereignisse.
Und da drin machste nen Klick auf "OnKeyPress".
Da dann mein Vorschlag vom Threat zuvor rein.

Mich würde trotzdem erstmal interessieren was du für eine Funktion meinst. Ich tappe ein wenig im Dunkeln, nicht das wir aneinander vorbei reden. :)

MfG Turri
 

spiesser

Grünschnabel
Mein Problem ist wie folgt:

Ich habe eine Funktion, in der mehrere Dinge hintereinander ablaufen. Jedoch ist es mein Ziel, dass jeder Schritt sofort verändert dargestellt wird, um alle Veränderungen verfolgen zu können! Bei meinem Programm erscheinen die Änderungen aber erst nachdem die gesamte Funktion bearbeitet wurde!

Beispiel:

Edit1->Visible=true;
Edit1->Text="Text";
zeit (Edit34); //Funktion, die in Programm dazu führt, erst ein paar Sekunden später fortzufahren
Edit5->Text=Edit2->Text;
Edit5->Visible=true;
Edit2->Text="";
zeit (Edit34);
Edit2->Text=Edit4->Text;
Edit4->Text="";
zeit (Edit34);

Verständlich?

spiesser
 

Turri

Erfahrenes Mitglied
jap, jetzt ist klar... (hoffentlich)

In deiner Funktion, hast du quasi ne Wartezeit drin.
Und vor deiner Funktion wurden Werte geändert.
Versuch mal vor deiner Funktion ein "Repaint();".
Das sollte das Form aktualisieren. Und die Änderungen anzeigen.
Versprechen kann ich es aber nicht ;-)
Code:
Edit1->Visible=true;
Edit1->Text="Text";
Repaint();  // die Funktion sollte es geben...
zeit (Edit34);
Edit5->Text=Edit2->Text;
Edit5->Visible=true;
Edit2->Text="";
Repaint();  // die Funktion sollte es geben...
zeit (Edit34);
Edit2->Text=Edit4->Text;
Edit4->Text="";
Repaint();  // die Funktion sollte es geben...
zeit (Edit34);

MfG Turri