PROCEDURE Set_ScaleAndGrid; LABEL 999; CONST vLayerType=154; {レイヤの種類} ltDesign=1; ltSheet=2; pPrimShowUnitMark=163; {単位記号の表示(主単位)} D_ID=32; OK_Button = 1; Cancel_Button = 2; iGb=3; iGm_St=4; iG_Et=5; iG_St=6; iSm_St=7; iS_St=8; iS_Et=9; iS_Sb=10; iZm_St=11; iZ_Et=12; iZ_St=13; iP_Sb=14; iC_Sb=15; FT_Static=1; FT_Edit=2; BT_Standard=1; pPrimUseCustomUnits=167; {カスタム単位の使用(主単位)} pGridX=78; {スナップグリッド(X軸方向)} pGridY=79; {スナップグリッド(Y軸方向)} pPrimUnitMark=154; {単位記号(主単位)} VAR Show_UM :BOOLEAN; Item :INTEGER; Done :BOOLEAN; pX,pY, grid, DL_scale,L_scale :REAL; zoom :LONGINT; { fraction :LONGINT; display :LONGINT; format :INTEGER; upi :REAL; name :STRING; squareName :STRING; } AL_hd,L_hd :HANDLE; BEGIN IF GetObjectVariableInt(ActLayer,vLayerType)=ltSheet THEN BEGIN AlrtDialog('このツールはシートレイヤでは使用できません'); GOTO 999; END; IF GetPref(pPrimUseCustomUnits) THEN grid:=5 ELSE grid:=GetPrefReal(pGridX)*10; DL_scale:=GetLScale(ActLayer); zoom:=Round(GetZoom); GetVCenter(pX,pY); Show_UM:=GetPref(pPrimShowUnitMark); IF Show_UM THEN SetPref(pPrimShowUnitMark,FALSE); BeginDialog(D_ID,1, 0, 0,340,190); SetTitle('Scale&Grid'); AddGroupBox('',iGb, 10, 10,330,150); AddField('レファレンスグリッド',iGm_St,FT_Static, 20, 30, 120,50); AddField(Num2StrF(grid),iG_Et,FT_Edit, 130,30, 180,50); AddField(GetPrefString(pPrimUnitMark),iG_St,FT_Static, 190,30, 240,50); AddField('尺度を変更',iSm_St,FT_Static, 20, 60,120,80); AddField('1:',iS_St,FT_Static, 130, 60,180,80); AddField(Num2StrF(DL_scale),iS_Et,FT_Edit, 190, 60,240,80); AddButton('元に戻す',iS_Sb,BT_Standard, 250, 60,320,80); AddField('ズーム',iZm_St,FT_Static, 20, 90,120,110); AddField(Num2StrF(zoom),iZ_Et,FT_Edit, 130, 90,180,110); AddField('%',iZ_St,FT_Static, 190, 90,240,110); AddButton('用紙全体',iP_Sb,BT_Standard, 150,120,230,140); AddButton('中心を戻す',iC_Sb,BT_Standard, 240,120,320,140); AddButton('全レイヤに設定して終了',OK_Button,BT_Standard, 100,160,240,180); AddButton('終了する',Cancel_Button,BT_Standard, 250,160,330,180); EndDialog; Done:=FALSE; GetDialog(D_ID); { GetUnits(fraction,display,format,upi,name,squareName); SetField(iG_St,name); } SelField(iS_Et); SetItemEnable(iS_Sb,FALSE); REPEAT DialogEvent(Item); CASE Item OF OK_Button,Cancel_Button: Done:=TRUE; iG_Et: IF ValidNumStr(GetField(iG_Et),grid) THEN BEGIN GridLines(grid); ReDrawAll; END; iS_Et: IF ValidNumStr(GetField(iS_Et),L_scale) THEN BEGIN SetScale(L_scale); { SetLScale(ActLayer,L_scale);} IF L_scale=DL_scale THEN SetItemEnable(iS_Sb,FALSE) ELSE SetItemEnable(iS_Sb,TRUE); ReDrawAll; END; iS_Sb: BEGIN SetScale(DL_scale); SetField(iS_Et,Num2StrF(DL_scale)); SelField(iS_Et); SetItemEnable(iS_Sb,FALSE); ReDrawAll; END; iZ_Et: IF ValidNumStr(GetField(iZ_Et),zoom) THEN BEGIN SetZoom(zoom); ReDrawAll; END; iP_Sb: BEGIN DoMenuTextByName('Fit To Window',0); SetField(iZ_Et,Num2StrF(Round(GetZoom))); END; iC_Sb: BEGIN SetVCenter(pX,pY); ReDrawAll; END; END; UNTIL Done; ClrDialog; SetPref(pPrimShowUnitMark,Show_UM); IF Item=OK_Button THEN BEGIN AL_hd:=ActLayer; L_hd:=FLayer; WHILE L_hd <> NIL DO BEGIN IF GetObjectVariableInt(L_hd,vLayerType)=ltDesign THEN SetLScale(L_hd,L_scale); L_hd:=NextLayer(L_hd); END; Layer(GetLName(AL_hd)); END; 999:END; RUN(Set_ScaleAndGrid);