HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1012
ひとんちの犬「\t」 でTABコードを表わしますが6解決


ひとんちの犬

リンク

2013/10/12(Sat) 16:21:06|NO.57572

タブの幅(文字数)を変えることはできますか?



この記事に返信する


KA

リンク

2013/10/12(Sat) 16:25:26|NO.57573

それは「タブを解釈する側」の問題です。



(''

リンク

2013/10/12(Sat) 17:51:29|NO.57574

Win32ApiのDrawTextで可能です
http://home.a00.itscom.net/hatada/windows/win32api/win32api01.html#drawtext
上のDT_TABSTOPのところです
HSPのmesでは出来ません

あとKAさん、それは質問主さんもわかってる上で簡潔に聞いてるんだと思います



KA

リンク

2013/10/12(Sat) 18:42:34|NO.57576

>>あとKAさん、それは質問主さんもわかってる上で
そうは思えなかったが・・・



ひとんちの犬

リンク

2013/10/12(Sat) 22:09:20|NO.57579

皆さん回答ありがとうございました



fortunehill

リンク

2013/10/13(Sun) 01:23:04|NO.57580

/*ご参考*/

mes "012345678901234567890" ss = "-\t-" mes ss strrep ss,"\t"," " mes ss



暇人

リンク

2013/10/13(Sun) 20:01:16|NO.57599

mesと同じように扱えるタブ幅設定できる文字描画命令をモジュール化
設定はウィンドウ毎に記憶
タブ幅が文字単位の時フォントサイズの変更に対応

SetMesTabStopで設定してMesTabで描画


#module "mod_mestab" #uselib "user32.dll" #func TabbedTextOut "TabbedTextOutA" sptr,sptr,sptr,sptr,sptr,int,var,sptr #define global TABSTOPMAX 25 //一行に使えるタブ幅指定の最大数(一定のタブ幅しか使わないなら1で良い) //----タブのサイズを設定----- //[SetMesTabStop tab_size, tab_max, pf] // tab_size =タブのサイズを指定(省略時8)「8が通常mesと同じ8文字分、配列を使い複数のタブサイズを設定できる」 // tab_max =tab_sizeに配列を使い複数サイズを使うときに指定(省略時1)「tab=10,15 :SetMesTabStop tab,2」これで10と15の位置がタブ区切りになり3番目以上はmes標準の位置 // pf =1を指定するとタブサイズを文字単位じゃなくピクセル数になる (省略時0) #define global SetMesTabStop(%1=8,%2=1,%3=0) if %2<=1 {_SetMesTabStop %1,%2,%3,temp@mod_mestab}else{_SetMesTabStop %1,%2,%3,%1} #deffunc _SetMesTabStop int tab_size,int tab_max,int pf,array tab_size_array tab_gsel=ginfo_sel*TABSTOPMAX if tab_max<=1{ TSP(tab_gsel)=tab_size }else{ repeat limit(tab_max,0,TABSTOPMAX):TSP(cnt+tab_gsel)=tab_size_array(cnt):loop } tabmax(ginfo_sel)=limit(tab_max,0,TABSTOPMAX) tab_r(ginfo_sel)=1 tab_pf(ginfo_sel)=pf return //----タブサイズ変更された文字列を表示----- //[MesTab mes_str, to] // mes_str =文字列 // to =タブが配置される開始位置の x 座標を指定します (省略時0) #define global MesTab(%1="",%2=0) _MesTab str(%1),%2 #deffunc _MesTab str mes_str,int to mref bm,67 // 現在のウィンドウ情報(BMSCR構造体) tab_gsel=ginfo_sel*TABSTOPMAX if ginfo_sel>=length(tab_f) {tabmax(ginfo_sel)|0:bm_fsize(ginfo_sel)|0:tab_f(ginfo_sel)=0:TSP(tab_gsel) | 0:TSP2(tab_gsel)=0:tab_r(ginfo_sel)=0:tab_pf(ginfo_sel) | 0} if tab_pf(ginfo_sel)=0 { if (bm(32) ! bm_fsize(ginfo_sel)) or tab_r(ginfo_sel) { tab_r(ginfo_sel)=0 bm_fsize(ginfo_sel)=bm(32) if tabmax(ginfo_sel)>0 { mes "\t" //標準のタブを基準にする tbfsize=ginfo_mesx/8 bm(28)-ginfo_mesy repeat tabmax(ginfo_sel) TSP2(cnt+tab_gsel)=(tbfsize*TSP(cnt+tab_gsel)) //タブサイズを文字サイズから計算(TabbedTextOutの指定がピクセル単位なので) loop } } } if tab_pf(ginfo_sel)=0 { TabbedTextOut hdc,bm(27),bm(28),mes_str,strlen(mes_str),tabmax(ginfo_sel),TSP2(tab_gsel),to }else{ TabbedTextOut hdc,bm(27),bm(28),mes_str,strlen(mes_str),tabmax(ginfo_sel),TSP(tab_gsel),to } bm(68)=stat&$ffff,stat>>16 if bm(19)>$ffff {//表示中なら描画した領域だけredraw redraw 1,bm(27),bm(28),stat&$ffff,stat>>16 } bm(28)+bm(69) //描画分縦にカレントポジションを移動 return #global //----モジュールここまで screen 0,640,800 font "MS 明朝",34,1 repeat 5 mes "\t" line ginfo_cx+ginfo_mesx,0,ginfo_cx+ginfo_mesx,800 loop pos 0,0 buf="\tA\tB\tC\tD\tE" ;文字列 mes "mes buf" mes buf mes color 255 mes "MesTab buf" MesTab buf //標準の幅8文字 mes mes "SetMesTabStop 4\nMesTab buf" SetMesTabStop 4 //タブ幅4文字指定 MesTab buf mes mes "tab=1,5,10,20\nSetMesTabStop tab,4\nMesTab buf" tab=1,5,15,30 SetMesTabStop tab,4//4個個別に文字単位でタブ幅を指定 MesTab buf mes mes "tab=50,150,240,350,400\nSetMesTabStop tab,4,1\nMesTab buf" tab=50,150,240,350,400 SetMesTabStop tab,5,1//ピクセル単位で指定 MesTab buf mes "MesTab buf,200" MesTab buf,200 //同じタブ設定で開始位置をずらす mes mes "012345678901234567890123467890123456789" stop




ONION software Copyright 1997-2023(c) All rights reserved.