我有一组Edit与一个PopupMenu关联,我怎样知道是右击了哪个Edit弹出的PopupMenu

rlbo 2009-08-04 02:32:44
我的问题与这个相似http://topic.csdn.net/t/20030802/18/2101889.html,但是不知道怎么写语句。还有更好的办法吗?
...全文
488 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
rlbo 2009-08-04
  • 打赏
  • 举报
回复
按照月亮的方法完全可以做到,我复制后没有将界面创建链接到程序。惭愧。还是恳请三位发封邮件给我。
rlbo 2009-08-04
  • 打赏
  • 举报
回复
哎,说不出口啊,本人是刚学delphi和pascal。所以...,请各位谅解。
请给我具体的代码。
能否知道三位的联系方式,我将在合适的时候和您联系。不会是打扰,而是合作一个项目。luolb@teg.cn
bdmh 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 rlbo 的回复:]
就是不能显示Edit1.Text := Edit1.PopupMenu.Name这个内容?我是复制的月亮的程序,应该没问题的吧?
[/Quote]
月亮没有写显示在Edit中的代码,当然不显示了,你就用Edit1.PopupMenu.Name不就行了吗
rlbo 2009-08-04
  • 打赏
  • 举报
回复
什么意思?edit不是已经关联了popmenu了吗
Edit1.Text := Edit1.PopupMenu.Name;还费劲的想得到什么
[/Quote]

就是不能显示Edit1.Text := Edit1.PopupMenu.Name这个内容?我是复制的月亮的程序,应该没问题的吧?
bdmh 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 rlbo 的回复:]
引用 15 楼 hongqi162 的回复:
这个没有办法实现功能。edit1中不能显示我要的a或b
[/Quote]
什么意思?edit不是已经关联了popmenu了吗
Edit1.Text := Edit1.PopupMenu.Name;还费劲的想得到什么
rlbo 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hongqi162 的回复:]
Delphi(Pascal) codeunit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;type
TForm1= class(TForm)
Edit1: TEdit;
¡­
[/Quote]


这个没有办法实现功能。edit1中不能显示我要的a或b
hongqi162 2009-08-04
  • 打赏
  • 举报
回复
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
PopupMenu1: TPopupMenu;
a1: TMenuItem;
b1: TMenuItem;
c1: TMenuItem;
d1: TMenuItem;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure menuItemClick(Sender: TObject);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.menuItemClick(Sender: TObject);
begin
TEdit(self.PopupMenu1.PopupComponent).Text:= TMenuItem(sender).Caption;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
for i:= 0 to self.PopupMenu1.Items.Count-1 do
begin
self.PopupMenu1.Items[i].OnClick:= menuItemClick;
end;
end;

end.
rlbo 2009-08-04
  • 打赏
  • 举报
回复
问题补充:我要的功能是:假设PopupMenu1中有a,b,c,d四个选项。我现在如果右键点击edit1,则可以动态在edit1中显示a或b或c或d。
SuperTitan001 2009-08-04
  • 打赏
  • 举报
回复
procedure TForm1.menuItemClick(Sender: TObject);
begin
((self.PopupMenu1.PopupComponent) as tedit).Text:= (sender as tmenuitem).Caption;
end;
rlbo 2009-08-04
  • 打赏
  • 举报
回复
不好意思,还是没实现。hongqi162(失踪的月亮) 第10楼的程序,点右键出现的是Edit1,EDit2,Edit3.不能改写Edit中的内容啊?

SuperTitan001请写具体代码行吗?谢谢!
SuperTitan001 2009-08-04
  • 打赏
  • 举报
回复
把所有的onclick指向同一个事件
然后在事件中
showmessage((sender as tmenuitem).Caption)
sender as tmenuitem就表示你选择的项
hongqi162 2009-08-04
  • 打赏
  • 举报
回复
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
PopupMenu1: TPopupMenu;
procedure PopupMenu1Popup(Sender: TObject);
private
{ Private declarations }
procedure menuItemClick(Sender: TObject);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.menuItemClick(Sender: TObject);
begin
showmessage(self.PopupMenu1.PopupComponent.Name);
end;

procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
item: TMenuItem;
begin
self.PopupMenu1.Items.Clear;
item:= TMenuItem.Create(Owner);
item.Caption:=self.PopupMenu1.PopupComponent.Name;
item.OnClick:= menuItemClick;
PopupMenu1.Items.Add(item);
end;

end.
rlbo 2009-08-04
  • 打赏
  • 举报
回复
//是要显示选择了哪项吗?

是的,非常感谢!
SuperTitan001 2009-08-04
  • 打赏
  • 举报
回复
我怎么在每一个edit中显示我选择的PopupMenu不同内容?

//是要显示选择了哪项吗?
rlbo 2009-08-04
  • 打赏
  • 举报
回复
问题补充:我有一组Edit与一个PopupMenu关联,我怎样知道是右击了哪个Edit弹出的PopupMenu。应该是我怎么在每一个edit中显示我选择的PopupMenu不同内容?
hongqi162 2009-08-04
  • 打赏
  • 举报
回复
TMenuItem不就有了么
SuperTitan001 2009-08-04
  • 打赏
  • 举报
回复
月亮的程序是放在popupmenu的选项的onclick事件中的
我的那段是放在popupmenu的onpopup事件中的
rlbo 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hongqi162 的回复:]
也就是在菜单的onclick事件中获得PopupComponent组件的name就是edit的name属性
[/Quote]

PopupMenu1中没有onclick事件?
SuperTitan001 2009-08-04
  • 打赏
  • 举报
回复
showmessage(((sender as TPopupMenu).PopupComponent as Tedit).Name)
hongqi162 2009-08-04
  • 打赏
  • 举报
回复
也就是在菜单的onclick事件中获得PopupComponent组件的name就是edit的name属性
加载更多回复(1)

16,746

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧