Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Focused mas no selected (https://www.clubdelphi.com/foros/showthread.php?t=25827)

elcigarra 05-10-2005 04:24:21

Focused mas no selected
 
Amigos, dos preguntas parecidas (sobre texto seleccionado).

a) Tengo un TEdit y en determinada opción de la aplicación le mando el foco. Cuando este componente toma el foco, su texto queda seleccionado (en azul). ¿Puedo darle foco sin que se seleccione el texto, es decir que el cursor quede a la derecha esperando nuevos caracteres?

b) Tengo el mismo edit y un StringList.
Supongamos que escribo algo de texto en un comboBox. Si es el caso se agregará a la derecha del cursor el resto de una opción del combo que coincida, con texto "seleccionado". ¿Puedo simular esto escribiendo en el Edit y completando (si es el caso) con texto seleccionado de algun String de la lista que coincida? Es decir, que en todo momento el Edit combinado con el StringList muestre exactamente lo mismo que mostraría un ComboBox con esa lista de "Items" si se estuviera escribiendo sobre él?

Delfino 05-10-2005 07:55:58

Para lo primero, la propiedad AutoSelect tiene q ser a False, tb puede servirte la propiedad SelStart para posicionarte al inicio del edit.

para lo segundo, pon un combo y asignale csSimple a su propiedad Style, asi tendras una edit..

Caro 05-10-2005 19:41:46

Hola

Para lo primero podrias hacer lo siguiente en el evento OnEnter:

Código Delphi [-]
procedure TgbFrm_Principal.Edit2Enter(Sender: TObject);
begin
       Edit.SelStart:=Length(Edit.text);
       Edit.SelLength:=Length(Edit.text);
end;

Saludos

elcigarra 05-10-2005 21:39:45

me contesto yo mismo. Para simular el autoselect de un Combo con un TEdit (Edit1) y un StringList (Lista):

Código Delphi [-]
  
procedure TForm1.Edit1Change(Sender: TObject);
var
  i,lon: Integer;
begin
  for i := 0 to Lista.Count-1 do begin
    // para que sea igual al de un combo debe ser case insensitive
    if Pos(UpperCase(Edit1.Text),UpperCase(Lista.Strings[i])) = 1 then begin 
      Lon:= Length(Edit1.Text); // Posición del cursor
      // Le sumo lo que restaría del string coincidente 
      // sin cambiar las cases que ya tengo escritas
      Edit1.Text := Edit1.Text + 
                    AnsiRightStr(Lista.Strings[i],Length(Lista.Strings[i])-Lon);
      Edit1.SelStart := Lon; // Desde donde va a seleccionar
      Edit1.SelLength := Length(Edit1.Text) - Lon; // N° de caracteres a seleccionar
      Exit; // Por si hay más de una coincidencia
    end;
  end;
end;


La franja horaria es GMT +2. Ahora son las 14:28:56.

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