Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dejar cursor al final (https://www.clubdelphi.com/foros/showthread.php?t=15256)

jam888 15-10-2004 19:32:10

Dejar cursor al final
 
Que tal amigos del foro, espero que bien tengo el siguiente inconveniente
Estoy ejecutando la siguiente funcion en el evento onchange y me ocurre lo siguiente, cada ves que presiono un numero el cursor se me va al principio y mi palabra pierde el sentido, aca dejo los preocedimientoe que ejecuto.

Ejemplo:Al querer escribir delphi tecleo delp y si de repente presiono la tecla uno(1) el cursor se va al principio (el uno no aparece)y termino escribiendo hidelp(la otra parte de delphi al principio por que esta ahi el cursor) ¿Como hago para que el cursor este siempre al ultimo pòr mas que presione numeros?

procedure TForm1.Edit10Change(Sender: TObject);
begin
Edit10.Text:=SoloPalabra(Edit10.Text);
end;

end.

function SoloPalabra(Texto : String) : String;
var
palabra : String;
i, k : integer;
begin
k := Length(Texto);
for i := 1 to k do
if Texto[i] in ['0','1',....,'9'] {aqui pongo todos los digitos...}
then Break
else palabra := palabra + Texto[i] ;
Result := palabra;
end;

darkpale 15-10-2004 20:37:49

Hola no te funciona mejor esto?

Código Delphi [-]
procedure TForm1.Edit10KeyPress(Sender: TObject; var Key: Char);
var
tx:char;
begin
tx:=char(key);
if tx in ['0'..'9'] then
  key:=#0;
end;

jam888 16-10-2004 01:30:38

No sirve
 
Pasa lo mismo cuando presiono un numero, el cursor vuelve al principio de la cajita de texto.

Lepe 16-10-2004 12:26:00

Jam, lo que ocurre es que en el evento ONchange, estas cambiando la propiedad text, por eso el cursor se te vuelve al inicio. No uses la funcion "solo palabra", directamente escribe el código de darkpale en el evento KeyPress.

Si por cualquier motivo deseas usar la funcion solopalabra, entonces haz esto:
Código Delphi [-]
function SoloPalabra(Texto : String) : String;
var
i:Integer;
begin
for i := 1 to Length(Texto) do
if not( Texto[i] in ['0'..'9']) then {aqui pongo todos los digitos...}
 Result := result + Texto[i] ;

end;
procedure TForm1.Edit10Change(Sender: TObject);
begin
Edit10.Text:=SoloPalabra(Edit10.Text);
edit10.Selstart := length(edit10.text);
edit10.SelLength := 0;
end;

La ventaja de usar el evento change, es que tambien validará el texto pegado desde el portapapeles, usando keyPress, no se validará.


Saludos


La franja horaria es GMT +2. Ahora son las 23:28:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi