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 19-09-2004
nicolasdom nicolasdom is offline
Miembro
 
Registrado: ago 2004
Posts: 41
Poder: 0
nicolasdom Va por buen camino
Exclamation Complicado con un DBLookupComboBox...

Hola, gracias por resolverme ya 1000 dudas... Ahora estoy con algo que me tiene mal !!!

Tengo Interbase, me conecto con un IBConnection le puse un Transaction y desues tengo un IBQuery que va a un DataSource y el "BENDITO" DBLookupComboBox... El problema que tengo es que en este no puedo escribir y que de esta forma me vaya completando o guiando a traves del Combo. Es decir... veo el listado de la base pero no me deja escribir nada en el DBLookupComboBox, solo puedo seleccionar con el mouse o el teclado. Me explico? lo que quiero es que el usuario vaya escribiendo y se vaya completando... Va!!! como funciona un combo normal. Pero a este no le puedo encontrar la vuelta... Quien me puede ayudar? MIL GRACIAS...
Responder Con Cita
  #2  
Antiguo 19-09-2004
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
La suite JVCL tiene componentes q te dan esta posibilidad, entre ellos el TJvEditLookup y el TjvDBLookupCombo..
Responder Con Cita
  #3  
Antiguo 19-09-2004
nicolasdom nicolasdom is offline
Miembro
 
Registrado: ago 2004
Posts: 41
Poder: 0
nicolasdom Va por buen camino
Ahora miro... pero me parece que no es un problema de componentes... Al menos es mi sospecha... Me falata configurar algo, cambiar un true, un false.. ALGO que no SE!!! GRGR
Responder Con Cita
  #4  
Antiguo 20-09-2004
buitrago buitrago is offline
Miembro
 
Registrado: sep 2003
Posts: 156
Poder: 21
buitrago Va por buen camino
No es problema de componentes

El de Delphi, no lo permite, es un componente para VER y SELECCIONAR, no para escribir, para eso estan otros, que ya te lo mencionaron, Delphi no te dá el final del camino, algo has de programar, no crees?

Saludos

Fer
Responder Con Cita
  #5  
Antiguo 20-09-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Si no es viable instalar la JVCL puedes usar una funcion de mi autoría, que autocompleta el campo que quieras en un derivado de TcustomEdit. Cambiando un par de cosas, creo que tambien lo podrías usar en un DBedit normal de la VCL.
No chequea si se pega texto en la caja desde el portapapeles.

Código Delphi [-]
  // constantes para el AutoCompleta
  const NO_BUSCAR = 1;
        BUSCAR = 0;
        BUSCAR_SI_CAMBIA = 2; // si no lo encuentra la 1ª vez, no sigue
                             // buscando hasta
                             //  que se borre caracteres anteriores


procedure AutoCompleta(Ctr:TcustomEdit; Key:Word; qry:TDataset;const NombreCampo:string);
const checking :Boolean = False;
      OldText:string='';

var Campo:TField;
begin
  case key of
  vk_DELETE,VK_BACK :
            begin
              Ctr.SelText := '';
              Ctr.Tag:= codigoutil.IfThen(Ctr.Tag=BUSCAR_SI_CAMBIA,BUSCAR, NO_BUSCAR);
            end;
  VK_LEFT,VK_CAPITAL, VK_RIGHT, VK_HOME, VK_END: Ctr.Tag:= NO_BUSCAR;
  else
    Ctr.Tag := codigoutil.IfThen(Ctr.Tag=BUSCAR_SI_CAMBIA,NO_BUSCAR, BUSCAR);
  end;

  if Ctr.Tag = BUSCAR then
  begin
    if checking then Exit;
    checking:= True;
    if (Ctr.SelStart = 0) then
      OldText := Ctr.Text
    else
    OldText:= Copy(Ctr.Text,1,Ctr.SelStart);//+Key;
    if not qry.Active then
      qry.Open;
    if qry.Locate(NombreCampo, OldText  ,[locaseinsensitive, lopartialkey]) then
    begin
      Campo :=qry.FindField(NombreCampo);
      if Campo = nil then
        Exception.Create('proc AutoCompleta: Campo '+QuotedStr(NombreCampo)+' no encontrado')
      else
      begin
        if Key = vk_return then
          Ctr.Text:= Campo.AsString
        else
          Ctr.Text:= OldText + Rightstr(Campo.AsString,Length(Campo.AsString)-Length(OldText));
        Ctr.SelStart:= Length(OldText);
        Ctr.SelLength := Length(Ctr.Text);
  //      SetCaretPos(Length(OldText),1);
        Ctr.Tag:= BUSCAR;
      end;
    end
    else
    begin
      Ctr.Tag:= BUSCAR_SI_CAMBIA;
    end;
    checking:= False;

  end;
end;

Saludos y espero te sirva
Responder Con Cita
  #6  
Antiguo 20-09-2004
nicolasdom nicolasdom is offline
Miembro
 
Registrado: ago 2004
Posts: 41
Poder: 0
nicolasdom Va por buen camino
Disculpen que siga inchando. Antes que nada muchisimas gracias por los consejos. Intentare aplicarlos. En cuanto a la pregunta sigue en pie. Ya que yo con un combo box de devExpress puedo usar perfectamente el autocompletar. Pero para hacer esto primeramente tengo que hacer el query y luego recorrer dicho query agregando elementos al combo. Y lo mio no es de aragan y de no programar una linea de codigo como escuche mas arriba... Yo no arranque programando en delphi... Yo arranque con asembler!!! Pero creo que de esto se trata la vida... Hacer [MAS y MEJOR] - [TIEMPO] = +++ $$$

Gracias igual a los que se preocuparon.

PD: los componentes jvcl donde los puedo encontrar? son gratis?
Responder Con Cita
  #7  
Antiguo 20-09-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por nicolasdom
PD: los componentes jvcl donde los puedo encontrar? son gratis?
Son gratuitos y los puedes bajar de la página del Projecto Jedi.

// Saludos
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


La franja horaria es GMT +2. Ahora son las 19:41:54.


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