请教: 不规则窗体的实现方法(100分!)(100分)

  • 主题发起人 主题发起人 sfj
  • 开始时间 开始时间
S

sfj

Unregistered / Unconfirmed
GUEST, unregistred user!
如何能够用delphi实现不规则的窗体,(注:不是那种隐藏部分窗体来实现的,也就是说,在<br>我用鼠标拖动窗体时,不会看到一个虚线矩形框),同样由于所有的窗体部件都是一个小<br>窗体,那么按钮等一些部件,也可以设计成不规则的,(三角,菱形的等);<br>换句话说,就是在我按任何一个部件时,都不会看到一个矩形框,而时那个部件的所见形状.<br>
 
CreateRoundRectRgn + SetWindowRgn<br>圆形窗口<br>//鼠标拖动窗体时,不会看到一个虚线矩形框<br>也简单,拖动窗口时不用<br>if (htclient=msg.result) then ……<br>也不用<br>releasecapture;<br>form1.perform(WM_syscommand, $F012, 0);<br>的方法,而是采用记录坐标的方法:<br>先定义两个全局变量: ox, oy: integer;<br>然后,添加 Form 的鼠标点击和移动的事件:<br><br>procedure TForm1.Form1MouseDown(Sender: TObject; Button: TMouseButton;<br>&nbsp; Shift: TShiftState; X, Y: Integer);<br>begin<br>&nbsp; X1 := X;<br>&nbsp; Y1 := Y;<br>end;<br><br>procedure TForm1.Form1MouseMove(Sender: TObject; Shift: TShiftState; X,<br>&nbsp; Y: Integer);<br>begin<br>&nbsp; if ssLeft in Shift then<br>&nbsp; begin<br>&nbsp; &nbsp;Left := Left + X - X1;<br>&nbsp; &nbsp;Top &nbsp;:= Top + Y - Y1;<br>&nbsp; end;<br>end;<br><br>就可以实现拖动窗口时不出现虚线矩形框
 
补充:在拖动窗体时,边框应与看到的窗体的形状一样,而且按钮等也应能变,因为在<br>windows中所有的组件都视为窗体,请赐教!可以追加分!
 
用第三方控件吧! 简单到你笑!
 
//在拖动窗体时,边框应与看到的窗体的形状一样<br>以上程序段可以实现这个要求<br><br>//而且按钮等也应能变<br>这个我不太清楚,按理说应该可以
 
第三方控件?虽然好,但不是哪里都有,beta,你的代码,我回去试试,下次在给分,ok?<br>我个人认为,可视话编程已经把许多技术细节给隐藏了,若在用第三方控件,那我们只<br>不过在搭积木了,那中国的软件永远都不会有出头之日了!我希望搞清技术细节!
 
那你适合去学汇编。
 
对sfj的精神表示赞赏,附带着反对一下纯粹的控件主义。
 
赞成sfj,<br>顺便也来听听课,<br>喂,sfj,学会了可以给我说一下吗?
 
同意楼上的!!!!!!!!
 
beta的代码已经通过,但我已经发现有人能把按钮等也改变形状,而且还是半透明的,还可以<br>改动它们的颜色!<br>至于汇编,想做一个真正的程序员,谁不想把汇编学精通,这里不是指586的汇编,而是<br>32/64位的系统的汇编。其实汇编学好了,顶多是调用别人已经写好的中断呀什么的,也<br>没什么了不起。<br>这其中的关键是中国没有自己的硬件,只有有了自己的硬件,才可能写出自己的操作系统,<br>进而有自己的开发工具,这样中国的程序员才能走自己的路,不在跟着微软后面混!<br>当然,中国自己的硬件和系统必须与国际的标准相兼容,而不是抱着linux不放,<br>我个人认为,linux,和某些unix系统的原代码是开放的,还有dos也用那么多年了,也该<br>十分“透彻”了,再说中国也有自己的cpu了,中国自己的硬件和系统也该飚一把了!<br>还有所谓的“黑客”呀,“破解高手”们,也应该出把力,不要再干一些只能威风一时,<br>而后还是跟着别人后面混的事了,不然,以后只能用“别人的”系统和开发工具来干一些<br>自以为很牛的事。
 
后退
顶部