如何发送这么一个消息呀?(200)

  • 主题发起人 主题发起人 fly555
  • 开始时间 开始时间
F

fly555

Unregistered / Unconfirmed
GUEST, unregistred user!
先定义了一个过程 private { Private declarations } procedure wmclose(var msg:TWMSysCommand);message wm_syscommand;写法这样: procedure TFrm_zcbbasekc.wmclose(var msg: TWMSysCommand);begin if msg.CmdType=SC_CLOSE then begin msg.CmdType:=0; showmessage('单据未保存,请保存或放弃'); end else inherited;end;我在窗体上加了个按钮。在这个按钮里怎么写,才能让程序执行到上面这个消息里面去呢?也就是如何发送一个消息让其接收呀?
 
self.close就行了
 
你自已试试。点窗体上的关闭按钮。是关不了的。提示 不给半闭);但是 点了这个按钮。 按钮事件为self.close;一下就关闭了。进不了这个消息内部去。
 
Appliation.OnMessage事件指向自己定义的消息处理事件,注意处理其他消息TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object;
 
能说祥细一点吗?
 
你如果是想要在关闭之前做点你自己的操作,你在窗体的onclosequery事件里写自己的代码例如:procedure TfrmDataInfo.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin canclose := Application.MessageBox('是否退出?', '询问', MB_YESNO) = id_yes; end;
 
sendmessage不就可以了么
 
sendmessage(handle,cm_close,0,0)?没用的。还是到不了消息的内部去执行。
 
咋了,这是?
 
SC_CLOSE 这个点了系统的关闭按钮才会触发的,你自己写Close不会触发这个消息。看消息名为wm_syscommand就知道了。要触发的话可以自己SendMessage(Form.Handle, wm_syscommand, SC_CLOSE, 0);
 
同意楼上的
 
你可以在主窗体的OnCloseQuery事件里面写代码判断是否允许关闭的。
 
多人接受答案了。
 
后退
顶部