Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Leerzeichen in Edit1.Text verhindern (https://www.delphipraxis.net/113270-leerzeichen-edit1-text-verhindern.html)

lbccaleb 5. Mai 2008 15:12

Re: Leerzeichen in Edit1.Text verhindern
 
Zitat:

Zitat von Delphiturbo
Zitat:

Zitat von lbccaleb
oder eine nicht ganz so schöne methode:

das in onchange einfügen..

Es hat nicht funktioniert auch der Code von _frank_!!!
Ich habe diesen Code gehabt. Er war ein kurzer Code mit der Idee if ... ' ' then ... =''

also ich habs gerade so bei mir versucht und bei mir haut alles hinn, egal ob mit reinschreiben oder einfügen, er entfernt immer die ' ' aus dem edit!!

Delphiturbo 5. Mai 2008 15:13

Re: Leerzeichen in Edit1.Text verhindern
 
Zitat:

Zitat von Phoenix
WAS hat nicht funktioniert?

Ich konnte einen Satz mit mehreren Leerzeichen in Edit1.Text einfügen :mrgreen:

Delphiturbo 5. Mai 2008 15:16

Re: Leerzeichen in Edit1.Text verhindern
 
Was himitsu ist die Lösung :thumb:

himitsu 5. Mai 2008 15:18

Re: Leerzeichen in Edit1.Text verhindern
 
:mrgreen:


Zitat:

Zitat von Delphiturbo
Ich konnte einen Satz mit mehreren Leerzeichen in Edit1.Text einfügen :mrgreen:

hattest du auch die Events deinem Edit hinzugefügt?

Fussball-Robby 5. Mai 2008 15:18

Re: Leerzeichen in Edit1.Text verhindern
 
Delphi-Quellcode:
TEdit(Sender).SelStart := i;
Das muss aber so heißen:
Delphi-Quellcode:
TEdit(Sender).SelStart := i - 1;
Der Cursor ist ja hinter dem bereits eingetippten Leerzeichen, wenn man dieses nun löscht, ist der Cursor 1 zu weit rechts :wink:



Zitat:

Zitat von himitsu
:mrgreen:


Zitat:

Zitat von Delphiturbo
Ich konnte einen Satz mit mehreren Leerzeichen in Edit1.Text einfügen :mrgreen:

hattest du auch die Events deinem Edit hinzugefügt?

:mrgreen: :mrgreen:

_frank_ 5. Mai 2008 15:25

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:
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;
HTH Frank

Delphiturbo 5. Mai 2008 15:26

Re: Leerzeichen in Edit1.Text verhindern
 
Ich wollte auch nur die Großbuchstaben nehmen
Ich habe diesen Code :
Delphi-Quellcode:
Edit1.Text := AnsiUpperCase(Edit1.Text);
Der Cursor blinkt immer in der 1. Position und wenn ich was eintippe dann kommt ganz vorne !!! :mrgreen:
wo liegt das Problem ?

Delphiturbo 5. Mai 2008 15:28

Re: Leerzeichen in Edit1.Text verhindern
 
Zitat:

Zitat von _frank_
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.

aber der Cursor blinkt immer ganz vorne. d.h. wenn du eine Buchstabe eintippst dann kommt vorne !!!

himitsu 5. Mai 2008 15:34

Re: Leerzeichen in Edit1.Text verhindern
 
Zitat:

Zitat von Fussball-Robby
Der Cursor ist ja hinter dem bereits eingetippten Leerzeichen, wenn man dieses nun löscht, ist der Cursor 1 zu weit rechts :wink:

Falsch :zwinker:

du kannst kein Leerzeichen eingeben, wegen Edit1KeyPress

also alte Pos = Neue
und diese liegt vor dem eingefügtem Text


Zitat:

aber der Cursor blinkt immer ganz vorne. d.h. wenn du eine Buchstabe eintippst dann kommt vorne !!!
weil du den Text neu ins Edit schreibst und dabei die Cursorposition löschst ;)
(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;

lbccaleb 5. Mai 2008 15:34

Re: Leerzeichen in Edit1.Text verhindern
 
Zitat:

Zitat von Delphiturbo
Zitat:

Zitat von _frank_
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.

aber der Cursor blinkt immer ganz vorne. d.h. wenn du eine Buchstabe eintippst dann kommt vorne !!!


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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 Uhr.
Seite 2 von 4     12 34      

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