Wie Eingabe von FORM2 in FORM1 verarbeiten?
-
- Beiträge: 7
- Registriert: Di 24. Mai 2016, 09:47
Wie Eingabe von FORM2 in FORM1 verarbeiten?
Hallo,
folgende Situation:
Form1 verabeitet eine Tatstatureingabe und macht z.B. aus der Eingabe 'abd' den Wert '124', außerdem kann man über einen Button Form2 öffnen. Form2 hat einen 'Beenden' Button der dieses schließt und Form1 ist wieder aktiv, eine etwaige Tastatureingabe wird von Form2 bisher nicht berücksichtigt. So weit so gut. Schön wäre aber:
1. wenn auch Form2 eine etwaige Tastatureingabe annehmen würde
2. danach Form2 beendet und die Tastatureingabe an Form1 übergeben werden würde
3. die Tatstatureingabe aus Form2 von Form1 verarbeitet werden würde als wäre sie direkt über Form1 eingeben worden
Punkt 1 und 2 sind keine Probleme aber womit erreicht man Punkt3?
folgende Situation:
Form1 verabeitet eine Tatstatureingabe und macht z.B. aus der Eingabe 'abd' den Wert '124', außerdem kann man über einen Button Form2 öffnen. Form2 hat einen 'Beenden' Button der dieses schließt und Form1 ist wieder aktiv, eine etwaige Tastatureingabe wird von Form2 bisher nicht berücksichtigt. So weit so gut. Schön wäre aber:
1. wenn auch Form2 eine etwaige Tastatureingabe annehmen würde
2. danach Form2 beendet und die Tastatureingabe an Form1 übergeben werden würde
3. die Tatstatureingabe aus Form2 von Form1 verarbeitet werden würde als wäre sie direkt über Form1 eingeben worden
Punkt 1 und 2 sind keine Probleme aber womit erreicht man Punkt3?
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Wie Eingabe von FORM2 in FORM1 verarbeiten?
3. die Tatstatureingabe aus Form2 von Form1 verarbeitet werden würde als wäre sie direkt über Form1 eingeben worden
Dies wäre eine Variante:
Code: Alles auswählen
procedure TForm2.FormKeyPress(Sender: TObject; var Key: char);
begin
Form1.FormKeyPress(Sender, Key);
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 732
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: Wie Eingabe von FORM2 in FORM1 verarbeiten?
Hallo,
ich hab das jetzt so verstanden, daß er von Form1 auf die Komponenten von Form2 zugreifen kann.
Dann müste in die USES Anweisung von Form1 zusätzliche die "unit2" mit aufgenommen werden.
Dann kann er von Form1 aus auf alle Komponenten und Eingaben von Form2 zugreifen.
// in Form1 also unit2 mit aufnehmen:
Bin mir aber nicht sicher ob es so gemeint war...
Siro
ich hab das jetzt so verstanden, daß er von Form1 auf die Komponenten von Form2 zugreifen kann.
Dann müste in die USES Anweisung von Form1 zusätzliche die "unit2" mit aufgenommen werden.
Dann kann er von Form1 aus auf alle Komponenten und Eingaben von Form2 zugreifen.
// in Form1 also unit2 mit aufnehmen:
Code: Alles auswählen
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,StdCtrls,
unit2; // die Unit für Form2 mit angeben.
procedure TForm1.Button1Click(Sender: TObject);
begin
// Der Label auf Form1 bekommt den Text vom Editfeld auf Form 2
Label1.caption:=Form2.Edit1.caption;;
end;
Bin mir aber nicht sicher ob es so gemeint war...
Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Wie Eingabe von FORM2 in FORM1 verarbeiten?
Das ist natürlich die Frage, meint er mit Eingabe, ZB. ein TEdit, oder einfach Zeichen drücken in einem Form ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 7
- Registriert: Di 24. Mai 2016, 09:47
Re: Wie Eingabe von FORM2 in FORM1 verarbeiten?
Es ist ein TEdit und die Eingabe stammen von einem Strichcodescanner. Im Form2 ist das TEdit Feld versteckt. Wenn jetzt im Form2 trotzdem ein Strichcode gescannt wird landet der Wert im Tedit und das zugehörige Ereignis schreibt den Wert auch in die TEdit Variable von Form1 wo sie auch bei einem normalen Scanvorgang innerhalb von Form1 stünde und schließt Form2. Im Form1 steht dann der Scannstring aber es geht nicht weiter, weil ich nicht weiß mit welchen Ereignis ich dann die Weiterverabeitung, wie bei der direkten Eingabe in Form1, auslöse.
Aslo:
Normal: Form1 -> Scan -> Umwandlung EAN zu Name
Gesucht: Form1 -> Form2 -> Scan -> Scanwert Form2 and Form1 übergeben und Form2 schleißen (bis hier kein Problem)-> Scanwert in Form1 wie unter 'Normal' auswerten
Ziel ist die Vereinfachung des Handlings, damit nicht extra im Form2 der Beenden button gedrückt werden muß und erst dann wieder gescannt werden kann.
Ich hoffe das war verständlich.
Aslo:
Normal: Form1 -> Scan -> Umwandlung EAN zu Name
Gesucht: Form1 -> Form2 -> Scan -> Scanwert Form2 and Form1 übergeben und Form2 schleißen (bis hier kein Problem)-> Scanwert in Form1 wie unter 'Normal' auswerten
Ziel ist die Vereinfachung des Handlings, damit nicht extra im Form2 der Beenden button gedrückt werden muß und erst dann wieder gescannt werden kann.
Ich hoffe das war verständlich.
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Wie Eingabe von FORM2 in FORM1 verarbeiten?
Ein Strichcodescanner verhält sich wie eine Tastatur-
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 7
- Registriert: Di 24. Mai 2016, 09:47
Re: Wie Eingabe von FORM2 in FORM1 verarbeiten?
Genau, deswegen erwähnte ich es anfangs auch nicht extra weil es keinen Unterschied zu einer normalen Tastatureingabe, die mit <Return> abgeschlossen wird, macht. Ich werde deine Lösung mal einbauen.
-
- Beiträge: 732
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: Wie Eingabe von FORM2 in FORM1 verarbeiten?
in dem Editfeld kannst Du die Bestätigung abfangen
also die Return Taste und das Formular dann schliessen, das sähe dann so aus:
In deinem Formular must Du ShowModal nicht Show benutzen, sonst reagiert es falsch
vielleicht hilft Dir das weiter.
Siro
also die Return Taste und das Formular dann schliessen, das sähe dann so aus:
Code: Alles auswählen
procedure TForm2.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = $0D then close; // Form2 schliessen
end;
In deinem Formular must Du ShowModal nicht Show benutzen, sonst reagiert es falsch
Code: Alles auswählen
procedure TForm1.ButtonScanClick(Sender: TObject);
var s:string;
begin
form2.showModal; // ShowModal ist wichitg, nur Show geht nicht
s:=Form2.Edit1.Text;
// hier jetzt deine Ausführung was passieren soll
caption:=s;
end;
vielleicht hilft Dir das weiter.
Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...