我在运行时创建StringGrid时遇到问题。记住,我不是那种经验丰富的人,有谁能解释如何做到这一点?这是我到目前为止的代码......
unit uDynStringGrid;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, grids;
type
TfrmMyForm = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
private
MyGrid : TStringGrid ;
public
{ Public declarations }
end;
var
frmMyForm: TfrmMyForm;
implementation
{$R *.dfm}
procedure TfrmMyForm.FormCreate(Sender: TObject);
var
MyStringGrid : TStringGrid ;
begin
MyStringGrid := TStringGrid.Create(frmMyForm);
MyStringGrid.Visible := true ;
MyStringGrid.left := 20 ;
MyStringGrid.top := 20 ;
MyStringGrid.rowcount := 5 ;
MyStringGrid.colcount := 5 ;
MyStringGrid.width := 100 ;
MyStringGrid.height := 100 ;
MyStringGrid.Enabled := true ;
MyStringGrid.cells[1,1] := 'hi' ;
MyGrid := TStringGrid.Create(frmMyForm) ;
MyGrid := MyStringGrid ;
end;
end.
答案 0 :(得分:0)
您的代码缺少的是设置网格父MyGrid.Parent := Self;
此外,您不需要本地变量MyStringGrid
,因为您在表单级别声明了MyGrid
变量。
您应该避免的另一件事是在自己的代码中通过全局变量引用表单。请改用Self
。
procedure TfrmMyForm.FormCreate(Sender: TObject);
begin
MyGrid := TStringGrid.Create(Self);
MyGrid.Parent := Self;
MyGrid.Visible := true;
MyGrid.left := 20;
MyGrid.top := 20;
MyGrid.rowcount := 5;
MyGrid.colcount := 5;
MyGrid.width := 100;
MyGrid.height := 100;
MyGrid.Enabled := true;
MyGrid.cells[1, 1] := 'hi';
end;