criando popupmenus em run-time... como fazer?
seguinte ... eu tenho uma toolbar ...
e nela speedbuttons .. q vou criando em run-time ...
ok ...
como eu faço pra por ex ... qndo clickar com o botao direito encima de um speedbutton ... ele abrir um popupmenu com uma opçao assim fechar ... ae qndo eu clickar no fechar do popupmenu ... ele dar um free nesse speedbutton clickado?
valeuz
e nela speedbuttons .. q vou criando em run-time ...
ok ...
como eu faço pra por ex ... qndo clickar com o botao direito encima de um speedbutton ... ele abrir um popupmenu com uma opçao assim fechar ... ae qndo eu clickar no fechar do popupmenu ... ele dar um free nesse speedbutton clickado?
valeuz
Salsa
Curtidas 0
Respostas
Motta
28/04/2004
para saber o que/quem chamou
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Menus;
type
TForm1 = class(TForm)
Button1: TButton;
PopupMenu1: TPopupMenu;
del1: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure del1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var sb : TSpeedButton;
begin
sb := TSpeedButton.Create(Self);
with sb do
begin
sb.PopupMenu := PopupMenu1;
sb.Visible := True;
sb.Parent := Self;
sb.Top := Random(Self.Width);
end;
end;
procedure TForm1.del1Click(Sender: TObject);
begin
if PopupMenu1.PopupComponent is TSpeedButton then
TSpeedButton(PopupMenu1.PopupComponent).Free;
end;
end.
é mais fácil criando o pop em desenho..[/code]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Menus;
type
TForm1 = class(TForm)
Button1: TButton;
PopupMenu1: TPopupMenu;
del1: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure del1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var sb : TSpeedButton;
begin
sb := TSpeedButton.Create(Self);
with sb do
begin
sb.PopupMenu := PopupMenu1;
sb.Visible := True;
sb.Parent := Self;
sb.Top := Random(Self.Width);
end;
end;
procedure TForm1.del1Click(Sender: TObject);
begin
if PopupMenu1.PopupComponent is TSpeedButton then
TSpeedButton(PopupMenu1.PopupComponent).Free;
end;
end.
é mais fácil criando o pop em desenho..[/code]
GOSTEI 0
Salsa
28/04/2004
mas como adiciono um item no popupmenu ....???
GOSTEI 0
Nildo
28/04/2004
Cria um TMenuItem e vai dando Add a partir dela
GOSTEI 0
Motta
28/04/2004
crie em desenho (duplo clique no Tpopupmenu) e vincule o botão criado ao item de menu en runtime, vc teria que criar a lõgica do menuitem de qq forma, dá menos trabalho assim, basta apenas um pop pois vc pode saber quem o ´chamou´
para saber o que/quem chamou
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Menus;
type
TForm1 = class(TForm)
Button1: TButton;
PopupMenu1: TPopupMenu;
del1: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure del1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var sb : TSpeedButton;
begin
sb := TSpeedButton.Create(Self);
with sb do
begin
sb.PopupMenu := PopupMenu1;//<<--atribui o pop
sb.Visible := True;
sb.Parent := Self;
sb.Top := Random(Self.Width);
end;
end;
// logica criada em desenho
// PopupComponent é o comp. que chamou
procedure TForm1.del1Click(Sender: TObject);
begin
if PopupMenu1.PopupComponent is TSpeedButton then
TSpeedButton(PopupMenu1.PopupComponent).Free;
end;
end.
para saber o que/quem chamou
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Menus;
type
TForm1 = class(TForm)
Button1: TButton;
PopupMenu1: TPopupMenu;
del1: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure del1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var sb : TSpeedButton;
begin
sb := TSpeedButton.Create(Self);
with sb do
begin
sb.PopupMenu := PopupMenu1;//<<--atribui o pop
sb.Visible := True;
sb.Parent := Self;
sb.Top := Random(Self.Width);
end;
end;
// logica criada em desenho
// PopupComponent é o comp. que chamou
procedure TForm1.del1Click(Sender: TObject);
begin
if PopupMenu1.PopupComponent is TSpeedButton then
TSpeedButton(PopupMenu1.PopupComponent).Free;
end;
end.
GOSTEI 0
Salsa
28/04/2004
ainda continuo nao entendendo .... eu crio assim ...
function TMainForm.popup: string;
var pop: TsuiPopupMenu;
P: TPoint;
begin
pop := TSuiPopupMenu.Create(self);
GetCursorPos(P);
pop.Popup(P.X,P.y);
end;
mas nao entendi ainda como eu adiciono um item no popup q eu criei .. pra depois saber se ele foi ckickado ou nao :(
function TMainForm.popup: string;
var pop: TsuiPopupMenu;
P: TPoint;
begin
pop := TSuiPopupMenu.Create(self);
GetCursorPos(P);
pop.Popup(P.X,P.y);
end;
mas nao entendi ainda como eu adiciono um item no popup q eu criei .. pra depois saber se ele foi ckickado ou nao :(
GOSTEI 0
Salsa
28/04/2004
ah agora sim eu entendi oq vc kis dizer motta ... valeu
GOSTEI 0