⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 delphi 动态添加控件(程序运行后添加控件)
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ToolWin, ComCtrls, ExtCtrls, QuickRpt,
  QRCtrls, jpeg, Menus;

type
  TForm1 = class(TForm)
    ToolBar1: TToolBar;
    SpeedButton1: TSpeedButton;
    TabControl1: TTabControl;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    SpeedButton2: TSpeedButton;
    Edit6: TEdit;
    Panel1: TPanel;
    BitBtn1: TBitBtn;
    Edit7: TEdit;
    Edit8: TEdit;
    Button1: TButton;
    Panel2: TPanel;
    Panel3: TPanel;
    SpeedButton3: TSpeedButton;
    Panel4: TPanel;
    Panel5: TPanel;
    Image1: TImage;
    Label1: TLabel;
    Panel6: TPanel;
    OpenDialog1: TOpenDialog;
    PopupMenu1: TPopupMenu;
    Button2: TButton;
    RichEdit1: TRichEdit;
    Panel7: TPanel;
    Panel8: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormClick(Sender: TObject);
    procedure createlable;
    procedure createpicture;
    procedure SpeedButton2Click(Sender: TObject);
 //   procedure Label1Click(Sender: TObject);
    procedure labelclick(sender: tobject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure ImageClick(Sender: TObject);
    procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button2Click(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
    sflag:integer ;  //控件类型
    x,y:integer;  //鼠标位置
    lablecount:integer;
    Imagecount:integer;
    DBSourcesName,DBSourcesPath:string;
    ImageSourcesNameEdt,ImageWidth,ImageHeigh,ImageX,ImageY:string;
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  lablecount:=1;
  Imagecount:=1;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  sflag:=1;
end;

procedure TForm1.createpicture;
var Image1:TImage;
    Imagename:string;
    spicture:string; //Tpicture;
begin
  Image1 :=TImage.Create(self);
  Imagename :='Image'+inttostr(Imagecount+1);
  Image1.name:=Imagename;
  //Mouse.CursorPos.XMouse.CursorPos.Y  self.left,self.top
  Edit2.Text := inttostr(Mouse.CursorPos.X);
  Edit3.Text := inttostr(Mouse.CursorPos.Y);
  Edit4.Text := inttostr(self.left);
  Edit5.Text := inttostr(self.top);
 // Label2.Width:=200;
  Image1.left:=Mouse.CursorPos.X-self.left-4;
  Image1.Top:=Mouse.CursorPos.Y-self.top-30;
  Image1.Height :=90;
  Image1.Width :=90;
  //E:\工程\delphi\动态添加控件\picture.bmp
  spicture:= 'E:\工程\delphi\动态添加控件\picture.bmp';
  Image1.Picture.LoadFromFile(spicture);
  //Image1.AutoSize :=true;
  //Image1.caption:=Image1.Name;
  Edit1.Text :=Image1.Name;
  Image1.parent:=self;
  //Image1.Color :=clActiveCaption;
  Image1.visible:=true;
  Image1.OnDblClick  :=ImageClick;  //定义响应的事件
  Image1.OnMouseDown :=ImageMouseDown;
  Imagecount:=Imagecount+1
end;
procedure TForm1.createlable;
var Label2:TLabel;
    labelname:string;
begin
  Label2 :=TLabel.Create(self);
  labelname :='label'+inttostr(lablecount+1);
  Label2.name:=labelname;
  //Mouse.CursorPos.XMouse.CursorPos.Y  self.left,self.top
  Edit2.Text := inttostr(Mouse.CursorPos.X);
  Edit3.Text := inttostr(Mouse.CursorPos.Y);
  Edit4.Text := inttostr(self.left);
  Edit5.Text := inttostr(self.top);
 // Label2.Width:=200;
  Label2.left:=Mouse.CursorPos.X-self.left-4;
  Label2.Top:=Mouse.CursorPos.Y-self.top-30;
  Label2.Height :=20;
  Label2.AutoSize :=true;
  Label2.caption:=Label2.Name;
  Edit1.Text :=Label2.Name;
  Label2.parent:=self;
  Label2.Color :=clActiveCaption;
  Label2.visible:=true;
  Label2.OnDblClick  :=labelclick;  //定义响应的事件
  lablecount:=lablecount+1
end;
procedure TForm1.FormClick(Sender: TObject);

begin
  if sflag>0 then
  begin
    if sflag=1 then      //生成控件 Label
    begin
      createlable;
      sflag:=0;
      {
      Label2 :=TLabel.Create(self);
      labelname :='label'+inttostr(lablecount+1);
      Label2.name:=labelname;
      //Mouse.CursorPos.XMouse.CursorPos.Y  self.left,self.top
      Edit2.Text := inttostr(Mouse.CursorPos.X);
      Edit3.Text := inttostr(Mouse.CursorPos.Y);
      Edit4.Text := inttostr(self.left);
      Edit5.Text := inttostr(self.top);
     // Label2.Width:=200;
      Label2.left:=Mouse.CursorPos.X-self.left-4;
      Label2.Top:=Mouse.CursorPos.Y-self.top-30;
      Label2.Height :=20;
      Label2.AutoSize :=true;
      Label2.caption:=Label2.Name;
      Edit1.Text :=Label2.Name;
      Label2.parent:=self;
      Label2.Color :=clActiveCaption;
      Label2.visible:=true;
      Label2.OnClick :=labelclick;  //定义响应的事件
      lablecount:=lablecount+1
      }
    {
      Label:=TLabel.Create(self);
      Label.name:='label'+inttostr(lablecount+1);
      Label.Width:=200;
      Label.left:=200;
      Label.Top:=200;
      Label.caption:=Label.name;
      Label.parent:=self;
      Label.visible:=true;
      lablecount:=lablecount+1;
      }
      {
      edit:=tedit.Create(self);   
  edit.Name:='edit'+inttostr(mycontrolcount);   
  edit.Width:=100;
  edit.Left   :=100;   
  edit.Top   :=(30)*(mycontrolcount-1);
  edit.Text   :=edit.Name   ;   
  edit.parent:=self;
  edit.Visible   :=true;   
  mycontrolcount:=mycontrolcount+1;   

      }
    end;
    if sflag=2 then
    begin
      createpicture;
      sflag:=0;
    end;
  end;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  sflag:=0;
end;
// 生成控件 TLabel的单击事件
procedure TForm1.labelclick(sender: tobject);
begin
    //此处应该放选中状态切可以改变控件大小

   //(Sender as TLabel).Caption :=Edit6.Text ;   //修改 Caption
   (Sender as TLabel).Caption :=Edit6.Text ;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var str:String;
    i:integer;
begin
  str:=Edit7.Text ;
  for i:=1   to   length(str)   do
    if ord(str[i])>127   then
      Edit8.Text :=Edit8.Text+str[i]+'为非法字符';
end;

procedure TForm1.Button1Click(Sender: TObject);
var str:String;
    i,j:integer;
begin
  str:=Edit7.Text ;
  i:=0;
  j:=length(str);
  while j>i do
  begin
    if ord(str[i])>127   then
    begin
      Edit8.Text :=Edit8.Text+copy(str,i,2);
      i:=i+1;
    end;
    i:=i+1;
  end;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
  sflag:=2;
end;
procedure TForm1.ImageClick(Sender: TObject);
begin
   if OpenDialog1.Execute then
    begin
       DBSourcesName:=Opendialog1.FileName;
       DBSourcesPath:=ExtractFilePath(DBSourcesName);
       ImageSourcesNameEdt:=Opendialog1.FileName;
    end;
    if ImageSourcesNameEdt<>'' then
    begin
      (Sender as TImage).Picture.LoadFromFile(ImageSourcesNameEdt) ;
    end;
end;

procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button=mbRight then
  begin
    ImageWidth:=inttostr((Sender as TImage).Width);
    ImageHeigh:=inttostr((Sender as TImage).Height);
    ImageY    :=inttostr((Sender as TImage).Top);
    Imagex    :=inttostr((Sender as TImage).Left);
    form2.ShowModal ;
    if ImageSourcesNameEdt<>'' then
      begin
        (Sender as TImage).Picture.LoadFromFile(ImageSourcesNameEdt) ;
      end;
    (Sender as TImage).Width :=strtoint(ImageWidth);
    (Sender as TImage).Height:=strtoint(ImageHeigh);
    (Sender as TImage).Top :=strtoint(ImageY);
    (Sender as TImage).Left:=strtoint(Imagex);
   end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var r,l,i,j:integer;
begin
  Image1.AutoSize :=false;
  r:=Image1.Width;
  l:=Image1.Height;
  RichEdit1.Lines.Text :='长*宽='+inttostr(r)+'*'+inttostr(l);
  RichEdit1.Lines.Add('左边距*上边距='+inttostr(Image1.Left)+'*'+inttostr(Image1.Top));
  //下面取图形点的颜色数据,白0,否则为1
  for i:=0 to r do
  begin
    RichEdit1.Lines.Add('('+inttostr(getRvalue(Image1.Canvas.Pixels[0,i]))+','+inttostr(getGvalue(Image1.Canvas.Pixels[0,i]))+','+inttostr(getBvalue(Image1.Canvas.Pixels[0,i]))+')');
  end;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    Edit8.Text :='('+inttostr(getRvalue(Image1.Canvas.Pixels[x,y]))+','+inttostr(getGvalue(Image1.Canvas.Pixels[x,y]))+','+inttostr(getBvalue(Image1.Canvas.Pixels[x,y]))+')';
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    Edit8.Text :='('+inttostr(getRvalue(Image1.Canvas.Pixels[x,y]))+','+inttostr(getGvalue(Image1.Canvas.Pixels[x,y]))+','+inttostr(getBvalue(Image1.Canvas.Pixels[x,y]))+')';
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -