+ -
当前位置:首页 → 问答吧 → 好久没用Delphi了。自动生成控件。这个怎么弄。

好久没用Delphi了。自动生成控件。这个怎么弄。

时间:2011-11-15

来源:互联网

Delphi(Pascal) code

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    procedure N1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ledit_name:array[1..200] of TLabeledEdit; //名称
  //ledit_left:array[1..200] of TLabeledEdit;//左边坐标
  //ledit_right:array[1..200] of TLabeledEdit;//右边坐标
  i:integer=0;
implementation

{$R *.dfm}

procedure TForm1.N1Click(Sender: TObject);
var l:integer;
begin
  if i=200 then
    exit;
  i:=i+1;  
  l:=30;  //左边
  ledit_name[i]:=TLabeledEdit.Create(nil);  //生成控件LabeledEdit
  with ledit_name[i] do  //设置控件
  begin
    LabelPosition:=lpLeft; //设置LABEL在左边
    EditLabel.Caption:=inputbox('请输入','元素名称','');
      if i=1 then
      begin
        Top:=10;
        Left:=l;
      end else begin //设置LabeledEdit控件的位置
        Top:=(10+Width)*i;
        Left:=l;
      end;
  end;
end; 
//没有任务错误提示。。。


就是想点一下菜单生成一个 LabeledEdit控件 放在上一个的下面间隔10含像素点

作者: auqfiudh   发布时间: 2011-11-15

LZ 是想说这代码没显示创建的控件么?
1 创建控件没指定parent
2 如果1没起作用尝试设定控件宽高和visible属性
3 如果以上都没起作用,把控件bringtofront
另外记得释放数组

作者: funxu   发布时间: 2011-11-15

另外补充下,高应该是(10+height)*i;吧

作者: funxu   发布时间: 2011-11-15

哎....友情UP一下吧...

作者: maming2003   发布时间: 2011-11-15

引用楼主 auqfiudh 的回复:
with ledit_name[i] do //设置控件
  begin
  Parent:=Form1;
  LabelPosition:=lpLeft; //设置LABEL在左边
...

作者: kaikai_kk   发布时间: 2011-11-15

控件要指定parent才能显示
要得到上一个控件的top位置,才能在它的下方10个像素放新控件

作者: sz_haitao   发布时间: 2011-11-15

创建可视化组件首先就要设置 Parent 属性.

作者: bambuz   发布时间: 2011-11-15

热门下载

更多