Jump to content


Photo

[RESUELTO] Como se puede quitar la barra de desplazamiento de un DBGrid


  • Please log in to reply
13 replies to this topic

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

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
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

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 :D :D :D.

A ver si alguien sabe de alguna propiedad de DBGrid que haga eso :).



delphi
  1. procedure TForm2.FormShow(Sender: TObject);
  2. var
  3.   i,j: integer;
  4. begin
  5.   Table1.First;
  6.   for j := 0 to 1 do begin
  7.       for i := 0 to 2 do begin
  8.           stringgrid1.Cells[i,j]:= DbGrid1.Columns.Grid.Fields[i].AsString;
  9.       end;
  10.       Table1.Next;
  11.   end;
  12. end;



Salud OS
  • 0

#3 cannabis

cannabis

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 257 posts
  • LocationMéxico

Posted 05 November 2009 - 03:49 PM

Otra opción.


Salud.

  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 05 November 2009 - 03:54 PM

Ah vaya, un nuevo componente derivado de DBGrid, muy bueno :) (y)

Lo dicho, todo lo que hago son verdaderas chapuzas :$

Salud OS
  • 0

#5 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

Posted 05 November 2009 - 03:59 PM

Muchas gracias a los dos, probaré las dos opciones  :cheesy:
  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 05 November 2009 - 04:55 PM



delphi
  1. type
  2.   TNoScrollDBGrid = class(TDBGrid)
  3.   private
  4.     procedure WMNCCalcSize(var Msg: TMessage);
  5.       message WM_NCCALCSIZE;
  6.   end;
  7.  
  8. procedure TNoScrollDBGrid.WMNCCalcSize(var Msg: TMessage);
  9. const
  10.   Scrollstyles = WS_VSCROLL or WS_HSCROLL;
  11. var
  12.   Style: Integer;
  13. begin
  14.   Style := GetWindowLong(Handle, GWL_STYLE);
  15.   if (Style and Scrollstyles) <> 0 then
  16.     SetWindowLong(Handle, GWL_STYLE, Style and not Scrollstyles);
  17.   inherited;
  18. end;


  • 0

#7 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4107 posts
  • LocationMadrid - España

Posted 06 November 2009 - 05:44 AM

Sin crear nuevos componentes se puede alterar el DBGrid normal en tiempo de ejecución:


delphi
  1. procedure TForm1.FormShow(Sender: TObject);
  2. begin
  3.   SetWindowLong(DBGrid1.Handle, GWL_STYLE, GetWindowLong(DBGrid1.Handle, GWL_STYLE) and not(WS_VSCROLL or WS_HSCROLL));
  4. end;



Saludos.
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 06 November 2009 - 10:21 AM

Ya ya, voy a tener que borrar mi chapuza :p :D :D :D

Salud OS
  • 0

#9 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

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-) *-)

(y)  :D
  • 0

#10 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

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,  :s en que lugar hay que poner ese codigo para que funcione?, tal vez me haya faltado algo  *-)



  • 0

#11 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 09 November 2009 - 09:42 AM

Pues en mi caso no va en ningún evento del DBGrid, por lo tanto va "fuera":



delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, Grids, DBGrids;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     DBGrid1: TDBGrid;
  12.     procedure FormCreate(Sender: TObject);
  13.   private
  14.     { Private declarations }
  15.   public
  16.     { Public declarations }
  17.   end;
  18.  
  19. type
  20.   TNoScrollDBGrid = class(TDBGrid)
  21.   private
  22.     procedure WMNCCalcSize(var Msg: TMessage);
  23.     message WM_NCCALCSIZE;
  24.   end;
  25.  
  26. var
  27.   Form1: TForm1;
  28.  
  29. implementation
  30.  
  31. {$R *.dfm}
  32.  
  33. procedure TNoScrollDBGrid.WMNCCalcSize(var Msg: TMessage);
  34. const
  35.   Scrollstyles = WS_VSCROLL or WS_HSCROLL;
  36. var
  37.   Style: Integer;
  38. begin
  39.   Style := GetWindowLong(Handle, GWL_STYLE);
  40.   if (Style and Scrollstyles) <> 0 then
  41.     SetWindowLong(Handle, GWL_STYLE, Style and not Scrollstyles);
  42.   inherited;
  43. end;
  44.  
  45. end.



Saludos.
  • 0

#12 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

Posted 09 November 2009 - 11:02 AM

Pues este es mi codigo, y sigue la barra ahí



delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, Grids, DBGrids, DB, ADODB;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     DBGrid1: TDBGrid;
  12.     DataSource1: TDataSource;
  13.     ADOConnection1: TADOConnection;
  14.     ADOTable1: TADOTable;
  15.   private
  16.     { Private declarations }
  17.   public
  18.     { Public declarations }
  19.   end;
  20.  
  21. type
  22.   TNoScrollDBGrid = class(TDBGrid)
  23.   private
  24.     procedure WMNCCalcSize(var Msg: TMessage);
  25.     message WM_NCCALCSIZE;
  26.   end;
  27.  
  28. var
  29.   Form1: TForm1;
  30.  
  31. implementation
  32.  
  33. {$R *.dfm}
  34.  
  35. procedure TNoScrollDBGrid.WMNCCalcSize(var Msg: TMessage);
  36. const
  37.   Scrollstyles = WS_VSCROLL or WS_HSCROLL;
  38. var
  39.   Style: Integer;
  40. begin
  41.   Style := GetWindowLong(Handle, GWL_STYLE);
  42.   if (Style and Scrollstyles) <> 0 then
  43.     SetWindowLong(Handle, GWL_STYLE, Style and not Scrollstyles);
  44.   inherited;
  45. end;
  46.  
  47. end.



Será que lo estas probando sin datos  *-)
  • 0

#13 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 09 November 2009 - 11:17 AM

Bueno, prueba con este sencillo:



delphi
  1. ShowScrollBar(DBGrid1.Handle, SB_VERT, false);


  • 0

#14 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 posts
  • LocationPinar del Río, Cuba

Posted 11 November 2009 - 11:06 AM

Ahora si funcionó bien  :cheesy:

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.
  • 0




IP.Board spam blocked by CleanTalk.