📄 winskindata.pas
字号:
f3rdControls.add('TDXDBCURRENCYEDIT=Edit');
f3rdControls.add('TDXDBEDIT=Edit');
f3rdControls.add('TDXDBMASKEDIT=Edit');
f3rdControls.add('TDXDBHYPERLINKEDIT=Edit');
f3rdControls.add('TDXEDIT=Edit');
f3rdControls.add('TDXMASKEDIT=Edit');
f3rdControls.add('TDXBUTTONEDIT=Edit');
f3rdControls.add('TDXCURRENCYEDIT=Edit');
f3rdControls.add('TDXHYPERLINKEDIT=Edit');}
f3rdControls.add('TOVCPICTUREFIELD=Edit');
f3rdControls.add('TOVCDBPICTUREFIELD=Edit');
f3rdControls.add('TOVCSLIDEREDIT=Edit');
f3rdControls.add('TOVCDBSLIDEREDIT=Edit');
f3rdControls.add('TOVCSIMPLEFIELD=Edit');
f3rdControls.add('TOVCDBSIMPLEFIELD=Edit');
f3rdControls.add('TO32DBFLEXEDIT=Edit');
f3rdControls.add('TOVCNUMERICFIELD=Edit');
f3rdControls.add('TOVCDBNUMERICFIELD=Edit');
end;
destructor TSkinControlList.Destroy;
begin
fedit.free;
fcombobox.free;
fradiobutton.free;
fcheckbox.free;
inherited destroy;
end;
procedure TSkinControlList.SetEdit(Value: TStrings);
begin
FEdit.Assign(Value);
end;
procedure TSkinControlList.SetCheckbox(Value: TStrings);
begin
Fcheckbox.Assign(Value);
end;
procedure TSkinControlList.Setradiobutton(Value: TStrings);
begin
Fradiobutton.Assign(Value);
end;
procedure TSkinControlList.SetCombobox(Value: TStrings);
begin
FCombobox.Assign(Value);
end;
constructor TDataSkinObject.Create(AIDName: String);
begin
inherited create;
Map:=Tbitmap.create;
Idname:=aidname;
end;
destructor TDataSkinObject.Destroy;
begin
map.assign(nil);
Map.free;
inherited destroy;
end;
constructor TDataSkinBorder.Create(AIDName: String);
begin
inherited create(aidname);
MaskMap:=TBitMap.create;
Idname:=aidname;
end;
destructor TDataSkinBorder.Destroy;
begin
MaskMap.free;
inherited destroy;
end;
constructor TDataSkinButton.Create(AIDName: String);
begin
inherited create(aidname);
CheckMap :=Tbitmap.create;
RadioMap :=Tbitmap.create;
end;
destructor TDataSkinButton.Destroy;
begin
CheckMap.free;
RadioMap.free;
inherited destroy;
end;
constructor TSkinData.Create(AOwner: TComponent);
var i: integer;
begin
inherited Create(AOwner);
ftype := sfMainform;
data := TMemorystream.create;
Empty := True;
sysicon:=Tbitmap.create;
MenuMsg:=true;
findll := false;
f3rdControls:=TStringlist.create;
initcontrollist;
Button := TDataSkinButton.create('Buttons');
border[1]:=TDataskinborder.create('Left');
border[2]:=TDataskinborder.create('Right');
border[3]:=TDataskinborder.create('Top');
border[4]:=TDataskinborder.create('Bottom');
Title := TDataSkinTitle.create('Title');
fmenuauto := true;
fmenumerge := false;
// if gSkindata=nil then gskindata:=self;
fdisabletag:=99;
FContainers := [xccForm, xccFrame, xccToolbar, xccCoolbar, xccControlbar, xccPanel,
xccScrollBox, xccGroupBox, xccTabSheet, xccPageScroller];
FSkinControls := [xcMainMenu, xcPopupMenu, xcToolbar, xcControlbar, xcCombo,
xcCheckBox, xcRadioButton,xcProgress,xcScrollbar,xcedit,
xcButton,xcedit, xcBitBtn, xcSpeedButton, xcPanel, xcGroupBox,
xcTab,xcStatusBar,xcSystemMenu];
bmpmenu:=Timagelist.create(nil);
bmpmenu.GetResource(rtBitmap,'VCLSKINMENU',16,[lrTransparent],clwhite);
fversion := c_version;
// bmpmenu.ResInstLoad(rtBitmap,'VCLSKINMENU',16,[lrTransparent],clwhite);
end;
destructor TSkinData.Destroy;
var i:integer;
begin
bmpmenu.free;
f3rdControls.free;
if skinmanager<>nil then
skinmanager.Removeskindata(self);
// skinmanager=nil;
data.free;
sysicon.free;
for i:= 1 to 4 do begin
border[i].free;
end;
for i:= 0 to length(SysBtn)-1 do begin
SysBtn[i].free;
end;
Button.free;
Title.free;
if BGBrush<>0 then begin
deleteobject(BgBrush);
BGBrush:=0;
end;
if box<>nil then Box.free;
if boxlabel<>nil then Boxlabel.free;
if toolbar<>nil then toolbar.free;
if Tab<>nil then Tab.free;
if StatusBar<>nil then statusbar.free;
if ComBox<>nil then Combox.free;
if ComBoxborder<>nil then ComBoxborder.free;
if ExtraImages<>nil then ExtraImages.free;
if Progress<>nil then Progress.free;
if Header<>nil then Header.free;
if MenuBar<>nil then MenuBar.free;
if MenuItem<>nil then MenuItem.free;
if MenuItemBG<>nil then MenuItemBG.free;
if SArrow<>nil then SArrow.free;
if HBar<>nil then HBar.free;
if VBar<>nil then VBar.free;
if HSlider<>nil then HSlider.free;
if VSlider<>nil then VSlider.free;
if Hspin<>nil then Hspin.free;
if Vspin<>nil then Vspin.free;
if TrackHorz<>nil then TrackHorz.free;
if TrackVert<>nil then TrackVert.free;
if TrackLeft<>nil then TrackLeft.free;
if TrackRight<>nil then TrackRight.free;
if TrackTop<>nil then TrackTop.free;
if TrackBottom<>nil then TrackBottom.free;
{ if skinmanager.dlist.count=0 then begin
skinmanager.free;
skinmanager:=nil;
end;}
inherited Destroy;
end;
procedure TSkinData.SetControlList(Value: TStrings);
begin
f3rdControls.Assign(Value);
end;
procedure TSkinData.ReadBord;
var s:string;
i:integer;
begin
for i:= 1 to 4 do begin
if i<3 then begin
border[i].r.top:=ini.Readinteger('Personality',border[i].IDName+'TopHeight',0);
border[i].r.Bottom:=ini.Readinteger('Personality',border[i].IDName+'BotHeight',0);
border[i].r.left:= 0;
border[i].r.right:= 0;
end else begin
border[i].r.top:= 0;
border[i].r.Bottom:=0;
border[i].r.left:=ini.Readinteger('Personality',border[i].IDName+'TopHeight',0);
border[i].r.right:=ini.Readinteger('Personality',border[i].IDName+'BotHeight',0);
end;
border[i].frame:=ini.Readinteger('Personality',border[i].IDName+'Frame',1);
border[i].Tile:=ini.Readinteger('Personality',border[i].IDName+'Stretch',1);
border[i].trans:=ini.readinteger('Personality',border[i].IDName+'Trans',1);
readbmp(border[i].map,ini.ReadString('Personality',border[i].IDName, ''));
// readbmp(border[i].maskmap,ini.ReadString('Personality', border[i].IDName+'Mask', ''));
end;
end;
procedure TSkinData.Readbmp(bmp:Tbitmap;fname:string);
var s,s1:string;
begin
s:= ExtractFileName(fname);
s1:=ExtractFileExt(fname);
if (s<>'') and (s1='.bmp') then begin
reader.readfile(s,ms);
if ms.size>0 then
bmp.LoadFromstream(ms)
else bmp.Assign(nil);
end else bmp.Assign(nil);
end;
procedure TSkinData.ReadSysButton;
var i,n,a,v1:integer;
j:real;
s:string;
b:boolean;
begin
for i:= 0 to high(SysBtn) do SysBtn[i].free;
ini.ReadSections(sectionlist);
for i:= sectionlist.count-1 downto 0 do begin
s:=Uppercase(sectionlist.strings[i]);
b:=false;
if (s='BUTTONS') or (s='BUTTON.RADIO')
or (s='BUTTON.CHECKBOX') or (s='BUTTON') then b:=true
else if (pos('BUTTON',s)<>1) then b:=true
else begin
a:=ini.readinteger(s,'Action',0);
v1:=ini.readinteger(s,'Visibility',-1);
if a=-1 then begin
if v1=0 then b:=false
else b:=true;
end;
end;
if b then sectionlist.delete(i);
end;
n:=sectionlist.count;
setlength(SysBtn,n+3);
for i:= 0 to sectionlist.count-1 do begin
s:=Uppercase(sectionlist.strings[i]);
SysBtn[i]:= TDataSkinSysButton.create(s);
SysBtn[i].Action:=ini.readinteger(s,'Action',0);
SysBtn[i].Align:=ini.readinteger(s,'Align',0);
SysBtn[i].Xcoord:=ini.readinteger(s,'Xcoord',0);
SysBtn[i].Ycoord:=ini.readinteger(s,'Ycoord',0);
SysBtn[i].Visibility:=ini.readinteger(s,'Visibility',0);
if SysBtn[i].Action=-1 then
SysBtn[i].Visibility1:=ini.readinteger(s,'Visibility1',-1)
else
SysBtn[i].Visibility1:=ini.readinteger(s,'Visibility1',0);
SysBtn[i].CombineOp:=ini.readinteger(s,'CombineOp',-1);
SysBtn[i].frame:=ini.readinteger(s,'frame',0);
readbmp(SysBtn[i].map,ini.ReadString(s, 'ButtonImage', ''));
if sysbtn[i].frame=0 then begin
sysbtn[i].frame:=6;
if not sysbtn[i].map.empty then begin
j:=sysbtn[i].map.width / sysbtn[i].map.height;
if j>3.8 then
sysbtn[i].frame:=6
else
sysbtn[i].frame:=3;
if sysbtn[i].action<0 then
sysbtn[i].frame:=6
end;
if sysbtn[i].action in [3,11] then
sysbtn[i].map.assign(nil);
end;
end;
for i:= n to n+2 do begin
SysBtn[i]:= TDataSkinSysButton.create(s);
SysBtn[i].Action:=7+i-n;
SysBtn[i].Align:=100;
SysBtn[i].Visibility:=100;
SysBtn[i].Visibility1:=100;
SysBtn[i].frame:=4;
end;
CreateMdibtn(n);
end;
procedure TSkinData.CreateMdibtn(n:integer);
var bmp:Tbitmap;
i,w,h:integer;
r1,r2:Trect;
begin
bmp:=Tbitmap.create;
readbmp(bmp,ini.ReadString('MDICONTROLS', 'Image', ''));
if bmp.empty then begin
bmp.free;
exit;
end;
w:= bmp.width div 12;
h:= bmp.height ;
for i:= 0 to 2 do begin
SysBtn[n+i].map.width:= w*4;
SysBtn[n+i].map.height:= h;
sysbtn[n+i].Xcoord := (3-i)*(w+4);
r1:=rect(i*4*w,0,(i+1)*4*w,h);
r2:=rect(0,0,w*4,h);
SysBtn[n+i].map.canvas.copyrect(r2,bmp.canvas,r1);
end;
bmp.free;
end;
procedure TSkinData.ReadObject(var aobject:TDataSkinObject;aname:string);
var s:string;
begin
if aobject<>nil then begin
aobject.free;
aobject:=nil;
end;
s:=ini.readstring(aname,'Image','');
if s='' then exit;
aobject:=TDataSkinObject.create(aname);
readbmp(aobject.map,s);
aobject.style:=ini.readinteger(aname,'Style',0);
aobject.r.left:=ini.readinteger(aname,'LeftWidth',0);
aobject.r.right:=ini.readinteger(aname,'RightWidth',0);
aobject.r.top:=ini.readinteger(aname,'TopHeight',0);
aobject.r.Bottom:=ini.readinteger(aname,'BottomHeight',0);
aobject.trans:=ini.readinteger(aname,'Trans',0);
aobject.tile:=ini.readinteger(aname,'Tile',0);
aobject.Normalcolor:=ini.readinteger(aname,'NormalColour',-1);
aobject.Overcolor:=ini.readinteger(aname,'MouseOverColour',-1);
aobject.Downcolor:=ini.readinteger(aname,'PressedColour',-1);
aobject.Normalcolor2:=getcolor(ini.readstring(aname,'NormalColour2',''),colors[csButtonText]);
aobject.Overcolor2:=getcolor(ini.readstring(aname,'MouseOverColour2',''),colors[csButtonText]);
aobject.Downcolor2:=getcolor(ini.readstring(aname,'PressedColour2',''),colors[csButtonText]);
if aobject.tile>1 then aobject.tile:=0;
end;
procedure TSkinData.ReadObject2(var aobject:TDataSkinborder;aname,image2:string);
var s:string;
begin
if aobject<>nil then begin
aobject.free;
aobject:=nil;
end;
s:=ini.readstring(aname,'Image','');
if s='' then exit;
aobject:=TDataSkinborder.create(aname);
readbmp(aobject.map,s);
s:=ini.readstring(aname,Image2,'');
if s<>'' then
readbmp(aobject.maskmap,s);
aobject.r.left:=ini.readinteger(aname,'LeftWidth',0);
aobject.r.right:=ini.readinteger(aname,'RightWidth',0);
aobject.r.top:=ini.readinteger(aname,'TopHeight',0);
aobject.r.Bottom:=ini.readinteger(aname,'BottomHeight',0);
aobject.trans:=ini.readinteger(aname,'Trans',0);
aobject.tile:=ini.readinteger(aname,'Tile',0);
aobject.Normalcolor:=ini.readinteger(aname,'NormalColour',-1);
aobject.Overcolor:=ini.readinteger(aname,'MouseOverColour',-1);
aobject.Downcolor:=ini.readinteger(aname,'PressedColour',-1);
aobject.Normalcolor2:=getcolor(ini.readstring(aname,'NormalColour2',''),colors[csButtonText]);
aobject.Overcolor2:=getcolor(ini.readstring(aname,'MouseOverColour2',''),colors[csButtonText]);
aobject.Downcolor2:=getcolor(ini.readstring(aname,'PressedColour2',''),colors[csButtonText]);
if aobject.tile>1 then aobject.tile:=0;
end;
procedure TSkinData.ReadProgress(var aobject:TDataSkinborder;aname:string);
var s:string;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -