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;
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