DLL中的窗体的Tab键及Enter键无效的问题 (问题解决,又有新问题,SpeedButton) (200分)

  • 主题发起人 主题发起人 tnndusa
  • 开始时间 开始时间
T

tnndusa

Unregistered / Unconfirmed
GUEST, unregistred user!
用windows.SetParent(DLL中窗体的handle,Exe窗体中一个Panel.Handle)后,在Dll的窗体中按回车及TAB无效了,查过相关贴子,但没有找到正确答案.<br>调用时传入了Application.Handle,没有传入Screen对象<br><br>上面的问题已经解决<br>但是DLL中的SpeedButton鼠标离开时没有还原成平面状态,应该是消息丢失了,虽然不是什么大问题,但如果能解决更好了
 
那么使用创建着的Handle呢?如Form1.handle,记得不是特别清楚了,反正传入Application.Handle或者Form.Handle应该有一个可以的。<br>你说传入了Application.Handle不行,那么就选择第二个试验一下啦。
 
调用DLL中的窗体时,最好创建于Application.Handel。
 
在form的属性栏的 tabstop 里把值设为 false
 
都是DELPHI干的好事<br>我用<br>&nbsp; BorderStyle := &nbsp;bsNone;<br>就出现这个问题,用<br>&nbsp; &nbsp; SetWindowLong(Handle,GWL_STYLE,<br>&nbsp; &nbsp; &nbsp; &nbsp; GetWindowLong(Handle,GWL_STYLE) and not WS_CAPTION);<br>就解决了
 
厉害,这么细小的地方都被你发现。
 
BorderStyle := &nbsp;bsNone;并且把 tabstop 里把值设为 false<br>
 
编译时 EXE 和 DLL 都<br>带运行时库就不会出现楼主的问题!<br>也不需要用什么API函数
 
:tnndusa, <br><br>&nbsp; &nbsp;其实建议不要使用SpeedButton,这个东西不是一个窗口控件, Tab键也不管用,不太符合界面规范的。
 
TO onlyonekgx<br>&nbsp; &nbsp; 我的工程不允许带包编译,另,不用API你什么也做不了.<br><br>TO ForestBen:<br>&nbsp; &nbsp; 使用SpeedButton自然有我的理由,现在我不想绕过这个问题,而是想解决这个问题.
 
关注, 我也被这个问题搞的头昏脑胀.
 
&gt;但是DLL中的SpeedButton鼠标离开时没有还原成平面状态<br><br>我也早就碰到整个问题了,没解决,不过也无所谓,当然了,如果能解决也好。
 
能不能这样呢??? <br>procedure TTMDIChildForM.FormMouseMove(Sender: TObject; Shift: TShiftState;<br>&nbsp; X, Y: Integer);<br>begin<br>&nbsp; SpeedButton.down := false ;<br>end;<br>
 
to 楼主<br>我被DLL早就搞晕头了!希望早日你解决所有DLL问题!不过不太可能!因为DLL太多问题了,不能ChildForm可能没有这么多的问题!
 
我以前也被dll搞的头大,我觉的dll实现程序封装并不是一个很好的选择,但可怜的是往往选择权不在我们自已的手中
 
为什么不用BPL呢
 
界面刷新行不行?
 
我的不用传递都可以,<br>你说怪不怪,<br>没有搞定贴代码吧!!<br>呵呵~~~~~~~~~~~~~~~~~``
 
好像DLL中的MDIForm 属性里没有TabStop 这一项<br>还是 我得 有问题,我也在做MDIChildForm封装DLL,出现同样的问题!<br>没有解决!
 
后退
顶部