Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mouse Oculto en evento "ComboBox.DroppedDown:=True;" (https://www.clubdelphi.com/foros/showthread.php?t=80004)

martini002 28-08-2012 03:10:17

Mouse Oculto en evento "ComboBox.DroppedDown:=True;"
 
Saludos Amigos, donde quiera que se encuentren

Tengo un problemita con un ComboBox,
buscando encontre solo esto:
http://www.clubdelphi.com/foros/arch...p?t-25459.html

La cuestion es, que cuando esta propiedad se activa
"ComboBox.DroppedDown:=True;" para mostrar la lista
del ComboBox, en el evento OnChange, el Mouse se desaparece,
el puntero, funciona tal cual como Carlos Arevalo lo explica alli
funciona solo en la lista si lo pasas por casualidad encima de este,
presionas ESC y vuelve a aparecer, en cambio cuando presiono
el boton para desplegar la lista, no se desaparece,
he usado "ShowCursor(True);" pero no tiene funcion alli.

les dejo un extracto del codigo a ver si ustedes ven algo extraño
Gracias infinitas :)

Código Delphi [-]
procedure TForm1.BoxCodigoChange(Sender: TObject);
Var
  Articulo:String;
begin
  with ZQuery1 do
      begin
        Close;
        with SQL do
          begin
            Clear;
            Add('Select Articulo From Inventario Where Articulo Like '+QuotedStr('%'+BoxCodigo.Text+'%')+' Order by Articulo');
            Open;
            BoxCodigo.Items.Clear;
            First;//Te posicionas en el primer registro
            While Not(ZQuery1.Eof) do //Recorres mientras no termine de leer todos los registros de la consulta
              begin
                Articulo:= ZQuery1.Fields[0].AsString;
                BoxCodigo.Items.Add(Articulo);
                Next;//Pasas al siguiente registro
              end;
          end;
      end;
  BoxCodigo.SelStart := Length(BoxCodigo.Text);//Posiciona el cursor en la ultima posicion
  BoxCodigo.DroppedDown:=True;
  ShowCursor(True);
end;

Caral 28-08-2012 03:40:09

Hola
Aparte de lo que preguntas no entiendo por que cargas los items del combobox cada vez que cambia en el evento onchage ?.
No se, no lo veo claro el por que ?.
saludos

martini002 28-08-2012 03:43:37

Hola Caral,
Bueno, porque es la unica forma que encontre de que cuando escriba algo
me aparezca en la lista abajo, porque podemos buscar una palabra inscrita
dentro de un registro, ejemplo hay dos registros "Chicles de Menta" y "Caramelos de Menta"
entonces cuando escriba Menta, me apareceran esos dos registros,
y aparte se desplegara la lista, para seleccionar de una vez el que queramos,
eso.

Gracias

Edito:
Y bueno respecto a lo primero,
el puntero del mouse se oculta solo, cuando termina ese procedimiento
y no puedo hacerlo aparecer a menos que presione Escape,

Caral 28-08-2012 03:49:37

Hola
Osea, en el combobox escribes la palabra, vas filtrando y vas colocando el resultado en el mismo combobox.
Interesante.
Saludos

Caral 28-08-2012 03:55:38

Hola
A ver que pasa asi:
Código Delphi [-]
procedure TForm1.BoxCodigoChange(Sender: TObject);
Var
  Articulo:String;
begin
  with ZQuery1 do
      begin
        Close;
        with SQL do
          begin
            Clear;
            Add('Select Articulo From Inventario Where Articulo Like '+QuotedStr('%'+BoxCodigo.Text+'%')+' Order by Articulo');
            Open;
            BoxCodigo.Items.Clear;
            First;//Te posicionas en el primer registro
            While Not(ZQuery1.Eof) do //Recorres mientras no termine de leer todos los registros de la consulta
              begin
                Articulo:= ZQuery1.Fields[0].AsString;
                BoxCodigo.Items.Add(Articulo);
                Next;//Pasas al siguiente registro
               BoxCodigo.SelStart := Length(BoxCodigo.Text);//Posiciona el cursor en la ultima posicion
              BoxCodigo.DroppedDown:=True;
              ShowCursor(True);
              end;
          end;
      end;
  
end;
No se.
Saludos

martini002 28-08-2012 04:00:21

Hola
Acabo de encontrar un error,
muy grave por cierto,
la cuestion es que escribo algo,
esto se agrega a la lista y cuando lo selecciono
no se marca en la casilla :( esto supongo yo en mi ignorancia
que debe ser por el OnChange.
Probare con tu codigo a ver como me va.
Gracias

Edito:
Me retracto, ahora que lo estoy probando bien
resulta ser que se vuelve loco!
y escribe palabras y letras al principio y al final
hahaha a ver de que otra forma podemos manejar esto.

Caral 28-08-2012 04:12:58

Hola
Pregunto:
Es imperativo el combobox ?
Saludos

martini002 28-08-2012 04:18:56

Pues si, porque quisiera que en ese mismo
cuadro pudiera escribirse el codigo, nombre o parte del nombre
de un articulo cualquiera en el inventario,
mira lo que se me ocurrio, aunque no funciona como quisiera
por lo menos es estable, me gustaria que cuando escribiera
desplegara la lista, y pudieras seguir escribiendo(alli esta el detalle)

mira, cambie el OnChange por OnDropDown

Código Delphi [-]
procedure TForm1.BoxCodigoDropDown(Sender: TObject);
Var
  Articulo:String;
begin
  with ZQuery1 do
      begin
        Close;
        with SQL do
          begin
            Clear;
            Add('Select Articulo From Inventario Where Articulo Like '+QuotedStr('%'+BoxCodigo.Text+'%')+' Order by Articulo');
            Open;
            BoxCodigo.Items.Clear;
            First;//Te posicionas en el primer registro
            While Not(ZQuery1.Eof) do //Recorres mientras no termine de leer todos los registros de la consulta
              begin
                Articulo:= ZQuery1.Fields[0].AsString;
                BoxCodigo.Items.Add(Articulo);
                Next;//Pasas al siguiente registro
              end;
          end;
      end;
end;

Caral 28-08-2012 04:40:44

Hola
A ver:
Código Delphi [-]
procedure TForm1.BoxCodigoChange(Sender: TObject);
Var
  Articulo:String;
begin
            BoxCodigo.Items.Clear;
            ZQuery1.Text:= 'Select Articulo From Inventario Where Articulo Like '+QuotedStr('%'+BoxCodigo.Text+'%')+' Order by Articulo';
            ZQuery1.Open;
            While Not ZQuery1.Eof do //Recorres mientras no termine de leer todos los registros de la consulta
            begin
                Articulo:= ZQuery1.Fields[0].AsString;
                BoxCodigo.Items.Add(Articulo);
                Next;
           end;
           ZQuery1.Close;
end;
Saludos

martini002 28-08-2012 05:02:53

Hola Caral,
Un segundo, estoy haciendo unas pruebas con algo,
a ver si funciona, gracias por responder
Saludos


La franja horaria es GMT +2. Ahora son las 17:12: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