[RESUELTO] Como se puede quitar la barra de desplazamiento de un DBGrid
Started by
JoAnCa
, Nov 05 2009 02:51 PM
13 replies to this topic
#1
Posted 05 November 2009 - 02:51 PM
Pues eso,
Como se puede quitar la barra de desplazamiento de un DBGrid, pues necesito mostrar varios datos, (Son dos columnas y tres filas) provenientes de una tabla, que los voy a usar como informacion nada mas, como una leyenda.
Pero luce un poco fea la barra de desplazmto vertical que no se como quitar
O tal vez me puedan sugerir otra forma de como mostrar esa leyenda
Como se puede quitar la barra de desplazamiento de un DBGrid, pues necesito mostrar varios datos, (Son dos columnas y tres filas) provenientes de una tabla, que los voy a usar como informacion nada mas, como una leyenda.
Pero luce un poco fea la barra de desplazmto vertical que no se como quitar
O tal vez me puedan sugerir otra forma de como mostrar esa leyenda
#2
Posted 05 November 2009 - 03:43 PM
Si solo quieres mostrar una leyenda puedes utilizar un StringGrid y hacer una rutina que pase solo 2 registros, otra chapuza .
A ver si alguien sabe de alguna propiedad de DBGrid que haga eso .
Salud OS
A ver si alguien sabe de alguna propiedad de DBGrid que haga eso .
delphi
procedure TForm2.FormShow(Sender: TObject); var i,j: integer; begin Table1.First; for j := 0 to 1 do begin for i := 0 to 2 do begin stringgrid1.Cells[i,j]:= DbGrid1.Columns.Grid.Fields[i].AsString; end; Table1.Next; end; end;
Salud OS
#4
Posted 05 November 2009 - 03:54 PM
Ah vaya, un nuevo componente derivado de DBGrid, muy bueno
Lo dicho, todo lo que hago son verdaderas chapuzas :$
Salud OS
Lo dicho, todo lo que hago son verdaderas chapuzas :$
Salud OS
#5
Posted 05 November 2009 - 03:59 PM
Muchas gracias a los dos, probaré las dos opciones
#6
Posted 05 November 2009 - 04:55 PM
delphi
type TNoScrollDBGrid = class(TDBGrid) private procedure WMNCCalcSize(var Msg: TMessage); message WM_NCCALCSIZE; end; procedure TNoScrollDBGrid.WMNCCalcSize(var Msg: TMessage); const Scrollstyles = WS_VSCROLL or WS_HSCROLL; var Style: Integer; begin Style := GetWindowLong(Handle, GWL_STYLE); if (Style and Scrollstyles) <> 0 then SetWindowLong(Handle, GWL_STYLE, Style and not Scrollstyles); inherited; end;
#7
Posted 06 November 2009 - 05:44 AM
Sin crear nuevos componentes se puede alterar el DBGrid normal en tiempo de ejecución:
Saludos.
delphi
procedure TForm1.FormShow(Sender: TObject); begin SetWindowLong(DBGrid1.Handle, GWL_STYLE, GetWindowLong(DBGrid1.Handle, GWL_STYLE) and not(WS_VSCROLL or WS_HSCROLL)); end;
Saludos.
#8
Posted 06 November 2009 - 10:21 AM
Ya ya, voy a tener que borrar mi chapuza
Salud OS
Salud OS
#9
Posted 06 November 2009 - 11:16 AM
Vaya, esto es lo bueno que tiene la informática y la programación ...
... Siempre hay un método más fácil de hacer algo .... 8-)
... Siempre hay un método más fácil de hacer algo .... 8-)
#10
Posted 09 November 2009 - 09:27 AM
Hola
Aunque resolví con el componente heredado que me recomendó cannabis, quise probar todos los metodos.
escafandra, probé tu metodo y aunque no me dio error, el DBGrid siguio con la barra vertical
enecumene
Me paso lo mismo con tu metodo, en que lugar hay que poner ese codigo para que funcione?, tal vez me haya faltado algo
Aunque resolví con el componente heredado que me recomendó cannabis, quise probar todos los metodos.
escafandra, probé tu metodo y aunque no me dio error, el DBGrid siguio con la barra vertical
enecumene
Me paso lo mismo con tu metodo, en que lugar hay que poner ese codigo para que funcione?, tal vez me haya faltado algo
#11
Posted 09 November 2009 - 09:42 AM
Pues en mi caso no va en ningún evento del DBGrid, por lo tanto va "fuera":
Saludos.
delphi
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids; type TForm1 = class(TForm) DBGrid1: TDBGrid; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; type TNoScrollDBGrid = class(TDBGrid) private procedure WMNCCalcSize(var Msg: TMessage); message WM_NCCALCSIZE; end; var Form1: TForm1; implementation {$R *.dfm} procedure TNoScrollDBGrid.WMNCCalcSize(var Msg: TMessage); const Scrollstyles = WS_VSCROLL or WS_HSCROLL; var Style: Integer; begin Style := GetWindowLong(Handle, GWL_STYLE); if (Style and Scrollstyles) <> 0 then SetWindowLong(Handle, GWL_STYLE, Style and not Scrollstyles); inherited; end; end.
Saludos.
#12
Posted 09 November 2009 - 11:02 AM
Pues este es mi codigo, y sigue la barra ahí
Será que lo estas probando sin datos
delphi
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, DB, ADODB; type TForm1 = class(TForm) DBGrid1: TDBGrid; DataSource1: TDataSource; ADOConnection1: TADOConnection; ADOTable1: TADOTable; private { Private declarations } public { Public declarations } end; type TNoScrollDBGrid = class(TDBGrid) private procedure WMNCCalcSize(var Msg: TMessage); message WM_NCCALCSIZE; end; var Form1: TForm1; implementation {$R *.dfm} procedure TNoScrollDBGrid.WMNCCalcSize(var Msg: TMessage); const Scrollstyles = WS_VSCROLL or WS_HSCROLL; var Style: Integer; begin Style := GetWindowLong(Handle, GWL_STYLE); if (Style and Scrollstyles) <> 0 then SetWindowLong(Handle, GWL_STYLE, Style and not Scrollstyles); inherited; end; end.
Será que lo estas probando sin datos
#13
Posted 09 November 2009 - 11:17 AM
Bueno, prueba con este sencillo:
delphi
ShowScrollBar(DBGrid1.Handle, SB_VERT, false);
#14
Posted 11 November 2009 - 11:06 AM
Ahora si funcionó bien
Pero como estoy usando el evento OnDrawColumnCell, para colorear las celdas, tuve que poner ese codigo, dentro de este evento, si no, me volvia a poner la barra.
Pero como estoy usando el evento OnDrawColumnCell, para colorear las celdas, tuve que poner ese codigo, dentro de este evento, si no, me volvia a poner la barra.