如何在运行时动态创建 StringGrid?
How can I dynamically create a StringGrid at runtime?
我在运行时创建 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.
您的代码缺少的是设置您的网格父级 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;
我在运行时创建 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.
您的代码缺少的是设置您的网格父级 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;