
03.02.2025, 22:05
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Delphi XE3. Вот такой код работает как по кнопке, так и автоматически:
Код:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids,
Data.DB, dxmdaset;
type
TDBGrid = class(vcl.dbgrids.TDBGrid)
private
FColResize : TNotifyEvent;
protected
procedure ColWidthsChanged; override;
public
property OnColResize : TNotifyEvent read FColResize write FColResize;
end;
TForm1 = class(TForm)
dxMemData1: TdxMemData;
dxMemData1Field1: TStringField;
dxMemData1Field2: TStringField;
dxMemData1Field3: TStringField;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
StringGrid1: TStringGrid;
btSyncColWidths: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure btSyncColWidthsClick(Sender: TObject);
private
{ Private declarations }
procedure SyncColWoidths;
procedure DBGridColResize(Sender : TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TDBFrid }
procedure TDBGrid.ColWidthsChanged;
begin
inherited;
if Assigned(FColResize) then
FColResize(Self);
end;
{ TForm1 }
procedure TForm1.btSyncColWidthsClick(Sender: TObject);
begin
SyncColWoidths;
end;
procedure TForm1.DBGridColResize(Sender: TObject);
begin
SyncColWoidths;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
dxMemData1.Active := True;
dxMemData1.AppendRecord([1,'Rec1 Fld1','Rec1 Fld2','Rec1 Fld3']);
dxMemData1.AppendRecord([2, 'Rec2 Fld1','Rec2 Fld2','Rec2 Fld3']);
dxMemData1.AppendRecord([3, 'Rec3 Fld1','Rec3 Fld2','Rec3 Fld3']);
SyncColWoidths;
DBGrid1.OnColResize := DBGridColResize;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
dxMemData1.Active := False;
end;
procedure TForm1.SyncColWoidths;
var
I : Integer;
begin
for I := 0 to DBGrid1.Columns.Count-1 do
StringGrid1.ColWidths[i] := DBGrid1.Columns[i].Width;
end;
end.
|