PROCEDURE View_LaC; LABEL 999; Const vLayerType=154; {レイヤの種類} ltDesign=1; ltSheet=2; FUNCTION ResourceIsOK :BOOLEAN; BEGIN IF SetVSResourceFile('IP Resources') THEN ResourceIsOK := TRUE ELSE Message('The [IP Resources] file was not found.'); END; PROCEDURE DIALOG_LCview; CONST TC_ID=3; iLd_Gb=4; iLs_Gb=5; iCd_Gb=6; iCs_Gb=7; iL_Lb=8; iLs_Rb=20; {+6} iC_Lb=9; iCs_Rb=30; {+6} iV_Et=10; iV_Pb=11; Lb_width=45; Lb_height=20; Et_width=25; VAR {keep} D_ID,D_Res :LONGINT; State :ARRAY[-1..2] OF STRING; PROCEDURE HandleEvents( VAR item : LONGINT; data : LONGINT); CONST N_Ci=0; A_Ci=1; V_Ci=2; vLayerVisibility=153; TYPE Col=STRUCTURE Hs :STRING; width :INTEGER; END; D_SingleInstance=STRUCTURE y,n :INTEGER; END; D_Radio=STRUCTURE s,g,h :INTEGER; END; VAR {once} L_Col,C_Col :ARRAY[0..2] OF Col; L_Da,C_Da :D_SingleInstance; L_Dv,C_Dv :D_Radio; L_hd :HANDLE; i,itemIndex :INTEGER; itemResult :BOOLEAN; eventType,rowIndex,columIndex, imageIndex,L_sta :INTEGER; itemString :STRING; PROCEDURE Setup_Lb(i_Lb:INTEGER; _Col:ARRAY[0..2] OF Col; VAR _Da:D_SingleInstance; VAR _Dv:D_Radio); CONST { 初期値と同じ場合はFALSE} { CT_Static=1;} CT_Radio=2; { CT_MultiState=3;} CT_SingleInstance=4; { DT_Text=0;} DT_Icon=1; { DT_TextandIcon=3;} VAR ImageCheck,ImageBlank,itemIndex :INTEGER; BEGIN ImageCheck := AddLBImage(D_ID,i_Lb,1,11022); ImageBlank := AddLBImage(D_ID,i_Lb,1,11023); {0より読み込まれた順になる、使用しない場合は-1を} IF NOT EnableLBClickAllDataChange(D_ID,i_Lb,TRUE) THEN AlrtDialog('Fail EnableLBClickAllDataChange'); {IF NOT EnableLBSingleLineSelection(D_ID,i_Lb,FALSE) THEN AlrtDialog('Fail EnableLBSingleLineSelection');} EnableLBColumnLines(D_ID,i_Lb,TRUE); itemIndex:=InsertLBColumn(D_ID,i_Lb,N_Ci,_Col[N_Ci].Hs,_Col[N_Ci].width); itemIndex:=InsertLBColumn(D_ID,i_Lb,A_Ci,_Col[A_Ci].Hs,_Col[A_Ci].width); IF NOT SetLBControlType(D_ID,i_Lb,A_Ci,CT_SingleInstance) THEN AlrtDialog('A_Col Fail SetLBControlType'); IF NOT SetLBItemDisplayType(D_ID,i_Lb,A_Ci,DT_Icon) THEN AlrtDialog('A_Col Fail SetLBItemDisplayType'); { EnableLBColumnTracking(D_ID,i_Lb,A_Ci,FALSE);} _Da.n:=InsertLBColumnDataItem(D_ID,i_Lb,A_Ci,' ',ImageBlank,-1,0); _Da.y:=InsertLBColumnDataItem(D_ID,i_Lb,A_Ci,'アクティブ',ImageCheck,-1,0); {順番が重要、オフイメージはいらない} itemIndex:=InsertLBColumn(D_ID,i_Lb,V_Ci,_Col[V_Ci].Hs,_Col[V_Ci].width); IF NOT SetLBControlType(D_ID,i_Lb,V_Ci,CT_Radio) THEN AlrtDialog('V_Col Fail SetLBControlType'); IF NOT SetLBItemDisplayType(D_ID,i_Lb,V_Ci,DT_Icon) THEN AlrtDialog('V_Col Fail SetLBItemDisplayType'); EnableLBRadioColumnLines(D_ID,i_Lb,V_Ci,TRUE); { EnableLBColumnTracking(D_ID,i_Lb,V_Ci,FALSE);} _Dv.s:=InsertLBColumnDataItem(D_ID,i_Lb,V_Ci,State[0],ImageCheck,ImageBlank,0); _Dv.g:=InsertLBColumnDataItem(D_ID,i_Lb,V_Ci,State[2],ImageCheck,ImageBlank,0); _Dv.h:=InsertLBColumnDataItem(D_ID,i_Lb,V_Ci,State[-1],ImageCheck,ImageBlank,0); {オフイメージを明示} END; BEGIN CASE item OF SetupDialogC: BEGIN {−−−リストブラウザ レイヤ−−−} L_Col[N_Ci].Hs:='デザインレイヤ名'; L_Col[N_Ci].width:=100; L_Col[A_Ci].Hs:='アクティブ'; L_Col[A_Ci].width:=60; L_Col[V_Ci].Hs:='表示・グレイ・隠す'; L_Col[V_Ci].width:=100; Setup_Lb(iL_Lb,L_Col,L_Da,L_Dv); L_hd:=LLayer; itemIndex:=0; WHILE L_hd <> NIL DO BEGIN IF GetObjectVariableInt(L_hd,vLayerType)=ltDesign THEN BEGIN itemIndex:=InsertLBItem(D_ID,iL_Lb,itemIndex,GetLName(L_hd)); IF L_hd=ActLayer THEN itemResult:=SetLBItemUsingColumnDataItem(D_ID,iL_Lb,itemIndex,A_Ci,L_Da.y); CASE GetLVis(L_hd) OF 0:itemResult:=SetLBItemUsingColumnDataItem(D_ID,iL_Lb,itemIndex,V_Ci,L_Dv.s); 2:itemResult:=SetLBItemUsingColumnDataItem(D_ID,iL_Lb,itemIndex,V_Ci,L_Dv.g); -1:itemResult:=SetLBItemUsingColumnDataItem(D_ID,iL_Lb,itemIndex,V_Ci,L_Dv.h); END; itemIndex:=itemIndex+1; END; L_hd:=PrevLayer(L_hd); END; {−−−他のレイヤを−−−} SetItem(iLs_Rb+GetLayerOptions,TRUE); {−−−リストブラウザ クラス−−−} C_Col[N_Ci].Hs:='クラス名'; C_Col[N_Ci].width:=100; C_Col[A_Ci].Hs:='アクティブ'; C_Col[A_Ci].width:=60; C_Col[V_Ci].Hs:='表示・グレイ・隠す'; C_Col[V_Ci].width:=100; Setup_Lb(iC_Lb,C_Col,C_Da,C_Dv); FOR i:=1 TO ClassNum DO BEGIN itemIndex:=i-1; itemIndex:=InsertLBItem(D_ID,iC_Lb,itemIndex,ClassList(i)); IF ClassList(i)=ActiveClass THEN itemResult:=SetLBItemUsingColumnDataItem(D_ID,iC_Lb,itemIndex,A_Ci,C_Da.y); CASE GetCVis(ClassList(i)) OF 0:itemResult:=SetLBItemUsingColumnDataItem(D_ID,iC_Lb,itemIndex,V_Ci,C_Dv.s); 2:itemResult:=SetLBItemUsingColumnDataItem(D_ID,iC_Lb,itemIndex,V_Ci,C_Dv.g); -1:itemResult:=SetLBItemUsingColumnDataItem(D_ID,iC_Lb,itemIndex,V_Ci,C_Dv.h); END; END; {−−−他のクラスを−−−} SetItem(iCs_Rb+GetClassOptions,TRUE); END; iL_Lb: BEGIN { IF GetLBEventInfo(D_ID,iL_Lb,eventType,rowIndex,columIndex) THEN AlrtDialog(Concat(eventType,',',rowIndex,',',columIndex)); } IF GetLBEventInfo(D_ID,iL_Lb,eventType,rowIndex,columIndex) THEN CASE columIndex OF A_Ci: IF GetLBItemInfo(D_ID,iL_Lb,rowIndex,N_Ci,itemString,imageIndex) THEN Layer(itemString); V_Ci: {複数変更にも対応} FOR i:=0 TO GetNumLBItems(D_ID,iL_Lb)-1 DO IF GetLBItemInfo(D_ID,iL_Lb,i,V_Ci,itemString,imageIndex) THEN BEGIN IF itemString=State[0] THEN L_sta:=0; IF itemString=State[2] THEN L_sta:=2; IF itemString=State[-1] THEN L_sta:=-1; IF GetLBItemInfo(D_ID,iL_Lb,i,N_Ci,itemString,imageIndex) THEN SetObjectVariableInt(GetLayerByName(itemString),vLayerVisibility,L_sta); END; 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; iC_Lb: BEGIN { IF GetLBEventInfo(D_ID,iC_Lb,eventType,rowIndex,columIndex) THEN AlrtDialog(Concat(eventType,',',rowIndex,',',columIndex)); } IF GetLBEventInfo(D_ID,iC_Lb,eventType,rowIndex,columIndex) THEN CASE columIndex OF A_Ci: IF GetLBItemInfo(D_ID,iC_Lb,rowIndex,N_Ci,itemString,imageIndex) THEN NameClass(itemString); V_Ci: {複数変更にも対応} FOR i:=0 TO GetNumLBItems(D_ID,iC_Lb)-1 DO IF GetLBItemInfo(D_ID,iC_Lb,i,V_Ci,itemString,imageIndex) THEN BEGIN IF ( itemString=State[0] ) & GetLBItemInfo(D_ID,iC_Lb,i,N_Ci,itemString,imageIndex) THEN ShowClass(itemString); IF ( itemString=State[2] ) & GetLBItemInfo(D_ID,iC_Lb,i,N_Ci,itemString,imageIndex) THEN GrayClass(itemString); IF ( itemString=State[-1] ) & GetLBItemInfo(D_ID,iC_Lb,i,N_Ci,itemString,imageIndex) THEN HideClass(itemString); END; 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 State[0]:='表示'; State[2]:='グレイ'; State[-1]:='隠す'; 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); CreateLB(D_ID,iL_Lb,Lb_width,Lb_height); SetFirstGroupItem(D_ID,iLd_Gb,iL_Lb); SetHelpString(iL_Lb,'クリックする際にoption (Mac) /alt (Win) キーを押していれば、 列にあるすべてのデータ項目を一回のクリックで変更できます'); {マニュアルと違うので注意} 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); CreateLB(D_ID,iC_Lb,Lb_width,Lb_height); SetFirstGroupItem(D_ID,iCd_Gb,iC_Lb); SetHelpString(iC_Lb,'クリックする際にoption (Mac) /alt (Win) キーを押していれば、 列にあるすべてのデータ項目を一回のクリックで変更できます'); {マニュアルと違うので注意} 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); 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; IF ResourceIsOK THEN DIALOG_LCview; 999:END; Run(View_LaC);