グリッドイメージ3
前にちょっと書いていた、エセ編集機能を搭載してみた。
列幅と各セルのスタイルについて悩んだまま放置してあります。=長い文字列に変更しようとすると周りのセルと重なって表示されちゃうよ。
どんな実装が適当なんだろう?
160行。長いです。<<修正点>>
ダブルクリックすると修正できるようにしました。ただし長い文字列を入れた場合、隣のセルと重なって表示されます。またエディタ部品を使っているため編集時セル内の改行は無視されます。
「地域,市内,北海道,東北,東北,関東,信越/北陸/東海,近畿,近畿,中国・四国,九州・沖縄 2kg以下,460円,920円,640円,550円,550円,550円,550円,640円,740円,920円 4kg以下,570円,"1,070円",790円,700円,700円,700円,700円,790円,890円,"1,070円" 6kg以下,680円,"1,210円",930円,840円,840円,840円,840円,930円,"1,030円","1,210円" 8kg以下,730円,"1,280円","1,000円",910円,910円,910円,910円,"1,000円","1,100円","1,280円" 11kg以下,790円,"1,350円","1,080円",990円,990円,990円,990円,"1,080円","1,170円","1,350円" 12kg以下,840円,"1,430円","1,150円","1,060円","1,060円","1,060円","1,060円","1,150円","1,250円","1,430円" 14kg以下,900円,"1,500円","1,220円","1,130円","1,130円","1,130円","1,130円","1,220円","1,320円","1,500円" 16kg以下,950円,"1,570円","1,290円","1,200円","1,200円","1,200円","1,200円","1,290円","1,390円","1,570円" 18kg以下,"1,000円","1,640円","1,360円","1,270円","1,270円","1,270円","1,270円","1,360円","1,460円","1,640円" 21kg以下,"1,060円","1,710円","1,440円","1,350円","1,350円","1,350円","1,350円","1,440円","1,530円","1,710円" 」をCSV取得してQQに代入 線太さは1 料金表とはグリッドイメージ その予備間隔は3 その中央揃えは1 そのアイテムはQQ そのタイトル色は黄色 そのマウス移動した時は クリック位置取得 そのダブルクリックした時は 編集エディタのポケットは「{クリック行}{~}{クリック列}」 編集エディタのサイズは「{(料金表の列W\クリック列)+料金表のX+1},{(料金表の行H\クリック行)+料金表のY+1},{(料金表の列W\(クリック列+1))+料金表のX},{(料金表の行H\(クリック行+1))+料金表のY}」 編集エディタの可視は1 編集エディタに注目 編集エディタは料金表のFアイテム\(クリック行)\(クリック列) 料金表で5,5を緑色にセル色設定 編集エディタとはエディタ その可視は0 そのキー押した時は もし編集エディタの押された仮想キー=13なら 編集エディタの可視は0 編集エディタのポケットをCSV取得してAAに代入 (AA\0)、(AA\1)を編集エディタに料金表のセル更新 ●クリック位置取得 XX=料金表のマウスX YY=料金表のマウスY 料金表の列Wを反復 もしXX<それなら クリック列は回数-2 抜ける 料金表の行Hを反復 もしYY<それなら クリック行は回数-2 抜ける ■グリッドイメージ+イメージ ・アイテム←アイテム表示→アイテム取得 ・{非公開}列W{=0} ・{非公開}行H{=0} ・{非公開}最大バイト数 ・{非公開}AA ・{非公開}FF{=""} ・{非公開}XX ・{非公開}YY ・{非公開}前回値 ・{非公開}一時色 ・{非公開}一時線太さ ・予備間隔{=3} ・{非公開}Fアイテム{=0} ・{非公開}アイテム取得〜それはFアイテム ・{非公開}アイテム表示(Vで)〜 FアイテムはV VをFFに代入 //変数初期化 列W=0 行H=0 前回値=0 文字H=文字高取得(「S」) //最初にイメージのサイズを割り出す。 //高さを割り出す。 FFを反復 最大バイト数=0 反復 AA=文字高取得(それ) もしAA>最大バイト数なら 最大バイト数=AA 行Hに最大バイト数を配列追加 行Hを反復 YY=それ+前回値+予備間隔*2*(回数>1) 行H\(回数-1)=YY 前回値はYY 高さは前回値+INT(線太さ+1) //再び使う変数を初期化 前回値=0 //幅を割り出す。 FFを表行列交換して反復 最大バイト数=0 反復 AA=文字幅取得(それ) もしAA>最大バイト数なら 最大バイト数=AA 列Wに最大バイト数を配列追加 列Wを反復 XX=それ+前回値+予備間隔*2*(回数>1) 列W\(回数-1)=XX 前回値はXX 幅は前回値+INT(線太さ+1) //グローバル変数を壊さないように。 背景色はF背景色 一時色は塗り色 一時線太さは線太さ 線太さは0 塗色はFタイトル色 //表の描画。 0,0から前回値+1,文字H+予備間隔*2+1へ四角 線太さは一時線太さ 塗色は一時色 列Wを反復 それ,0からそれ,YYへ線 行Hを反復 0,それからXX,それへ線 FFを反復 YY=(行H\(回数-1))+予備間隔 反復 XX=(列W\(回数-1))+予備間隔 AA=それ もしF中央揃え=1なら XX=XX+((列W\(回数))-XX-(文字幅取得(AA)))/2 自身のXX*1,YY*1へAAを文字表示 ・セル色設定(X,YをRGBに)〜 //アイテム\X\Yのセルの色をRGBに変換する 一時色は塗り色 一時線太さは線太さ 線太さは0 塗色はRGB (列W\(Y)),(行H\(X))から(列W\(Y+1))+1,(行H\(X+1))+1へ四角 XX=(列W\(Y))+予備間隔 YY=(行H\(X))+予備間隔 もしF中央揃え=1なら XX=XX+((列W\(Y+1))-XX-(文字幅取得(Fアイテム\(X)\(Y))))/2 自身のXX,YYへ(Fアイテム\(X)\(Y))を文字表示 線太さは一時線太さ 塗色は一時色 ・タイトル色←タイトル色設定→タイトル色取得 ・{非公開}Fタイトル色{=$FFFFFF} ・{非公開}タイトル色取得〜それはFタイトル色 ・{非公開}タイトル色設定(RGBで)〜 Fタイトル色はRGB もしFアイテム<>""なら Fアイテムでアイテム表示 ・背景色←背景色設定→背景色取得 ・{非公開}F背景色{=$FFFFFF} ・{非公開}背景色取得〜それはF背景色 ・{非公開}背景色設定(RGBで)〜 F背景色はRGB RGBで画面クリア。 ・中央揃え{=0}←中央揃え設定→中央揃え取得 ・{非公開}F中央揃え{=0} ・{非公開}中央揃え取得〜それはF中央揃え ・{非公開}中央揃え設定(Sで)〜 F中央揃えはS ・セル更新(行、列をSに)〜 Fアイテム\(行*1)\(列*1)=S 行*1、列*1をF背景色にセル色設定
セルのスタイルについて考えがまとまったらセル更新・セル色設定は修正する予定。