Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-09-2013
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Question Autocompletar en TEdit

Buenas, estoy buscando la forma de hacer el autocompletado de un TEdit.
Lo cuento en detalle.
Ya he logrado usar la librería de Windows "Shlwapi.dll" pero a medias.

Cuando estoy en la caja de texto y presiono algunas teclas me hace el autocompletado, pero de cosas que ya hay guardadas en algún lugar del S.O. Esto está bien y es una parte de lo que quiero hacer. Vale recordar que se va llenando con textos que se le cargan, digamos, desde el IE.

Lo que quiero ahora es que también "memorice" lo que yo le pongo en mi caja de texto para que en una próxima intervención también sea parte de la lista.

Un poco de código:

Código Delphi [-]
//...
function SHAutoComplete(hwndEdit: HWnd; dwFlags: DWORD): HResult; stdcall; external 'Shlwapi.dll';

//...

const
  SHACF_AUTOSUGGEST_FORCE_ON = $10000000;
  SHACF_AUTOSUGGEST_FORCE_OFF = $20000000;
  SHACF_AUTOAPPEND_FORCE_ON = $40000000;
  SHACF_AUTOAPPEND_FORCE_OFF = $80000000;
  SHACF_DEFAULT = $0;
  SHACF_FILESYSTEM = $1;
  SHACF_URLHISTORY = $2;
  SHACF_URLMRU = $4;

//...

procedure TfrmPrincipal.FormCreate(Sender: TObject);
var
  Options: dWord;
begin
//...

  Options := SHACF_FILESYSTEM or SHACF_URLHISTORY or SHACF_URLMRU or
    SHACF_AUTOSUGGEST_FORCE_ON or SHACF_AUTOAPPEND_FORCE_ON;
  SHAutoComplete(txtAuto.Handle, Options);

end;

//...

Mi caja de texto "txtAuto" funciona como lo he mencionado, mientras escribo me va haciendo sugerencias de lo que tiene guardado en algún lugar.
Si pongo ms ya me sugiere msconfig, este comportamiento es conocido.
Ahora pongo "santiago", esta palabra no está registrada aún por lo cual no me hace sugerencia. Lo que quiero es registrarla para que la próxima vez ya me la ponga como parte de las sugerencias. O sea, pongo "sa" y ya tenga "santiago" en la lista que aparece.

Espero haber sido claro.

Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #2  
Antiguo 10-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Santiago.

A primera vista la complicación que creo se te va a presentar con el uso de SHAutoComplete es que, para que memorice tus ingresos, vas a tener que almacenarlos en el archivo de historial de IE.

Esto último, que seguramente sea posible (aunque desconozco como), pienso que tiene al menos dos desventajas. La primera es que quién escriba en el navegador recibiría el autocompletado de tu "diccionario personalizado" sin que sea necesariamente una URL. La segunda es que algún usuario podría borrar el historial o seleccionar la opción "Eliminar el historial de navegación al salir"...

Tal vez exista una solución alternativa mas simple... ¿ Cuál es la finalidad del código ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 10-09-2013
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Wink

Cita:
Empezado por ecfisa Ver Mensaje
Hola Santiago.

A primera vista la complicación que creo se te va a presentar con el uso de SHAutoComplete es que, para que memorice tus ingresos, vas a tener que almacenarlos en el archivo de historial de IE.

Esto último, que seguramente sea posible (aunque desconozco como), pienso que tiene al menos dos desventajas. La primera es que quién escriba en el navegador recibiría el autocompletado de tu "diccionario personalizado" sin que sea necesariamente una URL. La segunda es que algún usuario podría borrar el historial o seleccionar la opción "Eliminar el historial de navegación al salir"...

Tal vez exista una solución alternativa mas simple... ¿ Cuál es la finalidad del código ?

Saludos
Entiendo lo de las desventajas, pero para mi caso no importaría. Que en IE vean mi diccionario personal no tiene importancia. Que lo borren, bueno, es un riesgo que habrá que correr.

Si hay una solución mas simple, mejor.
La finalidad del código es llenar unas cajitas de texto en una ventana de facturación que no se pueden dejar libres. Nombre del cliente, teléfono, dirección. La manera mas "fácil", a priori, era esto.
Sería bueno encontrar una buena solución para poder escribir en ese archivo.

Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #4  
Antiguo 10-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Santiago.

No sé si cumplirá tus espectativas, pero una alternativa simple es usar un TComboBox, por ejemplo:
Código Delphi [-]
...
const
  HISTORIAL = 'C:\CARPETA\HISTORIAL.TXT';

procedure TForm1.FormCreate(Sender: TObject);
begin
  with ComboBox1 do
  begin
    Clear;
    if FileExists(HISTORIAL) then
      Items.LoadFromFile(HISTORIAL);
    Sorted := True;
    Style  := csDropDown;
  end;
end;

procedure TForm1.ComboBox1Exit(Sender: TObject);
begin
  with ComboBox1.Items do
  begin
    Add(ComboBox1.Text);
    SaveToFile(HISTORIAL);
  end;
end;
...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 10-09-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
santiago14,

Cita:
Empezado por santiago14
...estoy buscando la forma de hacer el autocompletado de un TEdit...he logrado usar la librería de Windows "Shlwapi.dll" pero a medias...
Revisa este link:
Cita:
The AutoComplete COM object : http://users.skynet.be/oleole/AutoComplete.html
Espero sea útil

Nelson.
Responder Con Cita
  #6  
Antiguo 10-09-2013
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Thumbs up

Cita:
Empezado por nlsgarcia Ver Mensaje
santiago14,



Revisa este link:
Espero sea útil

Nelson.
Gracias, voy a revisarlo y les cuento.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #7  
Antiguo 10-09-2013
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Thumbs up

Cita:
Empezado por ecfisa Ver Mensaje
Hola Santiago.

No sé si cumplirá tus espectativas, pero una alternativa simple es usar un TComboBox, por ejemplo:
Código Delphi [-]... const HISTORIAL = 'C:\CARPETA\HISTORIAL.TXT'; procedure TForm1.FormCreate(Sender: TObject); begin with ComboBox1 do begin Clear; if FileExists(HISTORIAL) then Items.LoadFromFile(HISTORIAL); Sorted := True; Style := csDropDown; end; end; procedure TForm1.ComboBox1Exit(Sender: TObject); begin with ComboBox1.Items do begin Add(ComboBox1.Text); SaveToFile(HISTORIAL); end; end; ...


Saludos
La verdad es que esto sí que está interesante. Lo voy a probar y les digo. Sencillo, potente...
Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Autocompletar Raistlin Varios 1 29-01-2007 12:05:35
Autocompletar un TEdit (solución, no consulta) Walterdf Varios 4 05-10-2005 20:23:35
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera atirado Varios 4 11-09-2004 19:13:48
Ayuda. Autocompletar TEdit Fonso_esp Varios 2 23-04-2004 15:31:05
Edit con autocompletar Rox77 Varios 1 21-05-2003 10:36:05


La franja horaria es GMT +2. Ahora son las 04:48:33.


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
Copyright 1996-2007 Club Delphi