Buscar

Criar TButton em tempo de execução (com dimensionamento)

Código

Inicie um novo projeto.
Declare na clausula
Uses:

  Windows, Forms, Dialogs, StdCtrls, Controls, Classes;

Type
   private
    procedure btnclick(Sender: TObject);

Var:
  Form1: TForm1;
  down,crt:boolean;
  pt:TPoint;


//Procedure que exibe mensagem, usada para colocar nos novos botões

procedure TForm1.btnclick(Sender: TObject);
begin
showmessage('O Botão '+TButton(sender).Caption+' foi clicado!');
end;


//Procedure que cria o button apartir das informações dadas

procedure criarbtn(Caption:string; top,left,height,width:integer; onClick:TNotifyEvent; parent:TWinControl);
var
btn:TButton;
begin
btn:=TButton.Create(parent);
btn.Parent:=parent;
btn.Top:=top;
btn.Left:=left;
btn.Height:=Height;
btn.Width:=Width;
btn.Caption:=caption;
btn.OnClick:=OnClick;
end;


{Chamando a procedure criarbtns, os botões são criados da seguinte maneira:
1 clicar no button1 (criar)
2 clicar e arastar em uma area do form para criar o botão.}


{Insira 2 Buttons:
Button1: caption:=Criar
Button2: caption:=""
         Visible:=false}


//Evento on click do Button1
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('clique e araste com o mouse sobre o form para criar um button');
crt:=true;
end;


//Evento onmousedown do form
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
pt.X:=x;
pt.Y:=y;
if crt then
down:=true;
end;

//evento onmousemove do form
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if down then begin
button2.Visible:=true;
button2.Top:=pt.Y;
button2.Left:=pt.X;
button2.Height:=y-pt.Y;
button2.Width:=x-pt.X;
end;
end;

//evento onmouseup do form
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if down then begin
criarbtn(InputBox('Criar Botão','Insira o nome do novo botão','Button'),button2.Top,button2.Left,button2.Height,button2.Width,btnclick,Form1);
end;
button2.Visible:=false;
down:=false;
crt:=false;
end;

{
By Jackson
contato: jackson_eduardo_da_veiga@hotmail.com
}

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Componentes
Adicionada dia: 28/07/10
Por: Jackson Eduarodo Da Veiga
Visualizada: 8586 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009