PDA

Ver la Versión Completa : problema con edit.


dgallardov
08-09-2008, 23:27:12
Hola tengo un edit en el cual estoy haciendo una validacion
el problema se presenta cuando por un motivo que desconozco el cursor se va al comienzo del edit y el texto se escribe adelante de las demas letras, mi consulta especifica que solucionaria este problema seria alguna forma de hacer que el cursor se vaya a la ultima letra ingresada en el edit o al final del edit.

saludos.

Fenareth
08-09-2008, 23:55:20
Hola dgallardov !:)

Quiero tratar de entender...

Sin que ABSOLUTAMENTE NADA pase el cursor cambia de estar en la última posición al ir escribiendo, hasta la primera posición del TEdit ??? :confused:

Caro
09-09-2008, 00:02:21
Hola dgallardov, puedes utilizar las propiedades SelStart y SeLength del Edit.


Edit1.SetFocus;
Edit1.SelLength := 0;
Edit1.SelStart := Length(Edit1.Text);


Saluditos

Neftali [Germán.Estévez]
09-09-2008, 08:47:14
Efectivamente con las propiedades que te expone Caro, podrás controlar la posición del cursor dentro del Edit y algunas cosas más. De todas formas, creo que lo que interesa saber en este caso, no es cómo evitar o solvertar ese comportamiento, sino porqué te está sucediendo eso.

Tal vez deberías explicar mejor qué estás haciendo con el Edit.

dgallardov
09-09-2008, 14:19:41
Hola dgallardov, puedes utilizar las propiedades SelStart y SeLength del Edit.


Edit1.SetFocus;
Edit1.SelLength := 0;
Edit1.SelStart := Length(Edit1.Text);


Saluditos

se agradece el codigo, eso me salvo, lo que estaba haciendo era lo siguiete
estaba validando un dni o rut en chile, al escribir los caracteres en el edit tenia que colocar automaticamente el digito verificador pero tenia que hacerlo dinamicamente ya que el rut puede ser menor a 8 caracteres, use este codigo por algun motivo al escribir el segundo caracter se posicionaba al comienzo del edit.
procedure TForm1.Edit1Change(Sender: TObject);
var
texto,rut,letra,ultimo:string;
largo:integer;
i:integer;

begin
texto:=edit1.text;
largo:=length(texto);
i:=0;
for i:=1 to largo do
begin
if not(copy(texto,i,1) = '-') then
begin
rut:=rut+copy(texto,i,1);
end;

if i=(largo-1) then
begin
rut:=rut+'-';
end;
end;


edit1.Text:=rut;
Edit1.SetFocus;
Edit1.SelLength := 0;
Edit1.SelStart := Length(Edit1.Text);
end;

muy agradecido por la respuesta, he solucionado lo que necesitaba.

hasta pronto

RapiBurrito
10-09-2008, 04:20:18
Hola dgallardov, puedes utilizar las propiedades SelStart y SeLength del Edit.

Código Delphi [-] (http://www.clubdelphi.com/foros/#) Edit1.SetFocus; Edit1.SelLength := 0; Edit1.SelStart := Length(Edit1.Text);


Saluditos


Gracias!!! Este codigo me ayudo a mi Bastante :D

Y Gracias a quien pregunto!

Este es mi primer Post en esta comunidad :P!

Espero poder ayudar mas de lo que se que voy a molestar T_T!

Saludos!

elcolo83
11-09-2008, 15:24:17
Otra forma tambien seria algo asi:

procedure TForm1.Edit1Change(Sender: TObject);
var i: integer;
begin
i:= e.SelStart;

//Aca poner el codigo que vos quieras...

E.SelStart:= i;
end;


Con esto mantenemos siempre el cursor en la posición que corresponde y evitamos que si edita algun caracter del centro del texto el cursor se mueva al final... es una opción mas...

Saludos