导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2004/3/16 9:34:54
标题:
加入我的收藏
楼主:
能达到像瑞星那样的效果的。
----------------------------------------------
it's me
作者:
2004/3/16 9:55:43
1楼:
使用xpmenu控件-菜单 界面用coolmenu
----------------------------------------------
-
作者:
2004/3/16 10:55:15
2楼:
coolmenu哪里有下?
----------------------------------------------
it's me
作者:
2004/3/16 11:01:32
3楼:
到处都是。。
----------------------------------------------
中流一壶,千金争挈。宁为铅刀,毋为楮叶。错节盘根,利器斯别。识时务者,呼为俊杰!
作者:
2004/3/16 11:03:28
4楼:
http://www.eFile.com.cn/eFile/other/xpmenu3.0.zip 大小: 61k 包含完整代码。
----------------------------------------------
中流一壶,千金争挈。宁为铅刀,毋为楮叶。错节盘根,利器斯别。识时务者,呼为俊杰!
作者:
2004/3/16 11:16:27
5楼:
能达到像瑞星那样的效果的,也就是说不是那么方方正正的那种,很炫的那种。 用什么作呢?
----------------------------------------------
it's me
作者:
2004/3/16 11:19:00
6楼:
http://www.eFile.com.cn/eFile/other/xpmenu3.0.zip 可以用三方控件,也可以调用api来画出不规则的窗体。。。。
----------------------------------------------
中流一壶,千金争挈。宁为铅刀,毋为楮叶。错节盘根,利器斯别。识时务者,呼为俊杰!
作者:
2004/3/16 11:20:21
7楼:
不规则窗体移动时如何去掉虚框 0: 去掉窗体原来的 Caption 栏 1: 自己做一个模拟的 Caption 栏。 2: 拦截鼠标在这个模拟的区域的 Mouse 消息 ,鼠标进入的时候 ,改变消息所指范围 ,变成 NCHITEST,移出时恢复 3: 拦截 WM_MOUSEDOWN 消息 ,设置起始点。 4: 拦截 WM_MOUSEMOVE 消息 ,代码如下 : if ssLeft in Shift then begin Form1.Left := Form1.Left - (MPos.X-X); Form1.Top := Form1.Top - (MPos.Y-Y); end; 全部测试代码 : var MPos:TPoint; {Position of the Form before drag} procedure TForm1.Button1Click(Sender: TObject); var r:HRGN; begin r:=CreateEllipticRgn(0,0,300,300); SetWindowRgn(handle,r,true); DeleteObject(r); end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin MPos.X := X; MPos.Y := Y; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then begin Form1.Left := Form1.Left - (MPos.X-X); Form1.Top := Form1.Top - (MPos.Y-Y); end; end; *************************************** unit epMoveForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TepMoveForm = class(TGraphicControl) private FDown: Boolean; FOldX, FOldY: Integer; protected procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; public procedure Paint; override; constructor Create(AOwner: TComponent); override; published property Align; end; procedure Register; implementation constructor TepMoveForm.Create(AOwner: TComponent); begin inherited Create(AOwner); Width := 100; Height := 100; end; procedure TepMoveForm.Paint; begin // if csDesigning in ComponentState then with Canvas do begin Pen.Style := psDash; Brush.Style := bsClear; Rectangle(0, 0, Width, Height); end end; procedure TepMoveForm.MouseMove; begin if FDown then with TForm(Owner) do SetBounds(Left + X - FOldX, Top + Y - FOldY, Width, Height); end; procedure TepMoveForm.MouseUp; begin FDown := False; end; procedure TepMoveForm.MouseDown; begin if (Button = mbleft) and not FDown then FDown := True; FOldX := X; FOldy := Y; end; procedure Register; begin RegisterComponents('Win32', [TepMoveForm]); end; end.
----------------------------------------------
中流一壶,千金争挈。宁为铅刀,毋为楮叶。错节盘根,利器斯别。识时务者,呼为俊杰!
作者:
2004/3/16 11:21:45
8楼:
这也可以。。非矩形的窗体 Listing A: StarRgnU.pas unit StarRgnU; interface uses Windows, Forms, Controls, StdCtrls, Classes, Messages; type TForm1 = class(TForm) CloseBtn: TButton; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); procedure CloseBtnClick(Sender: TObject); private { Private declarations } procedure WmNCHitTest(var Msg : TWMNCHitTest); message WM_NCHITTEST; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} const { An array of points for the star region. } RgnPoints : array[1..10] of TPoint = ((X:203;Y:22), (X:157;Y:168), (X:3;Y:168), (X:128;Y:257), (X:81;Y:402), (X:203;Y:334), (X:325;Y:422), (X:278;Y:257), (X:402;Y:168), (X:249;Y:168)); { An array of points used to draw a line } { around the region in the OnPaint handler. } LinePoints : array[1..11] of TPoint = ((X:199;Y:0), (X:154;Y:146), (X:2;Y:146), (X:127;Y:235), (X:79;Y:377), (X:198;Y:308), (X:320;Y:396), (X:272;Y:234),(X:396;Y:146), (X:244;Y:146), (X:199;Y:0)); procedure TForm1.FormCreate(Sender: TObject); var Rgn : HRGN; begin { Create a polygon region from our points. } Rgn := CreatePolygonRgn( RgnPoints, High(RgnPoints), ALTERNATE); { Set the window region. } SetWindowRgn(Handle, Rgn, True); end; procedure TForm1.FormPaint(Sender: TObject); begin { Draw a line around the star. } Canvas.Pen.Width := 3; Canvas.Polyline(LinePoints); end; procedure TForm1.CloseBtnClick(Sender: TObject); begin Close(); end; { Catch the WM_NCHITTEST message so the user } { can drag the window around the screen. } procedure TForm1. WmNCHitTest(var Msg: TWMNCHitTest); begin DefaultHandler(Msg); if Msg.Result = HTCLIENT then Msg.Result := HTCAPTION; end; end.
----------------------------------------------
中流一壶,千金争挈。宁为铅刀,毋为楮叶。错节盘根,利器斯别。识时务者,呼为俊杰!
作者:
2004/3/16 11:22:25
9楼:
这个也可以 Var hR : THandle; begin hR := CreateEllipticRgn(20 ,30 ,300 ,200); SetWindowRgn(Handle,hR,True);
----------------------------------------------
中流一壶,千金争挈。宁为铅刀,毋为楮叶。错节盘根,利器斯别。识时务者,呼为俊杰!
作者:
2004/3/18 9:33:24
10楼:
多谢大虾。
----------------------------------------------
it's me