Delphi用showmessage('&&')问题;

jzshuadadao 2008-04-03 09:38:56
我的一个字符串前面是'&&'开头,但用showmessage()显示的时候,总是把第一个&显示成加速键功能,可是我不想这样呀。
我就想显示成'&&';怎么办呀
...全文
1492 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
支持搂主,收藏
王集鹄 2008-04-04
  • 打赏
  • 举报
回复
ShowMessage是Delphi自己创建的窗体
类名叫TMessageForm,可以Dialogs.pas单元看看源代码
type
TMessageForm = class(TForm)
private
Message: TLabel;
procedure HelpButtonClick(Sender: TObject);
protected
procedure CustomKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure WriteToClipBoard(Text: String);
function GetFormText: String;
public
constructor CreateNew(AOwner: TComponent); reintroduce;
end;


明显“Message: TLabel”就是用来显示传入的字符串。
TLabel类有一个ShowAccelChar属性可以控制是否处理显示快捷字符。
如果有办法获得这个Message实例就可以设置它的ShowAccelChar属性解决楼主的问题。
Screen是VCL窗体的一个管理器,可以遍历当前的窗体也可以找到哪个窗体被激活
查一下帮助可以看到有一个OnActiveFormChange事件,顾名思义就是激活窗体改变的事件
那么就动手吧:
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.OnActiveFormChange := ScreenActiveFormChange;
end;

procedure TForm1.ScreenActiveFormChange(Sender: TObject);
var
I: Integer;
vActiveForm: TForm;
begin
vActiveForm := Screen.ActiveForm;
if Assigned(vActiveForm) and
SameText(vActiveForm.ClassName, 'TMessageForm') then
for I := 0 to vActiveForm.ComponentCount - 1 do
if vActiveForm.Components[I] is TLabel then
TLabel(vActiveForm.Components[I]).ShowAccelChar := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('&Zswang 路过');
end;
myderek 2008-04-04
  • 打赏
  • 举报
回复
可以使用全角&&
kaikai_kk 2008-04-04
  • 打赏
  • 举报
回复
showmessage('&&&&');
kaikai_kk 2008-04-04
  • 打赏
  • 举报
回复
学习了,楼上的很实用...
火龙岛主 2008-04-03
  • 打赏
  • 举报
回复
showmessage('&&&&');
sheenl 2008-04-03
  • 打赏
  • 举报
回复
把字符串改成'&&&&'开头

16,748

社区成员

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

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