Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ScrollBar Vertical del DBGRID desaparece (https://www.clubdelphi.com/foros/showthread.php?t=18788)

le4br 23-02-2005 05:11:31

ScrollBar Vertical del DBGRID desaparece
 
Hola,

Estoy hacendo un busca entre fechas (between), usando ADOQuery, y todo funciona bien. En el clic de un botón abro la consulta SQL en una tabla (Access), sin problemas (decena de rows son mostrados com el scroll vertical).

Dispos de una otra distinta busca, si el resultado de la consulta son una o pocas linas (rows) el Scroll vertical del DBGRid desaparece. hasta aki, ok! Pero cuando el usuario cancelar la busca (SQL.Clear) o hacer otra busca dondo son retornado decenas de linas, el scroll vertical del DBGRID no coinciden con la cantidad de registro que tenga la tabla, o sea, todos los resultados son retornados pero, el scroll nunca aparece.

Percebi que todo volta a funcionar (scroll bar aparecer) depois de hacer exactamente la misma busca 2 veces.

Para solucionar, estoy tentando forzar el scroll vertical a aparecer en el evento DataChange del DataSource. Algo como:

Código Delphi [-]
procedure TForm1.DataSource2DataChange(Sender: TObject; Field: TField);
begin
ShowScrollBar(DBGrid2.Handle, SB_VERT, ADOQuery2.RecordCount > 0);
end;
Pero tambien no funciona bien. Si alguien puede orientarme se lo agradeceré.

Saludos a todos!

le4br 11-03-2005 06:19:34

Sigo com el problema!
 
Sigo com el problema. Ahora tengo otro dbgrid donde tengo que hacer filtros utilizando SQL. El filtro funciona bien pero, la barra (scroll vertical) en DBGrid no aparece si anteriormente el ItemIndex del ComboBox (2 rows) estava seleccionado.

Hay como hacer que la barra vertical en DBGrid, SIEMPRE aparecia mesmo si son mostrados un o dos rows?

Gracias de antemano.
Perdon por el espanol.

Código Delphi [-]
if ComboBox1.ItemIndex = 0 then
with ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM AGENDA ORDER BY apelido ASC'); // 100 rows en DBGrid
Open;
end

else if ComboBox1.ItemIndex = 1 then
with ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM agenda WHERE apelido LIKE "A%"'); // Solo 2 rows en DBGrid
Open;
end

jose.mendez 20-03-2005 21:58:29

Me pasa lo mismo
 
Hola:
Me pasa lo mismo que a ti con un dbgrid estoy probando con:
SetScrollRange
y
ShowScrollBar

Y a veces va y otras no , el motivo no lo sé, seguire intentandolo si lo consigo te dire algo. Sospecho de que sea algun problema gráfico ( Tarjeta de video) .
Si tienes alguna pista más aunaremos esfuerzos

Un saludo

Gabriel 21-03-2005 10:09:09

prueba con el cuento de la vieja.

obliga al DBGrid a redibujarse

Panel align al botton
DBGrid align al Client

Panel1.Height := Panel1.Height + 1;
Panel1.Height := Panel1.Height - 1;

al redimencionar el panel Panel1.Height := Panel1.Height + 1,( ojo el Grid no lo redimencionarias por que ya esta al Client ) tambien redimencionas el Grid, lo haces un Height mas pequeño, con lo que obligas a que se dibuje de nuevo.

Luego lo vuelves a poner como estaba, Panel1.Height := Panel1.Height - 1;

Si alguien conoce alguna mas seria, se agradece.


La franja horaria es GMT +2. Ahora son las 19:35:32.

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