![]() |
Leerzeichen in Enter(Zeilenumbruch) umwandeln
Hallo,
Ich suche in Delphi 7 eine Möglickeit Leerzeichen in Enter/einen Zeilenumbruch umzuwandeln. Zur Problematik: Ich habe ein Memofeld in dem Zahlen eingegeben werde sollen, sodass ich eine Liste von Zahlen bekomme, mit den ich denn nach dem Umwandeln Rechnen etc. machen kann. Der Benutzer kann ja nun aber auf die Idee kommen und zwei Zahlen in eine Zeile zu schreiben... das würde denn ja eine Fehlermeldung ala " '123 321' ist kein gültiger Integerwert" hervorrufen. Zu dem Zweck möchte ich das wenn ein Leerzeichen oder sonstige nicht erlaubten Zeichen im String drin stehen die das konvertieren in einen Integerwert verhindern geblockt bzw umgewandelt werden. Beispiel aus '-123 321' wird '-123' '321' oder aus '1234-567' wird '1234' '-567' Gibtes da eine Möglichkeit das schon bei der Eingabe zu korrigieren oder muss ich da erst ne Procedure drüber laufen lassen die mir die fehlerhaften Eingaben berichtigt? mfg NDR |
DP-Maintenance
Dieses Thema wurde von "fkerber" von "Open-Source" nach "Sonstige Fragen zu Delphi" verschoben.
Da es sich um eine Frage handelt, verschiebe ich das mal. |
Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
Hallo,
klar, du kannst in der Routine OnKeyPress die Tasten abfangen. Ich habe das zwar noch nicht in einem Memofeld gemacht, aber in TEdit mache ich das ständig:
Delphi-Quellcode:
Mein Fall löscht die Taste einfach, du kannst aber natürlich dann auch den Key auf Enter setzen ...
const
CZahlenGroup = ['-','1','2','3','4','5','6','7','8','9','0',#8]; procedure TForm1.SimulateEnterZahlen(Sender: TObject;var Key: Char); begin if not (Key in CZahlenGroup) then Key:=#0; end; cu easy |
Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
So hab jetzt diese Procedure mit reingeschrieben und beim Memofeld mit dem Ereignis OnKeyPress verknüpft.... das Problem ist jetzt nur das ich zwar nur noch Zahlen und '-' eingeben kann, jedoch mein "Enter" um auf die nächste Zeile zu kommen auch geblockt wird :|
Noch ne weitere Frage die mir grad so aufkommt.... wie kann ich die anzahl der Zeilen im Memofeld beschränken? schonmal thx NDR |
Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
Ersetz mal das #8 durch #13 denn das steht imho für Enter.
Grüße, |
Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
Supi das mit der #13 funzt^^
Bleibt nur noch diese kleine Frage hier: Zitat:
NDR |
Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
Das setzt z.B. die Maximal-Anzahl der Zeilen auf 3:
Delphi-Quellcode:
Grüße
if (Key = #13) AND (Memo.Lines.Count >= 3) then
Key := #0; [edit]Das kommt natürlich auch in das OnKeyPress rein![/edit] |
Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
Zitat:
Delphi-Quellcode:
MfG,
const
CZahlenGroup = ['-','1','2','3','4','5','6','7','8','9','0',#8,#13,#10]; BUG EDIT: Roter Kasten ... was ist das? Wenn er die Rücktaste benutzen möchte, sollte er das #8 drinlassen. |
Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
Eigentlich ja nur eine Frage pro Thread. Wäre die Antwort trivial, hätte ich auch nichts gesagt, aber ein gutes begrenzen der Zeilenzahl ist imho relativ kompliziert.
Trivial: Wenn Memo1.Lines.Count größer gewünschtem Wert, das #13 wieder in #0 wandeln. Verhalten ist dann nicht ganz elegant, wenn man alte Zeilen oben dran editieren will €: Ok, einer war schneller ;) |
Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
Stimmt, #8 ist ja die Rücktaste :wall:
Satty: Nö, denn das blockt ja dann nur das Enter, und wenn man oben was editieren will benutzt man ja kein Enter.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz