PDA

Ver la Versión Completa : Mouse Oculto en evento "ComboBox.DroppedDown:=True;"


martini002
28-08-2012, 03:10:17
Saludos Amigos, donde quiera que se encuentren

Tengo un problemita con un ComboBox,
buscando encontre solo esto:
http://www.clubdelphi.com/foros/archive/index.php?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 :)

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:

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

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:

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