Люди добрые, код следующий. после наследование при вызове процедуры doEqualColumnWidthes не меняется ширины колонки.
Мышкой расширяется колонка , но значенеи своство
DBGrid1.Columns[i].Width. Чего я не правильно делаю?
Задача такая : При изменение ширина колонки DBGrid1-a автоматическ изменить ширыны соответствующий колонки StringGrid1 -а
Код:
unit Unit16;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.Grids, Vcl.DBGrids,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
FireDAC.Comp.DataSet, FireDAC.Comp.Client, Vcl.StdCtrls;
type TDbgrid=class(vcl.dbgrids.TDbgrid)
protected
OnColumnResized:TProc;
procedure ColWidthsChanged; override;
end;
type
TForm16 = class(TForm)
Dbgrid1:Tdbgrid;
StringGrid1: TStringGrid;
FDMemTable1: TFDMemTable;
DataSource1: TDataSource;
btn_doEqulaColumns: TButton;
procedure FormCreate(Sender: TObject);
procedure btn_doEqulaColumnsClick(Sender: TObject);
private
procedure doEqualColumnWidthes;
public
{ Public declarations }
end;
var
Form16: TForm16;
implementation
{$R *.dfm}
procedure TDbgrid.ColWidthsChanged;
begin
//
end;
procedure TForm16.btn_doEqulaColumnsClick(Sender: TObject);
begin
doEqualColumnWidthes;
end;
procedure TForm16.doEqualColumnWidthes;
var i:integer;
begin
for I := 0 to self.DBGrid1.Columns.Count-1 do
self.StringGrid1.ColWidths[i]:=self.DBGrid1.Columns[i].Width;
end;
procedure TForm16.FormCreate(Sender: TObject);
begin
self.FDMemTable1.Close;
self.FDMemTable1.FieldDefs.Clear;
FDMemTable1.FieldDefs.Add('name', ftString,20);
FDMemTable1.FieldDefs.Add('age', ftinteger) ;
FDMemTable1.CreateDataSet;
FDMemTable1.Append;
FDMemTable1.FieldByName('name').AsString:='Alise';
FDMemTable1.FieldByName('age').AsInteger:=20;
FDmemtable1.post;
FDMemTable1.Append;
FDMemTable1.FieldByName('name').AsWideString:='Bob';
FDMemTable1.FieldByName('age').AsInteger:=20;
FDmemtable1.post;
self.DataSource1.DataSet:=self.FDMemTable1;
self.DBGrid1.DataSource:=self.DataSource1;
self.StringGrid1.FixedCols:=0;
Self.StringGrid1.RowCount:=2;
self.StringGrid1.ColCount:=self.DBGrid1.Columns.count;
doEqualColumnWidthes;
end;
end.