一批控件TDBMemo没有复制、粘贴的功能,怎样增加这些新功能?

BCB 2001-09-28 10:14:16
方法是:每一个TDBMemo都指向同一个弹出菜单:“粘贴”、“复制”
用一个共用共同的处理子程序,例如:“复制”功能菜单项处理子程序:
void __fastcall TForm1::Copy1Click(TObject *Sender)
{ // TDBMemo的Copy处理
}
void __fastcall TForm1::Paste1Click(TObject *Sender)
{ // TDBMemo的Paste处理

}

问题是如何从 Sender 参数中知道是在哪一个TDBMemo弹出的?

...全文
164 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
BCB 2001-09-28
  • 打赏
  • 举报
回复
每天都要有点收获才行
BCB 2001-09-28
  • 打赏
  • 举报
回复
这个问题困扰了好久,终解决
Wingsun 2001-09-28
  • 打赏
  • 举报
回复
我觉得不安全,最好这样写:
TMenuItem * pItem=dynamic_cast<TMenuItem *>(Sender);
if(pItem)
{
TPopupMenu * Menu=.....
}
BCB 2001-09-28
  • 打赏
  • 举报
回复
完全成了
TMenuItem *item=(TMenuItem *)Sender;
TPopupMenu *menu=(TPopupMenu *)item->GetParentMenu();
//=================================================================

void __fastcall TForm1::Copy1Click(TObject *Sender)
{
TMenuItem *item=(TMenuItem *)Sender;
TPopupMenu *menu=(TPopupMenu *)item->GetParentMenu();
TMemo *memo=(TMemo *)menu->PopupComponent;
ShowMessage(memo->Text);
}
BCB 2001-09-28
  • 打赏
  • 举报
回复

如何从Sender访问到 是哪一个TPopupMenu?

TMenuItem *item=(TMenuItem *)Sender;
TPopupMenu *menu=(TPopupMenu *)item->Parent; // 试验总是不对

nofeal 2001-09-28
  • 打赏
  • 举报
回复
:)
HEROIN 2001-09-28
  • 打赏
  • 举报
回复
呵呵,我又学到一招
BCB 2001-09-28
  • 打赏
  • 举报
回复
解决了
EP外星人 2001-09-28
  • 打赏
  • 举报
回复
来晚了
EP外星人 2001-09-28
  • 打赏
  • 举报
回复
procedure TForm1.copy1Click(Sender: TObject);
var
a:TComponent;
begin
a:=PopupMenu1.PopupComponent;
with a as TMemo do
CopytoClipBoard;


end;

procedure TForm1.Paste1Click(Sender: TObject);
var
a:TComponent;
begin
a:=PopupMenu1.PopupComponent;
with a as TMemo do
PasteFromClipboard ;
end;
BCB 2001-09-28
  • 打赏
  • 举报
回复
谢谢,已找到HELP中的例子了
This example uses two edit boxes, two memos, and one pop-up menu on a form. The pop-up menu contains Cut, Copy, and Paste commands. This code makes the pop-up menu available to both edit boxes and both memos:

void __fastcall TForm1::FormCreate(TObject *Sender)

{
PopupMenu1->AutoPopup = true;
Edit1->PopupMenu = PopupMenu1;
Edit2->PopupMenu = PopupMenu1;
Memo1->PopupMenu = PopupMenu1;
Memo2->PopupMenu = PopupMenu1;
}

These are the cut, copy, and paste OnClick events for the commands on the pop-up menu.

void __fastcall TForm1::Copy1Click(TObject *Sender)

{
TComponent *pComponent = PopupMenu1->PopupComponent;
if (pComponent)
{
if (pComponent->ClassNameIs("TEdit"))
((TEdit *)pComponent)->CopyToClipboard();
else if (pComponent->ClassNameIs("TMemo"))
((TMemo *)pComponent)->CopyToClipboard();
else
MessageBeep(0);
}
else
MessageBeep(0);
}

void __fastcall TForm1::Cut1Click(TObject *Sender)

{
TComponent *pComponent = PopupMenu1->PopupComponent;
if (pComponent)
{
if (pComponent->ClassNameIs("TEdit"))
((TEdit *)pComponent)->CutToClipboard();
else if (pComponent->ClassNameIs("TMemo"))
((TMemo *)pComponent)->CutToClipboard();
else
MessageBeep(0);
}
else
MessageBeep(0);
}

void __fastcall TForm1::Paste1Click(TObject *Sender)

{
TComponent *pComponent = PopupMenu1->PopupComponent;
if (pComponent)
{
if (pComponent->ClassNameIs("TEdit"))
((TEdit *)pComponent)->PasteFromClipboard();
else if (pComponent->ClassNameIs("TMemo"))
((TMemo *)pComponent)->PasteFromClipboard();
else
MessageBeep(0);
}
else
MessageBeep(0);
}
yhec 2001-09-28
  • 打赏
  • 举报
回复
据Sender找到是哪一个TPopupMenu,
再根据TPopupMenu::PopupComponent
找到是哪一个TDBMemo
yhec 2001-09-28
  • 打赏
  • 举报
回复
TPopupMenu::PopupComponent
TPopupMenu See also ExampleDescription

Read PopupComponent to determine which control is currently using the popup menu. In applications where multiple controls share the same pop-up menu, use PopupComponent to determine which of them displayed the menu.

Set PopupComponent to associate a control with the menu before calling the Popup method programmatically to bring up the pop-up menu.

yxjjx 2001-09-28
  • 打赏
  • 举报
回复
用判断if (sender is tdbmemo1) then....
if (sender is tdbmemo2) then....
.....
BCB 2001-09-28
  • 打赏
  • 举报
回复
请delphi的朋友从DELPHI的角度邦我想一下!!!!!
BCB 2001-09-28
  • 打赏
  • 举报
回复
这里的Sender可能就是指向菜单项而已
BCB 2001-09-28
  • 打赏
  • 举报
回复
问题是如何从 Sender 参数中知道是在哪一个TDBMemo弹出的?


13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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