Ver Mensaje Individual
  #3  
Antiguo 11-10-2013
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Reputación: 15
jocaro Va por buen camino
Gracias Pericles por tu ayuda

En mi caso, he probado el código, pero el dbgrid sigue presentando ambas barras de scroll, incluso si el área del dbgrid es suficientemente grande para presentar todos los registros. No se si será debido a un error mio, a la versión del Delphi (XE2)...

Espero que alguno de vosotros pueda indicarme un pequeño ejemplo del uso del componente de roman:

Código Delphi [-]
unit AutoSBDBGrid;

interface

uses
  Windows, Messages, Classes, DBGrids;

type
  TrmDBGrid = class(TDBGrid)
  protected
    procedure WMNCCalcSize(var msg: TMessage); message WM_NCCALCSIZE;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TrmDBGrid]);
end;

{ TrmDBGrid }

procedure TrmDBGrid.WMNCCalcSize(var msg: TMessage);
var
  Style: Integer;

begin
  if Assigned(DataSource) and Assigned(DataSource.DataSet) then
  begin
    Style := GetWindowLong(Handle, GWL_STYLE);

    if DataSource.DataSet.RecordCount > VisibleRowCount then
      Style := Style or WS_VSCROLL
    else
      Style := Style and not WS_VSCROLL;

    SetWindowLong(Handle, GWL_STYLE, Style);
  end;

  inherited;
end;

end.

Gracias
Responder Con Cita