![]() |
Leerzeichen in Edit1.Text verhindern
Hallo
wie kann ich Leerzeichen in Edit1.Text OnChange.Event verhindern ?
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin // habe ich einmal so gelöst // if ... = ' ' then ... :='' end; |
Re: Leerzeichen in Edit1.Text verhindern
Hi,
das geht sicher, doch ich würde dafür das OnKeyPress-Ereignis nutzen:
Delphi-Quellcode:
Grüße, Matze
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin if Key = ' ' then Key := #0; end; |
Re: Leerzeichen in Edit1.Text verhindern
Delphi-Quellcode:
Mfg
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin if Key = ' ' then Key := #0; end; Edit: da hatte wohl jemand die gleiche Idee :lol: |
Re: Leerzeichen in Edit1.Text verhindern
Und was wäre wenn der User den Inhalt nicht eintippt sondern einfügt ? :mrgreen:
was muss man dagegen in Onchange eingeben? |
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
Delphi-Quellcode:
HTH Frank
procedure TForm1.Edit1Change(sender:TObject);
var s:string; p:integer; begin s:=(sender as TEdit).text; p:=pos(' ',s); while p>0 do begin delete(s,p,s); p:=pos(' ',s); end; (sender as TEdit).text:=s; end; |
Re: Leerzeichen in Edit1.Text verhindern
Hallo, ist es wichtig, dass keine Leezeichen im Edit erscheinen oder dürfen bei einer späteren Verarbeitung des Edittextes keine Leerzeichen vorhanden sein?
Bei Letzterem könntest du die Leerzeichen per StringReplace herausfiltern. |
Re: Leerzeichen in Edit1.Text verhindern
oder eine nicht ganz so schöne methode:
Delphi-Quellcode:
das in onchange einfügen..
var
i: integer; tempstr: string; begin tempstr := ''; for i := 1 to Length(edit1.Text) do if edit1.Text[i] <> ' ' then tempstr := tempstr + edit1.Text[i]; edit1.Text := tempstr; end; |
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
Ich habe diesen Code gehabt. Er war ein kurzer Code mit der Idee if ... ' ' then ... ='' |
Re: Leerzeichen in Edit1.Text verhindern
WAS hat nicht funktioniert?
Und was heisst 'Er war klein !' ??? |
Re: Leerzeichen in Edit1.Text verhindern
besser währe wohl Beides
- erst garkein Leerzeichen beim Eingeben erlauben > muß man es auch nicht mehr unschön löschen - und den Cursor muß man ja auch nicht ständig verschieben :angel:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin if Key = ' ' then Key := #0; end; procedure TForm1.Edit1Change(sender:TObject); var s: String; i: Integer; begin s := TEdit(Sender).Text; if pos(' ', s) > 0 then begin i := TEdit(Sender).SelStart; TEdit(Sender).Text := StringReplace(S, ' ', '', [rfReplaceAll]); TEdit(Sender).SelStart := i; end; end; |
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
|
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
|
Re: Leerzeichen in Edit1.Text verhindern
Was himitsu ist die Lösung :thumb:
|
Re: Leerzeichen in Edit1.Text verhindern
:mrgreen:
Zitat:
|
Re: Leerzeichen in Edit1.Text verhindern
Delphi-Quellcode:
Das muss aber so heißen:
TEdit(Sender).SelStart := i;
Delphi-Quellcode:
Der Cursor ist ja hinter dem bereits eingetippten Leerzeichen, wenn man dieses nun löscht, ist der Cursor 1 zu weit rechts :wink:
TEdit(Sender).SelStart := i - 1;
Zitat:
|
Re: Leerzeichen in Edit1.Text verhindern
der einzige fehler den ich in meinem Code finden konnte war der letzte Parameter von delete...s statt 1.
ansonsten wäre noch die geschichte mit dem cursor, wo man den erstmal sichert und dann ggf. anpasst.
Delphi-Quellcode:
HTH Frank
procedure TForm1.Edit1Change(Sender: TObject);
var s:string; p,cp:integer; begin s:=(sender as TEdit).text; cp:=edit1.SelStart; p:=pos(' ',s); while p>0 do begin delete(s,p,1); if cp<=p then dec(cp); p:=pos(' ',s); end; (sender as TEdit).text:=s; (sender as TEdit).SelStart:=cp; end; |
Re: Leerzeichen in Edit1.Text verhindern
Ich wollte auch nur die Großbuchstaben nehmen
Ich habe diesen Code :
Delphi-Quellcode:
Der Cursor blinkt immer in der 1. Position und wenn ich was eintippe dann kommt ganz vorne !!! :mrgreen:
Edit1.Text := AnsiUpperCase(Edit1.Text);
wo liegt das Problem ? |
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
|
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
du kannst kein Leerzeichen eingeben, wegen Edit1KeyPress also alte Pos = Neue und diese liegt vor dem eingefügtem Text Zitat:
(siehe SelStart) incl. Großschreibung:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin if Key = ' ' then Key := #0; Else Key = AnsiUpperCase(Key)[1]; end; procedure TForm1.Edit1Change(sender:TObject); var s, s2: String; i: Integer; begin s := TEdit(Sender).Text; s2 := AnsiUpperCase(s); if (pos(' ', s2) > 0) or (s <> s2) then begin i := TEdit(Sender).SelStart; TEdit(Sender).Text := AnsiUpperCase(StringReplace(s2, ' ', '', [rfReplaceAll])); TEdit(Sender).SelStart := i; end; end; |
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
ich hab meins nach dem auch nochmal geändert :
Delphi-Quellcode:
var
i: integer; tempstr: string; begin tempstr := ''; for i := 1 to Length(edit1.Text) do if edit1.Text[i] <> ' ' then tempstr := tempstr + edit1.Text[i]; edit1.Text := tempstr; edit1.SelStart := Length(edit1.Text); end; |
Re: Leerzeichen in Edit1.Text verhindern
@lbccaleb: scheib mal mitten in den Text (im Edit) rein :zwinker:
(so ist der Cursor nun immer ganz hinten) |
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
Gruß Frank |
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
aber nach dem Einfügen springt der Cursor wieder nach vorne Es ist aber nicht schlecht. Man kann die Cursor-Position Manual nachträglich positionieren |
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
|
Re: Leerzeichen in Edit1.Text verhindern
Warum nicht einfach die Funktion StringReplace nehmen? Übrigens @Großbuchstaben: TEdit hat doch eine Eigenschaft CharCase oder so.
|
Re: Leerzeichen in Edit1.Text verhindern
ok dann ebend so:
Delphi-Quellcode:
var
i: integer; tempstr, curpos: string; begin tempstr := ''; curpos := edit1.selstart; for i := 1 to Length(edit1.Text) do if edit1.Text[i] <> ' ' then tempstr := tempstr + edit1.Text[i]; edit1.Text := tempstr; edit1.SelStart := curpos; end; |
Re: Leerzeichen in Edit1.Text verhindern
Wozu eigentlich der Kampf mit den Leerzeichen ?
Also WAS soll den in das Editfeld eingegeben werden und warum dürfen keine Leerzeichen drin sein ? Mal angenommen es soll eine Faxnummer eingegeben werden und du willst keine Leerzeichen, damit die Nummern eindeutig vergleichbar sind. Dann ist es doch viel besser, die Leerzeichen in dem Augenblick zu entfernen, wenn der Feldinhalt ausgelesen wird anstatt den Benutzer zu bevormunden. Unser Kopf ist rund, damit das Denken die Richtung wechseln kann PS: Und jetzt bin ich mal gespannt, wie lange es dauert, bis meine Frage beantwortet wird. Oder ob die Gedanken so eingefahren sind, dass die Antwort nie kommt. |
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
Zitat:
|
Re: Leerzeichen in Edit1.Text verhindern
Ich habe diesen Code
Delphi-Quellcode:
weg gelöscht, da wir die Edit1.Text eigeschaft Charcase besser nehmen können
Edit1.Text := AnsiUpperCase(Edit1.Text);
dann blinkt der Cursor richtig |
Re: Leerzeichen in Edit1.Text verhindern
[OT]
Turbo, du kennst schon die "Edit"-Funktion oder? ;) Pushen erst nach 24h! :warn: [/OT] |
Re: Leerzeichen in Edit1.Text verhindern
was genau ist jetzt eigentlich dein problem bzw was sind deine probleme??
|
Re: Leerzeichen in Edit1.Text verhindern
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 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