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