Automatisch Leerzeichen in Edit-Feld einfügen
-
- Beiträge: 9
- Registriert: Mo 17. Aug 2015, 13:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Automatisch Leerzeichen in Edit-Feld einfügen
Hi,
ich bräuchte ganz dringend die Hilfe von erfahreneren Lazarus-Nutzern.
Wir bearbeiten im Unterricht gerade die Aufgaben vom 34. Bundeswettbewerb der Informatik und für eine Aufgabe würde ich gerne in einem Edit-Feld nach jedem Zeichen ein Leerzeichen automatisch einfügen, um die einzelnen eingegeben Zahlen im Verlauf des Programms besser sichtbar und erkennbar zu machen. Leider fehlt mir dazu das Wissen wie man überhaupt per Quelltext ein Leerzeichen einfügt.
MfG,
L4Z4RUSN00B
ich bräuchte ganz dringend die Hilfe von erfahreneren Lazarus-Nutzern.
Wir bearbeiten im Unterricht gerade die Aufgaben vom 34. Bundeswettbewerb der Informatik und für eine Aufgabe würde ich gerne in einem Edit-Feld nach jedem Zeichen ein Leerzeichen automatisch einfügen, um die einzelnen eingegeben Zahlen im Verlauf des Programms besser sichtbar und erkennbar zu machen. Leider fehlt mir dazu das Wissen wie man überhaupt per Quelltext ein Leerzeichen einfügt.
MfG,
L4Z4RUSN00B
"Ich weiß, dass ich nichts weiß!" - Sokrates
-
- Beiträge: 565
- Registriert: So 26. Aug 2012, 09:03
- OS, Lazarus, FPC: Windows(10), Linux(Arch)
- CPU-Target: 64Bit
Re: Automatisch Leerzeichen in Edit-Feld einfügen
um ein einzelnes Zeichen aus einem String auszulesen kannst du das hier verwenden:
x muss zwischen 1 und der länge des strings liegen.
Dann brauchst du nurnoch eine for schleife die alle zeichen durchgeht und immer das entsprechende zeichen und ein leerzeichen einfügt.
MFG
Komoluna
Code: Alles auswählen
zeichen := deinstring[x];
Dann brauchst du nurnoch eine for schleife die alle zeichen durchgeht und immer das entsprechende zeichen und ein leerzeichen einfügt.
MFG
Komoluna
Programmer: A device to convert coffee into software.
Rekursion: siehe Rekursion.
Rekursion: siehe Rekursion.
-
- Beiträge: 9
- Registriert: Mo 17. Aug 2015, 13:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Automatisch Leerzeichen in Edit-Feld einfügen
Danke schonmal für die Antwort, aber das ist nicht ganz das was ich suche
, das mit dem auslesen wollte ich anders angehen.
Hast du eine Idee wie einfach das Programm immer nachdem man eine Zahl eingibt ein Leerzeichen automatisch einfügt?

Hast du eine Idee wie einfach das Programm immer nachdem man eine Zahl eingibt ein Leerzeichen automatisch einfügt?
"Ich weiß, dass ich nichts weiß!" - Sokrates
-
- Beiträge: 152
- Registriert: Mo 3. Feb 2014, 14:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Automatisch Leerzeichen in Edit-Feld einfügen
Also im Prinzip kann man sowas in das Ereignis "OnKeyUp" packen, allerdings musst du bedenken, dass man in Editfelder auch von der Zwischenablage reinkopieren kann oder Zeichen wieder gelöscht werden können. Deswegen würde ich den String aus dem Eingabefeld erst dann manipulieren, wenn er verarbeitet werden soll.
.
Re: Automatisch Leerzeichen in Edit-Feld einfügen
...Edit-Feld nach jedem Zeichen ein Leerzeichen automatisch einfügen...
Code: Alles auswählen
Procedure TForm1.Edit1KeyPress(Sender: TObject; Var Key: Char);
Begin
If Pos(Key,'1234567890'+#8#27#13) = 0 Then Key:= #0;
If Pos(Key,'1234567890') > 0
Then
Begin
Edit1.Text:= #32 + Edit1.Text;
End;
End;
Hast du eine Idee wie einfach das Programm immer nachdem man eine Zahl eingibt ein Leerzeichen automatisch einfügt?
Code: Alles auswählen
Procedure TForm1.Edit1KeyPress(Sender: TObject; Var Key: Char);
Begin
If Pos(Key,'1234567890'+#8#13) = 0 Then Key:= #0;
If Key = #13 //AutoSelect(False) im ObjektInspektor !
Then
Begin
If Edit1.Text = '' Then Exit;
If Edit1.Text[1] = ' ' Then Exit;
Edit1.Text:= #32 + Edit1.Text;
End;
End;
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Automatisch Leerzeichen in Edit-Feld einfügen
Wieso nimmst du nicht eine andere Schrift, oder machst die Zeichen grösser ?um die einzelnen eingegeben Zahlen im Verlauf des Programms besser sichtbar und erkennbar zu machen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 565
- Registriert: So 26. Aug 2012, 09:03
- OS, Lazarus, FPC: Windows(10), Linux(Arch)
- CPU-Target: 64Bit
Re: Automatisch Leerzeichen in Edit-Feld einfügen
Außerdem wäre erstmal wichtig ob du nach jeder Zahl oder jeder Ziffen ein Leerzeichen haben willst
MFG
Komoluna
MFG
Komoluna
Programmer: A device to convert coffee into software.
Rekursion: siehe Rekursion.
Rekursion: siehe Rekursion.
-
- Beiträge: 9
- Registriert: Mo 17. Aug 2015, 13:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Automatisch Leerzeichen in Edit-Feld einfügen
@baumina: Das wäre auch ne Idee.
@komoluna: Es sollen nur Zahlen eingebbar sein, da ich Koordinaten brauche, und die bestehen nunmal aus Zahlen.
@Mathias: Davon erkennt man aber man die einzelnen Zahlen nich.
@komoluna: Es sollen nur Zahlen eingebbar sein, da ich Koordinaten brauche, und die bestehen nunmal aus Zahlen.
@Mathias: Davon erkennt man aber man die einzelnen Zahlen nich.
"Ich weiß, dass ich nichts weiß!" - Sokrates
-
- Beiträge: 179
- Registriert: Mi 2. Sep 2015, 11:09
- OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
- CPU-Target: Windows 32/64bit
Re: Automatisch Leerzeichen in Edit-Feld einfügen
Was ist für Dich eine Zahl?L4Z4RUSN00B hat geschrieben:@komoluna: Es sollen nur Zahlen eingebbar sein, da ich Koordinaten brauche, und die bestehen nunmal aus Zahlen.
Zahlen sind zum Beispiel:
2
12
583
1000489
Und eine Zahl besteht aus 1 oder mehreren Ziffern.
Also nochmals die Frage willst Du nach jeder Zahl oder jeder Ziffer ein Leerzeichen?
.
-
- Beiträge: 152
- Registriert: Mo 3. Feb 2014, 14:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Automatisch Leerzeichen in Edit-Feld einfügen
Wenn ich mir die Aufgabenstellung so anschaue, ist das mit den Leerstellen zur Darstellung oder Eingabe eher unwichtig.
- Dateianhänge
-
- aufgabe.jpg (35.33 KiB) 3003 mal betrachtet
.
Re: Automatisch Leerzeichen in Edit-Feld einfügen
Das sieht so aus, als ob die Zahlen die Kanten-Koordinaten der gezeigten Rechtecke wären, und dann sind die Leerstellen zur Trennung der einzelnen Zahlen absolut notwendig.baumina hat geschrieben:Wenn ich mir die Aufgabenstellung so anschaue, ist das mit den Leerstellen zur Darstellung oder Eingabe eher unwichtig.
-
- Beiträge: 152
- Registriert: Mo 3. Feb 2014, 14:07
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Automatisch Leerzeichen in Edit-Feld einfügen
Ich persönlich würde 4 Eingabefelder mit einem vernünftigen Prompt davor machen.
.
-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Automatisch Leerzeichen in Edit-Feld einfügen
Hallo,
hatte vor kurzem das gleiche Problem: Eine lange Folge von Zeichen (Key für Shamir Secret Sharing) soll in 4-er Blocks übersichtlich dargestellt werden:
EditShare ist ein TEdit, das dieses Special unterstützen soll. Man setze jetzt EditShare.OnChange := @InputChange;
Ganz trivial ist das ganze nicht, es kann leicht vorkommen, dass bei der Eingabe die Position des Textcursors verrutscht. Meine Lösung hat aktuell noch den Nachteil, dass man beim Löschen mit Return nicht über ein Leerzeichen springen kann...
hatte vor kurzem das gleiche Problem: Eine lange Folge von Zeichen (Key für Shamir Secret Sharing) soll in 4-er Blocks übersichtlich dargestellt werden:
Code: Alles auswählen
procedure TFormStart.InputChange(Sender: TObject);
var
s : AnsiString;
i,j : Integer;
p : TPoint;
begin
// EditShare = Sender ;-)
p := EditShare.CaretPos;
s := '';
j := 0;
for i := 1 to Length(EditShare.Text) do if (EditShare.Text[i] = ' ') then begin
if (i < p.x+1) then p.x := p.x - 1;
end else begin
s := s + EditShare.Text[i];
j := j + 1;
if (j mod 4 = 0) then begin
s := s + ' ';
if (Length(s) < p.x+2) then p.x := p.x + 1;
end;
end;
EditShare.Text := s;
EditShare.CaretPos := p;
end;
Ganz trivial ist das ganze nicht, es kann leicht vorkommen, dass bei der Eingabe die Position des Textcursors verrutscht. Meine Lösung hat aktuell noch den Nachteil, dass man beim Löschen mit Return nicht über ein Leerzeichen springen kann...
Re: Automatisch Leerzeichen in Edit-Feld einfügen
Ich verstehe die ganze Fragestellung des OP nicht: Wenn wie in der oben von baumina zitierten Aufgabenstellung vier Zahlen (nicht Ziffern) als Koordinaten eines Rechtecks in ein Edit-Feld eingegeben werden und dabei durch Leerzeichen getrennt werden sollen, kann man doch nicht nach jedem *Zeichen* (siehe 1.Post) ein Leerzeichen einfügen, und schon gar nicht automatisch. Was ist, wenn die rechte Rechteckkante bei x=10 liegen soll?
-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
Re: Automatisch Leerzeichen in Edit-Feld einfügen
Ja, ok, ich wusste nicht, dass die Leerzeichen mehr als nur Design sein sollen...
Zum Trennen von Datenpunkten sollte man ; | / : oder tab verwenden - oder besser gleich getrennte Edits.
[Edit:] Naja, Leerzeichen gehen auch, aber die Aufgabe ist dann eben die Interpretation dieses Datenformats und keine automatische Aufhübschung
Zum Trennen von Datenpunkten sollte man ; | / : oder tab verwenden - oder besser gleich getrennte Edits.
[Edit:] Naja, Leerzeichen gehen auch, aber die Aufgabe ist dann eben die Interpretation dieses Datenformats und keine automatische Aufhübschung
