| 2010/01/28(Thu) 09:43:46 編集(投稿者)
ステラさん簡易メニューのサンプルです。 if (#配列要素数("InchToDot")=-1) var 共通,数値{&desksize[2]},共通,Int{&InchToDot} &InchToDot=#デスクトップサイズ("desksize")\ ,&InchToDot=#InchToDot(1),&desksize[2]=0 end var Str{\ &ヘッタ="どちらのファイルで実行しますか?"\ ,&フッタ="中止はEscキーを押して下さい。"\ ,&S候補一覧[6]\ = { "○ 表A"\ , "○ 表B"\ , "[OK]"\ , "データを追加します"\ , "枠組みだけの表"\ , "[キャンセル]"}\ , &S選択値}\ , Long {\ &L初期値 = 1\ ,&L色反転 =-2\ ,&L選択番号} call メニュー選択(&ヘッタ,&フッタ,&L初期値,&L色反転,&S候補一覧,&S選択値,&L選択番号) 確認 #str(&L選択番号)+" "+&S選択値
proc メニュー選択(Str &Stop,Str &Slast,Long &Lmns,Long &L色反転\ ,refer Str &SV[],refer Str &選択文字,refer Long &選択番号) var Long{&M1=1,&M2,&M3=#配列要素数("SV"),&M5,&字数=0,&要桁\ ,&行,&列,&桁,&回},Str{&文字色="黒",&背景色="菜の花色",&font\ ,&縦,&横,&Q=#JIS(34),&C=#JIS(44),&QC,&CQ,&QCQ,&書体,&x,&y} var Str{&Sicon[36]={"1.","2.","3.","4.","5.","6.","7.","8.","9.","0."\ ,"a.","b.","c.","d.","e.","f.","g.","h.","i.","j.","k.","l.","m."\ ,"n.","o.","p.","q.","r.","s.","t.","u.","v.","w.","x.","y.","z."}} * cond (#配列要素数("zoom")=-1) call 共通変数を宣言() /* 変数はライブラリーの冒頭に記述するだけでは読み込まない */ for &M5=&M1,&M3,1 /* 文字型の配列値&SVの桁数を求める */ &字数 = #大(&字数,#桁数(&SV[&M5])) end &QC = &Q+&C,&CQ = &C+&Q , &QCQ = &QC+&Q , &M5 = #大(#桁数(&Stop),#桁数(&Slast))-2\ ,&列 =#COND(&L色反転<-1,#大(#ABS(&L色反転),#切り上げ(&M3/18,0)),1,#切り上げ(&M3/18,0))\ , &桁 = #cond(&列>1 .and &字数*&列*1.5>&M5,&字数,&列>1 .and &字数*&列*1.5<&M5,&M5\ ,1,#大(&字数,&M5)),&行 = #cond(&列>4 .and &字数>17,28,&列>3 .and &字数>15,24\ ,&列>3 .and &字数>13,22,&列>2 .or &字数>11,21,1,20)\ ,&列 = #COND(&L色反転<-1,#ABS(&L色反転),1,#切り上げ(&M3/&行,0))\ , &M2 = #切り上げ(&M3/&列,0) , &行 = &M2\ ,&font = #cond(&列*&桁>120,"7.5"\ ,&列*&桁>110,"8"/* フォントの実際の大きさはフォームの表示倍率で変わる */\ ,&列*&桁>100,"9"/* 簡易メニューの基盤はポイントピクセルなので標準や */\ ,&行>25,"10"/* 取得できない倍率の場合はみ出る事になる。 */\ ,&行>23,"10.5"\ ,&行>20,"11"\ ,&行>18,"12"\ ,1,"14")\ ,&font = #STR(#切り捨て(#num(&font)*(75/#NVL(#変数("表示倍率"),100)),1)) &x = #STR(&desksize[1]-(#num(&font)*&InchToDot/72)*&列*(&桁/2)*1.3\ -(#num(&font)*&InchToDot/72)*(1.9*2+3*(&列-1)))\ ,&選択番号 = #cond(&Lmns<1 .and &列>1,#切り捨て(&列/2,0)*&M2-#切り捨て(&M2/2,0)\ ,&Lmns<1,#切り捨て(&M3/2,0),1,&Lmns) , &y = #cond(&行>20,"1",1,"20") 繰り返し &回 = 1 , &列 for &M5 = &M1 , &M2 , 1 &文字色 = #cond(&L色反転=-1 .and &Lmns>&M5,#計算(#代入(&背景色,"飴色"),"白緑"),1,#計算(\ #代入(&背景色,"菜の花色"),"黒")) , &書体 = &QC+"太字"+&CQ+&文字色+&QCQ+&背景色+&Q+"}" &縦 = &縦+&C+"{"+#Str(&M5)+&CQ+#cond(&M3<37,&Sicon[&M5])+#計算(#代入(&選択文字\ ,#cond(&SV[&M5]="","空 白",1,&SV[&M5])),#代入(&要桁,#桁数(&選択文字)),&選択文字)\ +#cond(&M3>100,"",1,#複写(" ",#切り捨て((&桁-&要桁)/2,0)))+&書体 end &縦 = "{"+#部分列(&縦,2)+"}" , &横 = &横+&C+&縦 , &縦 = "" , &M1 = &M2+1,\ &M2 = #cond((&M2/&回)*(&回+1)>&M3,&M3,1,(&M2/&回)*(&回+1)) 繰り返し終了 &縦 = "{"+#部分列(&縦,2)+"}" , &横 = &横+&C+&縦 コマンド "簡易メニュー &選択番号,初期項目=&選択番号,ESC=有効,文字選択=する\ ,位置=("+&x+","+&y+"),フォント={""MS Pゴシック"","+&font+",標準,""黒"",""空色""}\ ,ヘッダ={"""+&Stop+""",""MS 明朝"","+&font+",太字,""紺色"",""空色""}\ ,フッダ={"""+&Slast+""",""MS 明朝"","+&font+",標準,""青"",""空色""}"+","+&横 &縦=#cond(&選択番号<1,"",&SV[&選択番号]="空 白","#U",1,&SV[&選択番号]),\ &選択番号=#cond(&選択番号<1,0,1,&選択番号),&選択文字=&縦 end
|