社区
语言基础/算法/系统设计
帖子详情
想向无HANDLE的SPEEDBUTTON发消息,可能吗?
zjlgigi
2006-08-26 06:39:19
RT,小弟想向无HANDLE的SPEEDBUTTON控件发送WM_ENABLE等消息,可能吗???
有高手能解决吗????谢谢!!!
注:我其实是想用VC来实现发消息的...
...全文
225
9
打赏
收藏
想向无HANDLE的SPEEDBUTTON发消息,可能吗?
RT,小弟想向无HANDLE的SPEEDBUTTON控件发送WM_ENABLE等消息,可能吗??? 有高手能解决吗????谢谢!!! 注:我其实是想用VC来实现发消息的...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wudi_1982
2006-08-27
打赏
举报
回复
根据位置模拟点击.
柯本
2006-08-27
打赏
举报
回复
当然可以,我在BCB中已给你回过了
http://community.csdn.net/Expert/topic/4977/4977837.xml?temp=.7915766
zjlgigi
2006-08-27
打赏
举报
回复
他本身就是一个ENABLE为FALSE的SPEEDBUTTON,其实我也想模拟点击他,不过没有办法...郁闷
不若人生一场醉
2006-08-26
打赏
举报
回复
更正一下上面说的,并不是所有的消息都是窗口过程处理的,有的消息需要子类化窗口过程进行处理。
不若人生一场醉
2006-08-26
打赏
举报
回复
直接向窗口发自定义消息就行了,所有消息都是由窗口过程处理的,要注意的就是不同的应用程序之间发消息别忘了先注册就行了。
zjlgigi
2006-08-26
打赏
举报
回复
如果是这样的话,我能否通过向SPEEDBUTTON的TPARENT发消息来达到控制SPEEDBUTTON的目的?
当然也是用SENDMESSAGE了,谢谢高手!
支持中文哦
2006-08-26
打赏
举报
回复
不可能的。
在VCL中也不可能向无handle,的孔件发送消息的。只能用vcl内部的消息机制发送。
实际上,消息最终发送给的你这个孔件的parent,比如:Click消息,这个parent收到click消息后,检查消息附带的鼠标位置,如果那个位置是一个graphiccontrol,而且,这个孔件相关状态允许接收这个click消息,这时候,parent简单的调用这个graphiccontrol的onclick事件而已,parent自己并不处理。你看看vcl源代码就知道了怎么回事情了。
所以,graphiccontrol的消息处理实际上都是依赖parent处理的,没有handle,API是无法发送消息的饿。
人事管理系统实验报告书
附录:源程序 //-------------------主窗体 查询与浏览--------------------------------------- #include #pragma hdrstop #include "Unit1.h" #include "Unit2.h" #include "Unit3.h" #include "Unit4.h" #include "Unit5.h" #include "Unit6.h" #pragma package(smart_init) #pragma resource "*.dfm" TFmain *Fmain; bool onshow=false; __fastcall TFmain::TFmain(TComponent* Owner) : TForm(Owner) { } void __fastcall TFmain::N5Click(TObject *Sender) { Close();//退出程序 } void __fastcall TFmain::
Speed
Button
3Click(TObject *Sender) { DataModule3->ADOQuery1->First() ; StatusBar1->Panels->Items[0]->Text="数据指向第一个"; } void __fastcall TFmain::
Speed
Button
1Click(TObject *Sender) { DataModule3->ADOQuery1->Prior() ; StatusBar1->Panels->Items[0]->Text="数据指向上一个"; } void __fastcall TFmain::
Speed
Button
2Click(TObject *Sender) { DataModule3->ADOQuery1->Next() ; StatusBar1->Panels->Items[0]->Text="数据指向下一个"; } void __fastcall TFmain::
Speed
Button
4Click(TObject *Sender) { DataModule3->ADOQuery1->Last() ; StatusBar1->Panels->Items[0]->Text="数据指向最后"; } void __fastcall TFmain::
Button
2Click(TObject *Sender) { //添加新的数据 Fadd->Caption="添加数据"; DataModule3->ADOQuery1->Append() ; Fadd->ShowModal() ; } void __fastcall TFmain::FormClose(TObject *Sender, TCloseAction &Action) { //对退出程序做确认处理 if(MessageBox(this->
Handle
,"确定要退出吗?","提示",MB_YESNO+MB_ICONQUESTION) == IDNO) Action=caNone; } void __fastcall TFmain::N10Click(TObject *Sender) { AboutBox->ShowModal() ; //显示关于对话框 } void __fastcall TFmain::
Button
4Click(TObject *Sender) { //以下为查找语句 AnsiString sql; if(Edit1->Text=="")return; if( ComboBox1->Text =="精确")sql=" ='"+Edit1->Text+"';"; else sql=" like '%"+Edit1->Text+"%';"; sql="select * from renshi where "+ComboBox2->Text+sql; StatusBar1->Panels->Items[0]->Text=sql; DataModule3->ADOQuery1->Active =false; DataModule3->ADOQuery1->SQL->Clear(); DataModule3->ADOQuery1->SQL->Add(sql); DataModule3->ADOQuery1->Active =true; if(DataModule3->ADOQuery1->RecordCount==0) StatusBar1->Panels->Items[1]->Text="无符合条件数据"; else StatusBar1->Panels->Items[1]->Text="符合条件数据个数为:"+IntToStr(DataModule3->ADOQuery1->RecordCount); } void __fastcall TFmain::
Button
6Click(TObject *Sender) { //以下为显示所有数据 AnsiString sql; sql="select * from renshi;"; StatusBar1->Panels->Items[0]->Text="显示全部数据"; DataModule3->ADOQuery1->Active =false; DataModule3->ADOQuery1->SQL->Clear(); DataModule3->ADOQuery1->SQL->Add(sql); DataModule3->ADOQuery1->Active =true; if(DataModule3->ADOQuery1->RecordCount==0) StatusBar1->Panels->Items[1]->Text="无符合条件数据"; else StatusBar1->Panels->Items[1]->Text="数据总量为:"+IntToStr(DataModule3->ADOQuery1->RecordCount); } void __fastcall TFmain::
Button
1Click(TObject *Sender) { //刷新显示 DataModule3->ADOQuery1->Active =false; DataModule3->ADOQuery1->Active =true; } void __fastcall TFmain::N9Click(TObject *Sender) { //帮助内容 ShowMessage("\ 大家好,虽然只是一个简单的程序但是也要写帮助。\n\ 简单的操作如下:\n\ 一、打开程序。\n\ 二、可以进行数据的添加、删除、浏览、查找\n\ 三、关闭。\n\ 谢谢使用!\n\ "); } void __fastcall TFmain::
Button
3Click(TObject *Sender) { //数据删除操作 AnsiString printstr="确定删除编号为"+DataModule3->ADOQuery1->FieldByName("编号")->AsString+"的数据吗?"; if(MessageDlg(printstr,mtWarning,TMsgDlg
Button
s() << mbOK
Delete() ; StatusBar1->Panels->Items[0]->Text="数据已经删除"; } } void __fastcall TFmain::N3Click(TObject *Sender) { //更改显示字体 if(FontDialog1->Execute())Fmain->Font=FontDialog1->Font; } void __fastcall TFmain::N12Click(TObject *Sender) { //更改窗体颜色 if(ColorDialog1->Execute()) { Fmain->Color=ColorDialog1->Color;//主窗体 Fadd->Color=ColorDialog1->Color; //添加、修改窗体 } } void __fastcall TFmain::N13Click(TObject *Sender) { //更改数据域颜色 if(ColorDialog1->Execute()) DBGrid1->Color=ColorDialog1->Color; } void __fastcall TFmain::N11Click(TObject *Sender) { Fshow->QuickRep1->Preview();//打印数据 } void __fastcall TFmain::
Button
5Click(TObject *Sender) { Fadd->Caption="修改数据"; Fadd->ShowModal() ; //修改数据 } void __fastcall TFmain::FormShow(TObject *Sender) { if(onshow==false) { Fwelcome->ShowModal() ; onshow=true; return; } } //-------------------------------------------------------------------------- //------------系统封面------------------------------------------------------ #include #pragma hdrstop #include "Unit2.h" #include "Unit1.h" #pragma package(smart_init) #pragma resource "*.dfm" TFwelcome *Fwelcome; int logintime=15; //进入系统等待时间X秒 __fastcall TFwelcome::TFwelcome(TComponent* Owner) : TForm(Owner) { } void __fastcall TFwelcome::Timer1Timer(TObject *Sender) { if(logintime==0){ Timer1->Enabled=false; Close(); } logintime--;
Speed
Button
1->Caption ="进入("+IntToStr(logintime)+")"; } void __fastcall TFwelcome::
Speed
Button
2Click(TObject *Sender) { Application->Terminate() ; } void __fastcall TFwelcome::
Speed
Button
1Click(TObject *Sender) { logintime=15; Timer1->Enabled=false; Close(); } //-------------------------------------------------------------------------- //---------------------数据修改窗体----------------------------------------- #include #pragma hdrstop #include "Unit4.h" #include "Unit3.h" #pragma package(smart_init) #pragma resource "*.dfm" TFadd *Fadd; __fastcall TFadd::TFadd(TComponent* Owner) : TForm(Owner) { } void __fastcall TFadd::
Button
1Click(TObject *Sender) { if(DBEdit1->Text =="")return; DataModule3->ADOQuery1->Refresh() ; Close(); } void __fastcall TFadd::
Button
2Click(TObject *Sender) { DataModule3->ADOQuery1->Cancel() ; Close(); } void __fastcall TFadd::FormClose(TObject *Sender, TCloseAction &Action) { DataModule3->ADOQuery1->Cancel() ; } //--------------------------------------------------------------------------
Delphi 获取文件访问时间.rar
Delphi 获取文件访问时间,也主是最后一次打开文件 的时间,基于Delphi7实现。相关代码如下: procedure TForm1.
Speed
Button
1Click(Sender: TObject); begin if OpenDialog1.Execute then begin Edit1.Text := OpenDialog1.FileName; Edit2.Text := ''; end; end; procedure TForm1.
Button
1Click(Sender: TObject); begin if Edit1.Text<>'' then Edit2.Text := GetDateTime(Pchar(OpenDialog1.FileName)); end; function TForm1.GetDateTime(const FileName: Pchar): string; var hFile : T
Handle
; Sy : TSecurityAttributes; WTime, LTime : TFILETIME; STime : TSystemTime; begin Sy.nLength := SizeOf(TSecurityAttributes); //必需参数 Sy.lpSecurityDescriptor := nil; Sy.bInherit
Handle
:=False; hFile := CreateFile(PChar(FileName),GENERIC_READ , 1 ,@Sy,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 1); if hFile=INVALID_
HANDLE
_VALUE then Result:='' else begin GetFileTime(hFile, nil, @WTime, nil); FileTimeToLocalFileTime(WTime, LTime); FileTimeToSystemTime(LTime, STime); Result:=Format('%d年%d月%d日 %2.2d:%2.2d:%2.2d',[STime.wYear,STime.wMonth,STime.wDay,STime.wHour,STime.wMinute,STime.wSecond]); end; end;
Speed
Button
Speed
Button
是一个图形控件,本身没有句柄。因此它不能具有焦点。你可以使用TBitBtn,调整一些属性,可以使他们的外形很接近。 只有从TWinControl派生的控件,才具有
Handle
。你可以看一下他们的继承图。当然,你也可以通过T
Speed
Button
的父窗口的焦点,来设置子窗口,不过
可能
比较麻烦。
Speed
Button
继承的是TGraphicsControl类,不具有输入焦点...
关于
Speed
Button
中使用下划线快捷键不响应的问题
在Windows应用程序,很多都有快捷键功能,这个Delphi也有,就是一个按钮上面有一个比如剪切(&X),这个时候剪切的快捷键就是Alt+X,这个功能有时候还是挺好用的,最近,公司中有同事,好些使用了
Speed
Button
,然后使用本方式整的快捷键,都不能用,于是问我,这个是神马问题,实际上确切的说,也不是不能用,而是在某些情况下不能用,比如说使用PageControl等一类控件,然...
delphi xe FMX里的窗口如何像处理像VCL里的消息又一示例
因此,你必须通过SetWindowLongPtr(GWLP_WNDPROC)或SetWindowSubclass()直接手动派生TForm的Win32 HWND子类,以便在FMX看到窗口消息之前截获它们。参见Subclassing controls。FMX大量过滤窗口消息,只调度它自己实际使用的几个消息。WM_APPCOMMAND不是其中之一,这就是为什么简单的message处理程序不能像在VCL中那样在FMX中工作。在创建TForm之后,您可以使用FMX的FormToHWND()函数来获取它的HWND。
语言基础/算法/系统设计
16,749
社区成员
33,245
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章