Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Leerzeichen in Enter(Zeilenumbruch) umwandeln (https://www.delphipraxis.net/134407-leerzeichen-enter-zeilenumbruch-umwandeln.html)

NDR 21. Mai 2009 15:55


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 21. Mai 2009 16:02

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.

easywk 21. Mai 2009 16:24

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:
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;
Mein Fall löscht die Taste einfach, du kannst aber natürlich dann auch den Key auf Enter setzen ...

cu
easy

NDR 21. Mai 2009 16:44

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

DenSchub 21. Mai 2009 16:51

Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
 
Ersetz mal das #8 durch #13 denn das steht imho für Enter.

Grüße,

NDR 21. Mai 2009 16:54

Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
 
Supi das mit der #13 funzt^^
Bleibt nur noch diese kleine Frage hier:
Zitat:

Zitat von NDR
Noch ne weitere Frage die mir grad so aufkommt.... wie kann ich die anzahl der Zeilen im Memofeld beschränken?

^^
NDR

DenSchub 21. Mai 2009 16:57

Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
 
Das setzt z.B. die Maximal-Anzahl der Zeilen auf 3:
Delphi-Quellcode:
if (Key = #13) AND (Memo.Lines.Count >= 3) then
  Key := #0;
Grüße

[edit]Das kommt natürlich auch in das OnKeyPress rein![/edit]

BUG 21. Mai 2009 16:57

Re: Leerzeichen in Enter(Zeilenumbruch) umwandeln
 
Zitat:

Zitat von NDR
jedoch mein "Enter" um auf die nächste zeile zu kommen auch geblockt wird :|

Probiere es mal so:
Delphi-Quellcode:
const
  CZahlenGroup    = ['-','1','2','3','4','5','6','7','8','9','0',#8,#13,#10];
MfG,
BUG

EDIT: Roter Kasten ... was ist das?

Wenn er die Rücktaste benutzen möchte, sollte er das #8 drinlassen.

Satty67 21. Mai 2009 17:00

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 ;)

DenSchub 21. Mai 2009 17:01

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 22:04 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz