菜单使用XPMenu (这个可用可不用)。
读SKIN用VCLZip 这个一定要用。能写出可以解压ZIP文件的代码的人不多呀。
拖动窗体可以使用FormMagnet控件或使用以下代码
function Max(X1,X2:Integer):integer;
begin
if X1>=X2 then
result := X1
else
Result := X2;
end;
function Min(X1,X2:Integer):integer;
begin
if X1<=X2 then
result:=X1
else
result:=X2;
end;
Function magnetize(var nl,nt:integer;nwidth,nheight:integer):boolean;
var
H_Overlapped,V_Overlapped:boolean;
//记录投影线是否重叠
tw,ww,wh:integer;
//临时变量
htmp:boolean;
vtmp:boolean;
const
MagneticForce:integer=50;
//“磁力”的大小。
begin
//判断水平方向是否有重叠投影
ww := simamprect.Right-simamprect.Left
tw := Max(simamprect.Right,nl+nWidth)-Min(simamprect.Left,nl);
H_Overlapped :=tw<=(nWidth+ww);
//再判断垂直方向
wh := simamprect.Bottom-simamprect.Top;
tw := Max(simamprect.Bottom,nt+nHeight)-min(simamprect.Top,nt);
V_Overlapped := tw<=(nHeight+wh);
vtmp:=false;
htmp:=false;
//足够接近的话就调整坐标
if H_Overlapped then
begin
if Abs(simamprect.Bottom-nt)<20 then
begin
nt:=SimampRect.bottom;
htmp:=true;
end
else
if Abs(nt+nHeight-simamprect.Top)<20 then
begin
nt:=SimampRect.Top-nheight;
htmp:=true;
end;
end;
if V_Overlapped then
begin
if Abs(simamprect.Right-nl)<20 then
begin
nl:=simamprect.right;
vtmp:=true;
end
else
if Abs(nl+nWidth-simamprect.Left)<20 then
begin
nl:=simamprect.Left-nwidth;
vtmp:=true;
end;
end;
if htmp or vtmp then
result:=true
else
result:=false;
end;
以上都是使用别人的控件或代码。
支持winamp的Skins则绝对没有用到控件或别人的代码
这一部分暂时还不能公开。