unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, bsSkinData, BusinessSkinForm, bsSkinCtrls, StdCtrls,
bsSkinBoxCtrls, ExtCtrls, ComCtrls, bsSkinTabs, bsMessages, bsDialogs,
bsCalendar;
type
TForm1 = class(TForm)
bsBusinessSkinForm1: TbsBusinessSkinForm;
bsSkinData1: TbsSkinData;
bsCompressedStoredSkin1: TbsCompressedStoredSkin;
bsSkinData2: TbsSkinData;
bsCompressedStoredSkin2: TbsCompressedStoredSkin;
bsSkinData3: TbsSkinData;
bsCompressedStoredSkin3: TbsCompressedStoredSkin;
bsSkinPageControl1: TbsSkinPageControl;
bsSkinTabSheet1: TbsSkinTabSheet;
bsSkinExPanel1: TbsSkinExPanel;
bsSkinListBox1: TbsSkinListBox;
bsSkinPanel1: TbsSkinPanel;
bsSkinPanel2: TbsSkinPanel;
bsSkinPanel5: TbsSkinPanel;
bsSkinPanel6: TbsSkinPanel;
bsSkinData4: TbsSkinData;
bsCompressedStoredSkin4: TbsCompressedStoredSkin;
bsSkinButton1: TbsSkinButton;
Timer1: TTimer;
minfo: TbsSkinStdLabel;
Label1: TbsSkinLabel;
Label2: TbsSkinLabel;
Label4: TbsSkinLabel;
Label3: TbsSkinLabel;
Label5: TbsSkinLabel;
Label6: TbsSkinLabel;
Label7: TbsSkinLabel;
Label8: TbsSkinLabel;
Label10: TbsSkinLabel;
Label9: TbsSkinLabel;
Label12: TbsSkinLabel;
Label11: TbsSkinLabel;
Label14: TbsSkinLabel;
Label13: TbsSkinLabel;
Label15: TbsSkinLabel;
Label16: TbsSkinLabel;
Label19: TbsSkinLabel;
Label17: TbsSkinLabel;
Label18: TbsSkinLabel;
Label20: TbsSkinLabel;
labelb20: TbsSkinLabel;
labelb18: TbsSkinLabel;
labelb17: TbsSkinLabel;
labelb19: TbsSkinLabel;
labelb16: TbsSkinLabel;
labelb15: TbsSkinLabel;
labelb13: TbsSkinLabel;
labelb14: TbsSkinLabel;
labelb11: TbsSkinLabel;
labelb12: TbsSkinLabel;
labelb9: TbsSkinLabel;
labelb10: TbsSkinLabel;
labelb8: TbsSkinLabel;
labelb7: TbsSkinLabel;
labelb5: TbsSkinLabel;
labelb6: TbsSkinLabel;
labelb4: TbsSkinLabel;
labelb3: TbsSkinLabel;
labelb2: TbsSkinLabel;
labelb1: TbsSkinLabel;
bsSkinStdLabel1: TbsSkinStdLabel;
bsSkinStdLabel2: TbsSkinStdLabel;
bsSkinStdLabel3: TbsSkinStdLabel;
bsSkinPanel7: TbsSkinPanel;
bsSkinPanel8: TbsSkinPanel;
bsSkinPanel11: TbsSkinPanel;
bsSkinPanel12: TbsSkinPanel;
bsSkinPanel9: TbsSkinPanel;
bsSkinPanel10: TbsSkinPanel;
bsSkinPanel3: TbsSkinPanel;
bsSkinPanel4: TbsSkinPanel;
bsSkinStdLabel4: TbsSkinStdLabel;
bsSkinPanel13: TbsSkinPanel;
bsSkinPanel14: TbsSkinPanel;
ye1: TbsSkinStdLabel;
ye2: TbsSkinStdLabel;
bsSkinButton2: TbsSkinButton;
bsSkinStdLabel5: TbsSkinStdLabel;
bsSkinStdLabel6: TbsSkinStdLabel;
bsSkinStdLabel7: TbsSkinStdLabel;
bsSkinStdLabel8: TbsSkinStdLabel;
bsSkinStdLabel9: TbsSkinStdLabel;
bsSkinButton3: TbsSkinButton;
bsSkinButton4: TbsSkinButton;
bsSkinMonthCalendar1: TbsSkinMonthCalendar;
procedure bsSkinButton1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure bsSkinButton2Click(Sender: TObject);
procedure bsSkinButton3Click(Sender: TObject);
procedure bsSkinButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
logicidarray=array[1..20]of integer;
physicidarray=array[1..20]of integer;
var
Form1: TForm1;
logicid:logicidarray;
physicid:physicidarray;
s1,s2,st,i:integer;
implementation
uses Unit2, Unit4;
{$R *.dfm}
procedure TForm1.bsSkinButton1Click(Sender: TObject);
var
k,p,w:integer;
begin
//form2.show;
logicid[1]:=257;
logicid[2]:=382;
logicid[3]:=3174;
logicid[4]:=3910;
logicid[5]:=2448;
logicid[6]:=2449;
logicid[7]:=2450;
logicid[8]:=2451;
logicid[9]:=2452;
logicid[10]:=2453;
logicid[11]:=2454;
logicid[12]:=2455;
logicid[13]:=2456;
logicid[14]:=2457;
logicid[15]:=743;
logicid[16]:=3731;
logicid[17]:=3542;
logicid[18]:=3320;
logicid[19]:=824;
logicid[20]:=561;
for k:=1 to 20 do
begin
p:=logicid[k] div 1024;
w:=logicid[k] mod 1024;
if p>3 then
showmessage(inttostr(logicid[i])+'发生页出界');
if w>1024 then
showmessage(inttostr(logicid[i])+'发生页偏移量出界');
case p of
0:physicid[k]:=2*1024+w;
1:physicid[k]:=3*1024+w;
2:physicid[k]:=5*1024+w;
3:physicid[k]:=7*1024+w;
end;//case
end;//for k
label1.Caption:=inttostr(logicid[1]);
label2.Caption:=inttostr(logicid[2]);
label3.Caption:=inttostr(logicid[3]);
label3.Caption:=inttostr(logicid[3]);
label4.Caption:=inttostr(logicid[4]);
label5.Caption:=inttostr(logicid[5]);
label6.Caption:=inttostr(logicid[6]);
label7.Caption:=inttostr(logicid[7]);
label8.Caption:=inttostr(logicid[8]);
label9.Caption:=inttostr(logicid[9]);
label10.Caption:=inttostr(logicid[10]);
label11.Caption:=inttostr(logicid[11]);
label12.Caption:=inttostr(logicid[12]);
label13.Caption:=inttostr(logicid[13]);
label14.Caption:=inttostr(logicid[14]);
label15.Caption:=inttostr(logicid[15]);
label17.Caption:=inttostr(logicid[17]);
label18.Caption:=inttostr(logicid[18]);
label19.Caption:=inttostr(logicid[19]);
label20.Caption:=inttostr(logicid[20]);
label16.Caption:=inttostr(logicid[16]);
labelb1.Caption:=inttostr(physicid[1]);
labelb2.Caption:=inttostr(physicid[2]);
labelb3.Caption:=inttostr(physicid[3]);
labelb3.Caption:=inttostr(physicid[3]);
labelb4.Caption:=inttostr(physicid[4]);
labelb5.Caption:=inttostr(physicid[5]);
labelb6.Caption:=inttostr(physicid[6]);
labelb7.Caption:=inttostr(physicid[7]);
labelb8.Caption:=inttostr(physicid[8]);
labelb9.Caption:=inttostr(physicid[9]);
labelb10.Caption:=inttostr(physicid[10]);
labelb11.Caption:=inttostr(physicid[11]);
labelb12.Caption:=inttostr(physicid[12]);
labelb13.Caption:=inttostr(physicid[13]);
labelb14.Caption:=inttostr(physicid[14]);
labelb15.Caption:=inttostr(physicid[15]);
labelb17.Caption:=inttostr(physicid[17]);
labelb18.Caption:=inttostr(physicid[18]);
labelb19.Caption:=inttostr(physicid[19]);
labelb20.Caption:=inttostr(physicid[20]);
labelb16.Caption:=inttostr(physicid[16]);
timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
p,w,addr,j:integer;
begin
if i<21 then
begin
i:=i+1;
p:=logicid[i] div 1024;
w:=logicid[i] mod 1024;
if p>3 then
showmessage(inttostr(logicid[i])+'发生页出界');
if w>1024 then
showmessage(inttostr(logicid[i])+'发生页偏移量出界');
bsskinlistbox1.Items.Add(inttostr(logicid[i])+'请求页:'+inttostr(p));
case p of
0:
begin
addr:=2*1024+w;
if s1 =100 then
s1:=0
else
if s1 <>0 then
if s2 =100 then
s2:=0
else
if s2<>0 then
begin
st:=s1;
s1:=s2;
s1:=0;
bsskinlistbox1.Items.Add('页'+inttostr(st)+'被调出!');
end;
bsskinpanel1.SkinData:=bsskindata1;
bsskinpanel2.SkinData:= bsskindata1;
bsskinpanel2.Height:=w div 2;
end; //0
1:
begin
addr:=3*1024+w;
if s1 =100 then
s1:=1
else
if s1<>1 then
if s2 =100 then
s2:=1
else
if s2<>1 then
begin
st:=s1;
s1:=s2;
s1:=1;
bsskinlistbox1.Items.Add('页'+inttostr(st)+'被调出!');
end;
bsskinpanel1.SkinData:=bsskindata2;
bsskinpanel2.SkinData:= bsskindata2;
bsskinpanel2.Height:=w div 2;
end; //1
2:
begin
if s1 =100 then
s1:=2
else
if s1<>2 then
if s2 =100 then
s2:=2
else
if s2<>2 then
begin
st:=s1;
s1:=s2;
s1:=2;
bsskinlistbox1.Items.Add('页'+inttostr(st)+'被调出!');
end;
addr:=5*1024+w;
//end; //if s1=100 then
bsskinpanel1.SkinData:=bsskindata3;
bsskinpanel2.SkinData:= bsskindata3;
bsskinpanel2.Height:=w div 2;
;
end; //2
3:
begin
if s1 =100 then
s1:=3
else
if s1<>3 then
if s2 =100 then
begin
s2:=3;
end
else
if s2<>3 then
begin
st:=s1;
s1:=s2;
s1:=3;
bsskinlistbox1.Items.Add('页'+inttostr(st)+'被调出!');
end;
addr:=7*1024+w;
//end;
bsskinpanel1.SkinData:=bsskindata4;
bsskinpanel2.SkinData:= bsskindata4;
bsskinpanel2.Height:=w div 2;
end; //3
end ;//case over
minfo.Caption:=inttostr(physicid[i]);
minfo.top:=bsskinpanel2.Top+bsskinpanel2.Height+100;
for j:=0 to componentCount-1 do
begin
//form1.Caption:=form1.Components[j+1].Name;
if components[j] is TbsSkinLabel then
if TbsSkinLabel(components[j]).Tag =i then
TbsSkinLabel(components[j]).SkinData:=bsskindata2
else
TbsSkinLabel(components[j]).SkinData:=bsskindata3;
//end; //if TbsSkinLabel(components[j]).Tag =i
//end;// components[j] is TbsSkinLabel then
end;//for j
case s1 of
0:
begin
ye1.Caption:='0号页 ' ;
bsskinpanel3.SkinData:=bsskindata1;
bsskinpanel4.SkinData:=bsskindata1;
end;//case s1 0
1:
begin
ye1.Caption:='1号页 ' ;
bsskinpanel3.SkinData:=bsskindata2;
bsskinpanel4.SkinData:=bsskindata2;
end;//case s2 1
2:
begin
ye1.Caption:='2号页 ' ;
bsskinpanel3.SkinData:=bsskindata3;
bsskinpanel4.SkinData:=bsskindata3;
end;//case s2 2
3:
begin
ye1.Caption:='3号页 ' ;
bsskinpanel3.SkinData:=bsskindata4;
bsskinpanel4.SkinData:=bsskindata4;
end;//case s2 3
end;//case s2 over
case s2 of
0:
begin
ye2.Caption:='0号页 ' ;
bsskinpanel13.SkinData:=bsskindata1;
bsskinpanel14.SkinData:=bsskindata1;
end;//case s2 0
1:
begin
ye2.Caption:='1号页 ' ;
bsskinpanel13.SkinData:=bsskindata2;
bsskinpanel14.SkinData:=bsskindata2;
end;//case s2 1
2:
begin
ye2.Caption:='2号页 ' ;
bsskinpanel13.SkinData:=bsskindata3;
bsskinpanel14.SkinData:=bsskindata3;
end;//case s2 2
3:
begin
ye2.Caption:='3号页 ' ;
bsskinpanel13.SkinData:=bsskindata4;
bsskinpanel14.SkinData:=bsskindata4;
end;//case s2 3
end;//case s2 over
end;//if
if i=20 then
messagebox(form1.Handle,'演示完毕!!!','',MB_OK);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
j:integer;
begin
s1:=100;
s2:=100;
end;
procedure TForm1.bsSkinButton2Click(Sender: TObject);
begin
form2.Show;
end;
procedure TForm1.bsSkinButton3Click(Sender: TObject);
begin
bsskinexpanel1.Show;
end;
procedure TForm1.bsSkinButton4Click(Sender: TObject);
begin
form4.show;
end;
end.