Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2011
dalsim dalsim is offline
Miembro
 
Registrado: jul 2008
Posts: 47
Poder: 0
dalsim Va por buen camino
tcxtexedit o texbox como cuadro de texto en google

alguien sabe que codigo debe ser en un formulario de un progecto de delphi xe haga o emule como el cuadro de texto de busqueda del google que me vaya filtrando lo que hay en el smismo campo de la base de datos que correponde a ese cuadro de texto , algo como excell pones las primeras letras y automaticamente te pone lo que ya anteriormente esta grabado en la base de datos ,, como para ya no escribir mas y asi con los demas cuadros de textos y sus correpondientes textbox
Responder Con Cita
  #2  
Antiguo 07-07-2011
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Con este código en el evento on Change del Edit1 puedes buscar por cualquier letra y te irá actualizando los resultados en el DbGrid1.

Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.text:='select * from Tu Tabla where ucase (Tu campo) like ''%'+UpperCase(Edit1.Text)+'%''order by nombre';
Query1.Open;
Tu Tabla.Locate('Tu campo',Query1.FieldValues['Tu campo'],[]);
DBGrid1.Update;

Saludos y ojalá te sirva
Responder Con Cita
  #3  
Antiguo 07-07-2011
dalsim dalsim is offline
Miembro
 
Registrado: jul 2008
Posts: 47
Poder: 0
dalsim Va por buen camino
gracias por el respuesta

pero mas bien quisiera saber si aparece en el cuadro de cuadro de texto y no el la dbgrid, algo como en google pones unapalabra y te pone algunas concordancias pero en el cuadro de texto, o como si fuera excell que ya has escrito la palabra en la misma columna y te va como completando pero en el cuadro de texto no en una grilla
Responder Con Cita
  #4  
Antiguo 08-07-2011
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Lo siento dalsim, pero hasta ahí llegan mis conocimientos.
Salu2
Responder Con Cita
  #5  
Antiguo 08-07-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.464
Poder: 21
newtron Va camino a la fama
Hola.

No sé si entiendo exactamente lo que quieres pero podrías poner una caja de texto para escribir y exactamente debajo un combobox que irías rellenando con los datos filtrados con un select de la tabla según vaya escribiendo.

Saludos
Responder Con Cita
  #6  
Antiguo 08-07-2011
dalsim dalsim is offline
Miembro
 
Registrado: jul 2008
Posts: 47
Poder: 0
dalsim Va por buen camino
agradesco las respuestas

las respuestas vere la opcion de que me comentas poner un componente abajo del cuadro de texto
Responder Con Cita
  #7  
Antiguo 08-07-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola dalsim, yo también lo haría de la forma que te ha indicado Newtron, solo que en ves de utilizar un ComboBox utilizaría un DBLookupListBox, enlazado a la consulta que te ha puesto radenf y este DBLookupListBox lo mostrarias solo cuando se ha presionado alguna tecla en tu edit.

en el Onchage de tu Edit:

Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.text:='select * from Tu Tabla where ucase (Tu campo) like ''%'+UpperCase(Edit1.Text)+'%''order by nombre';
Query1.Open

para enlazar tu dataset al DBLookupListBox:

ListSource -> DataSource que apunta a tu query
ListField -> campo a mostrar
KeyField -> tu campo codigo

en el OnKeyPress de tu edit puedes hacer viible tu DBLookupListBox y en el OnExit lo haces invisible verificando que no sea el DBLookupListBox al que se pasado el foco. Y capturar las teclas fecha arriba (VK_UP) o abajo (VK_DOWN) en el evento OnKeyDown, para ir de uno a otro.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 08-07-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Si estás usando el component TcxTextEdit, puedes hacer uso de las propiedades ActiveProperties.LookupItems y ActiveProperties.IncrementalSearch junto con el evento OnKeyPress para hacer lo que quieres.

Yo hice algo parecido. Tendrías que hacer algo como:

Código Delphi [-]
type
  TMyForm = class(TForm)
    // Declaración de componentes y eventos
    procedure FormCreate(Sender: TObject);
    procedure cxTextEdit1OnKeyPress(Sender: TObject; var Key: Char);
  private
    FOldChar: Char;
  end;

implementation

procedure TMyForm.FormCreate(Sender: TObject);
begin
  FOldChar := #0
end;

procedure TMyForm.cxTextEdit1OnKeyPress(Sender: TObject; var Key: Char);
begin
  if (Key <> #8) and ((Text = '') or (Length(Text) = SelLength)) and
    (ToUpper(FOldChar) <> ToUpper(Key)) then
  begin
    FOldChar := Key;
    case ActiveProperties.CharCase of
      ecUpperCase:
        Key := ToUpper(Key);
      ecLowerCase:
        Key := ToLower(Key)
    end;
    { Aquí haces un query que busque todos los registros que empiecen con Key:
      select CampoAUsar from Tabla where CampoAUsar like Key || '%' order by CampoAUsar
      y llenas la propiedad ActiveProperties.LookupItems con el resultado de esa consulta:
    }
    ActiveProperties.LookupItems.Clear;
    while not DataSet.Eof do
    begin
      ActiveProperties.LookupItems.Add(DataSet.FieldByName('CampoAUsar').AsString);
      Next
    end
  end
  else
    if (Key = #8) and (ToUpper(FOldChar) <> ToUpper(Text[1])) then
    begin
      FOldChar := Text[1];
      // Aquí haces lo mismo que arriba, buscas los registros que inicien por Key y llenas la lista:
      ActiveProperties.LookupItems.Clear;
      while not DataSet.Eof do
      begin
        ActiveProperties.LookupItems.Add(DataSet.FieldByName('CampoAUsar').AsString);
        Next
      end;
      FindSelection := True
    end
end;

Ahora, lo que estás haciendo ahí es buscar todos los registros que inician con la primera letra que tecleaste y los cargas dentro de la propiedad ActiveProperties.LookupItems, al tener la propiedad ActiveProperties.IncrementalSearch en True, el mismo componente se va a encargar de autocompletar el contenido mientras vas tecleando los demás caracteres.

La parte donde haces la consulta y llenas los valores lo puedes convertir en un procedimiento para que no dupliques código.

Este código no está probado, solo lo basé en un código que tengo pero implementado de otra forma, así que podría tener errores. La propiedad ActiveProperties no es published, así que no la vas a encontrar en el Explorador de Objetos de Delphi.

Espero te sirva.



Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
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
Como Hacer un cuadro de Aviso Informativo rgstuamigo OOP 19 09-10-2008 01:28:29
Formato de Cuadro de texto jegrebahe1 SQL 1 04-03-2008 15:53:31
poner como un marco de cuadro a una imagen kapullok_2006 Varios 1 30-04-2007 17:44:06
Error en cuadro de texto joserobertorc Varios 2 09-10-2004 12:25:11
ocultar cuadro de dialogo de Guardar como valentine Varios 1 03-06-2004 13:04:51


La franja horaria es GMT +2. Ahora son las 23:03:48.


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