PROCEDURE View_LaC; LABEL 999; Const vLayerType=154; {レイヤの種類} ltDesign=1; ltSheet=2; iL_max=100; {大きく取るとエラー} iC_max=100; iR_num=3; {>=3} VAR L_num,C_num :INTEGER; PROCEDURE DIALOG_LCview(L_num,C_num:INTEGER); CONST TC_ID=3; iLd_Gb=4; iLs_Gb=5; iCd_Gb=6; iCs_Gb=7; iLa_Rb=100; {+iL_max} iL_St=200; {+iL_max} iLr_Gb=300; {+iL_max} iLd_Rb=400; {+iL_max*iR_num+iR_num} iLs_Rb=50; {+6} iCa_Rb=1100; {+iC_max} iC_St=1200; {+iC_max} iCr_Gb=1300; {+iC_max} iCd_Rb=1400; {+iC_max*iR_num+iR_num} iCs_Rb=60; {+6} iV_Et=10; iV_Pb=11; Y_str='アクティブ'; N_str='     '; St_width=15; Et_width=25; vLayerVisibility=153; {レイヤ表示状態} VAR D_ID,D_Res :LONGINT; L_hd :HANDLE; i,L_sta,C_sta,L_act,C_act :INTEGER; L_name :DYNARRAY[] OF STRING; State :ARRAY[-1..2] OF INTEGER; PROCEDURE HandleEvents( VAR item : LONGINT; data : LONGINT); BEGIN { AlrtDialog(Concat(D_ID,',',SetupDialogC));} { AlrtDialog(Concat(item,',',data));} CASE item OF SetupDialogC: {=2255:} BEGIN SetField(501,'warning'); SetField(2604,'このツールは使用回数に限度があります'); IF D_ID>1000 THEN AlertCritical ('使用回数が限度を超えました','ダイアログを終了して、Vector Worksを起ち上げ直して下さい'); State[0]:=1; {表示} State[2]:=2; {グレイ} State[-1]:=3; {隠す} FOR i:=1 TO L_num DO BEGIN L_sta:=GetLVis(GetLayerByName(L_name[i])); SetItem(iLd_Rb+i*iR_num+State[L_sta],TRUE); IF GetLayerByName(L_name[i])=ActLayer THEN BEGIN { SetItemEnable(iL_St+i,FALSE); SetField(iL_St+i,Concat(L_name[i],'(',Y_str,')'));} SetItem(iLa_Rb+i,TRUE); SetField(iLa_Rb+i,Y_str); L_act:=iLa_Rb+i; END; END; SetItem(iLs_Rb+GetLayerOptions,TRUE); FOR i:=1 TO C_num DO BEGIN C_sta:=GetCVis(ClassList(i)); SetItem(iCd_Rb+i*iR_num+State[C_sta],TRUE); IF ClassList(i)=ActiveClass THEN BEGIN { SetItemEnable(iC_St+i,FALSE); SetField(iC_St+i,Concat(ClassList(i),'(',Y_str,')'));} SetItem(iCa_Rb+i,TRUE); SetField(iCa_Rb+i,Y_str); C_act:=iCa_Rb+i; END; END; SetItem(iCs_Rb+GetClassOptions,TRUE); END; iLa_Rb+1..iLa_Rb+iL_max: {変数不可} BEGIN SetField(L_act,N_str); FOR i:=1 TO L_num DO IF ItemSel(iLa_Rb+i) THEN BEGIN Layer(L_name[i]); SetField(iLa_Rb+i,Y_str); L_act:=iLa_Rb+i; ReDrawAll; END; END; iLd_Rb..iLd_Rb+iL_max*iR_num+iR_num: {変数不可} BEGIN FOR i:=1 TO L_num DO BEGIN IF ItemSel(iLd_Rb+i*iR_num+1) THEN SetObjectVariableInt(GetLayerByName(L_name[i]),vLayerVisibility,0); IF ItemSel(iLd_Rb+i*iR_num+2) THEN SetObjectVariableInt(GetLayerByName(L_name[i]),vLayerVisibility,2); IF ItemSel(iLd_Rb+i*iR_num+3) THEN SetObjectVariableInt(GetLayerByName(L_name[i]),vLayerVisibility,-1); END; ReDrawAll; END; iLs_Rb+1..iLs_Rb+6: FOR i:=1 TO 6 DO IF ItemSel(iLs_Rb+i) THEN BEGIN SetLayerOptions(i); ReDrawAll; END; iCa_Rb+1..iCa_Rb+iC_max: {変数不可} BEGIN SetField(C_act,N_str); FOR i:=1 TO C_num DO IF ItemSel(iCa_Rb+i) THEN BEGIN NameClass(ClassList(i)); SetField(iCa_Rb+i,Y_str); C_act:=iCa_Rb+i; ReDrawAll; END; END; iCd_Rb..iCd_Rb+iC_max*iR_num+iR_num: {変数不可} BEGIN FOR i:=1 TO C_num DO BEGIN IF ItemSel(iCd_Rb+i*iR_num+1) THEN ShowClass(ClassList(i)); IF ItemSel(iCd_Rb+i*iR_num+2) THEN GrayClass(ClassList(i)); IF ItemSel(iCd_Rb+i*iR_num+3) THEN HideClass(ClassList(i)); END; ReDrawAll; END; iCs_Rb+1..iCs_Rb+6: FOR i:=1 TO 6 DO IF ItemSel(iCs_Rb+i) THEN BEGIN SetClassOptions(i); ReDrawAll; END; iV_Pb: BEGIN VSave(GetField(iV_Et)); SysBeep; END; END; END; BEGIN D_ID := CreateLayout('表示切換',TRUE,'','終了'); CreateGroupBox(D_ID,iLd_Gb,'デザインレイヤ',TRUE); CreateGroupBox(D_ID,iLs_Gb,'他のレイヤを',TRUE); CreateGroupBox(D_ID,iCd_Gb,'クラス',TRUE); CreateGroupBox(D_ID,iCs_Gb,'他のクラスを',TRUE); {SetFirstLayoutItem(D_ID,iLd_Gb); SetBelowItem(D_ID,iLdGr,iLs_Gb,0,0); SetBelowItem(D_ID,iLsGr,iCd_Gb,0,0); SetBelowItem(D_ID,iCdGr,iCs_Gb,0,0);} ALLOCATE L_name[1..L_num]; L_hd:=LLayer; i:=0; WHILE L_hd <> NIL DO BEGIN IF GetObjectVariableInt(L_hd,vLayerType)=ltDesign THEN BEGIN i:=i+1; L_name[i]:=GetLName(L_hd); CreateRadioButton (D_ID,iLa_Rb+i,N_str); IF i=1 THEN SetFirstGroupItem(D_ID,iLd_Gb,iLa_Rb+i) ELSE SetBelowItem(D_ID,iLa_Rb+i-1,iLa_Rb+i,0,0); CreateStaticText(D_ID,iL_St+i,L_name[i],St_width); SetRightItem(D_ID,iLa_Rb+i,iL_St+i,0,0); CreateGroupBox(D_ID,iLr_Gb+i,'',FALSE); SetRightItem(D_ID,iL_St+i,iLr_Gb+i,0,0); CreateRadioButton (D_ID,iLd_Rb+i*iR_num+1,'表示'); CreateRadioButton (D_ID,iLd_Rb+i*iR_num+2,'グレイ'); CreateRadioButton (D_ID,iLd_Rb+i*iR_num+3,'隠す'); SetFirstGroupItem(D_ID,iLr_Gb+i,iLd_Rb+i*iR_num+1); SetRightItem(D_ID,iLd_Rb+i*iR_num+1,iLd_Rb+i*iR_num+2,0,0); SetRightItem(D_ID,iLd_Rb+i*iR_num+2,iLd_Rb+i*iR_num+3,0,0); END ELSE L_num:=L_num-1; L_hd:=PrevLayer(L_hd); END; {マニュアルと違うので注意} CreateRadioButton(D_ID,iLs_Rb+1,'隠す'); CreateRadioButton(D_ID,iLs_Rb+2,'グレイ表示'); CreateRadioButton(D_ID,iLs_Rb+3,'表示'); CreateRadioButton(D_ID,iLs_Rb+4,'表示+スナップ'); CreateRadioButton(D_ID,iLs_Rb+5,'表示+スナップ+編集'); CreateRadioButton(D_ID,iLs_Rb+6,'グレイ表示+スナップ'); SetFirstGroupItem(D_ID,iLs_Gb,iLs_Rb+1); SetBelowItem(D_ID,iLs_Rb+1,iLs_Rb+2,0,0); SetBelowItem(D_ID,iLs_Rb+2,iLs_Rb+6,0,0); SetBelowItem(D_ID,iLs_Rb+6,iLs_Rb+3,0,0); SetBelowItem(D_ID,iLs_Rb+3,iLs_Rb+4,0,0); SetBelowItem(D_ID,iLs_Rb+4,iLs_Rb+5,0,0); FOR i:=1 TO C_num DO BEGIN CreateRadioButton (D_ID,iCa_Rb+i,N_str); IF i=1 THEN SetFirstGroupItem(D_ID,iCd_Gb,iCa_Rb+i) ELSE SetBelowItem(D_ID,iCa_Rb+i-1,iCa_Rb+i,0,0); CreateStaticText(D_ID,iC_St+i,ClassList(i),St_width); SetRightItem(D_ID,iCa_Rb+i,iC_St+i,0,0); CreateGroupBox(D_ID,iCr_Gb+i,'',FALSE); SetRightItem(D_ID,iC_St+i,iCr_Gb+i,0,0); CreateRadioButton (D_ID,iCd_Rb+i*iR_num+1,'表示'); CreateRadioButton (D_ID,iCd_Rb+i*iR_num+2,'グレイ'); CreateRadioButton (D_ID,iCd_Rb+i*iR_num+3,'隠す'); SetFirstGroupItem(D_ID,iCr_Gb+i,iCd_Rb+i*iR_num+1); SetRightItem(D_ID,iCd_Rb+i*iR_num+1,iCd_Rb+i*iR_num+2,0,0); SetRightItem(D_ID,iCd_Rb+i*iR_num+2,iCd_Rb+i*iR_num+3,0,0); END; {マニュアルと違うので注意} CreateRadioButton(D_ID,iCs_Rb+1,'隠す'); CreateRadioButton(D_ID,iCs_Rb+2,'グレイ表示'); CreateRadioButton(D_ID,iCs_Rb+3,'表示'); CreateRadioButton(D_ID,iCs_Rb+4,'表示+スナップ'); CreateRadioButton(D_ID,iCs_Rb+5,'表示+スナップ+編集'); CreateRadioButton(D_ID,iCs_Rb+6,'グレイ表示+スナップ'); SetFirstGroupItem(D_ID,iCs_Gb,iCs_Rb+1); SetBelowItem(D_ID,iCs_Rb+1,iCs_Rb+2,0,0); SetBelowItem(D_ID,iCs_Rb+2,iCs_Rb+6,0,0); SetBelowItem(D_ID,iCs_Rb+6,iCs_Rb+3,0,0); SetBelowItem(D_ID,iCs_Rb+3,iCs_Rb+4,0,0); SetBelowItem(D_ID,iCs_Rb+4,iCs_Rb+5,0,0); CreateTabControl(D_ID,TC_ID); SetFirstLayoutItem(D_ID,TC_ID); SetHelpString(TC_ID,'このツールは使用回数に限度があります'); CreateTabPane(D_ID,TC_ID,iLd_Gb); CreateTabPane(D_ID,TC_ID,iLs_Gb); CreateTabPane(D_ID,TC_ID,iCd_Gb); CreateTabPane(D_ID,TC_ID,iCs_Gb); CreateEditText(D_ID,iV_Et,'新規登録画面',Et_width); CreatePushButton(D_ID,iV_Pb,'画面登録'); SetBelowItem(D_ID,TC_ID,iV_Et,0,0); SetRightItem(D_ID,iV_Et,iV_Pb,0,0); IF VerifyLayout(D_ID) THEN D_Res := RunLayoutDialog(D_ID,HandleEvents); END; BEGIN IF GetObjectVariableInt(ActLayer,vLayerType)=ltSheet THEN BEGIN AlrtDialog('このツールはシートレイヤでは使用できません'); GOTO 999; END; L_num:=NumLayers; C_num:=ClassNum; IF L_num>=iL_max THEN BEGIN AlertCritical('レイヤ数が設定値を超えました','スクリプトを修正する必要があります'); GOTO 999; END; IF C_num>=iC_max THEN BEGIN AlertCritical('クラス数が設定値を超えました','スクリプトを修正する必要があります'); GOTO 999; END; DIALOG_LCview(L_num,C_num); 999:END; Run(View_LaC);