|
|
2011/2/28(Mon) 01:47:12|NO.37290
mesでOKやNOなどの特定の文字を入れると色が変わるというプログラムを作りたいのですが作り方を教えてください
|
|
2011/2/28(Mon) 02:16:57|NO.37291
残念だがmesで文字を出すことはできるが入れることはできないんだなあ。
色より考え方を変えて、自分の質問内容をもう一度吟味しなさい。
|
|
2011/2/28(Mon) 02:20:48|NO.37292
sdim a_test,50, 4,2
a_test(0,0)="何をどこに入れるのか詳しく教えてほしい","#000000"
a_test(0,1)="OK","#ff0000"
a_test(0,2)="NO","#0000ff"
button "普通",*test
button "OK",*test
button "NO",*test
stop
*test
v_n = stat
color $ff,$ff,$ff:boxf
color int("$" + strmid(a_test(1,v_n), 1, 2)), int("$" + strmid(a_test(1,v_n), 3, 2)), int("$" + strmid(a_test(1,v_n), 5, 2))
pos 200,100
mes a_test(0,v_n)
|
|
2011/2/28(Mon) 03:54:52|NO.37293
color 255,0,0mes : "わかりずらくて"
や
color 0,255,87 : mes"すみません"
などcolorでいちいち設定しなくてもいいように
「わかりずらくて」などの単語が出てきたら自動的に色が変わるようにしたいのです
|
|
2011/2/28(Mon) 09:49:46|NO.37294
命令の再定義を行えばよろしいかと。
以下例。
//mesの再定義
#undef mes
#module
#deffunc mes str s
r=ginfo_r
g=ginfo_g
b=ginfo_g
if s=="緑" : color 0,255,0
mes@hsp s
color r,g,b
return
#global
//テスト
mes "赤"
mes "緑"
mes "青"
サンプルは「sample\misc\macro.hsp」にもございます。
|
|
2011/2/28(Mon) 10:06:51|NO.37295
v_str="よくわからないけど、文脈に関係なくOKとかNOとかの色が変わればOK?\n機械的にするとOklahomaとかNoteとか単語の一部も色が変わってしまいますがokですか?noですか?\nあと\n×わかりずらい(NO!)\n○わかりづらい(OK!)\n\nですよ。"
newcom oReg,"VBScript.RegExp"
comres result
oReg("IgnoreCase")= 1
oReg("Global")= 1
oReg("Pattern")= "(OK)"
oReg->"Replace" v_str,"<span style=\"color:red\">$1</span>"
v_str = result
oReg("Pattern")= "(NO)"
oReg->"Replace" v_str,"<span style=\"color:blue\">$1</span>"
v_str = result
oReg("Pattern")= "\n"
oReg->"Replace" v_str,"<br>\n"
delcom oReg
sdim v_str
v_str=result
axobj IE, "Shell.Explorer.2", ginfo(12), 300
IE->"Navigate" "about:blank"
pDocument = IE("Document")
pDocument->"Open"
pDocument->"Write" v_str
pDocument->"Close"
IEコンポーネントとVBの正規表現の組み合わせですが、やりたいことはこういうことですか?
mesでこういうことをするのは難しいと思いますよ…
|
|
2011/2/28(Mon) 10:22:20|NO.37296
↓とりあえず実行してみてください。
おそらく望みどおりの結果が返ってくると思います。
addWordとsuperMesという2つの命令をつくりました。
内容について理解できなければ、する必要はありません。
ただ、#moduleから#globalまでを、プログラムの適当な場所(一番上とか下とか)にコピーすれば、
addWordとsuperMesが使用できます。
//モジュール
#module
//単語追加
#deffunc addWord str In_Word, int In_R, int In_G, int In_B
if WordNum == 0 {
WordArray( WordNum ) = "\n"
WordR( WordNum ) = 0
WordG( WordNum ) = 0
WordB( WordNum ) = 0
WordNum ++
}
WordArray( WordNum ) = In_Word
WordR( WordNum ) = In_R
WordG( WordNum ) = In_G
WordB( WordNum ) = In_B
WordNum ++
return
//表示
#deffunc superMes str In_Mes
MesWord = In_Mes
MesNum = 0
MesIndex = 0
sdim MesArray
dim MesR
dim MesG
dim MesB
notesel MesWord
repeat
MesResult = -1
MesNew = strlen( MesWord ) + 1
MesNo = -1
repeat WordNum
MesResult = instr( MesWord, MesIndex, WordArray( cnt ) )
if MesResult != -1 {
if MesResult < MesNew {
MesNew = MesResult
MesNo = cnt
}
}
loop
MesArray( MesNum ) = strmid( MesWord, MesIndex, MesNew )
MesR( MesNum ) = 0
MesG( MesNum ) = 0
MesB( MesNum ) = 0
MesIndex += strlen( MesArray( MesNum ) )
MesNum ++
if MesNo != -1 {
MesArray( MesNum ) = strmid( MesWord, MesIndex, strlen( WordArray( MesNo ) ) )
MesR( MesNum ) = WordR( MesNo )
MesG( MesNum ) = WordG( MesNo )
MesB( MesNum ) = WordB( MesNo )
MesIndex += strlen( MesArray( MesNum ) )
MesNum ++
} else {
break
}
await 1
loop
noteunsel
StartX = ginfo_cx
StartY = ginfo_cy
DrawX = StartX
DrawY = StartY
repeat MesNum
if MesArray( cnt ) != "" {
pos DrawX, DrawY
color MesR( cnt ), MesG( cnt ), MesB( cnt )
mes MesArray( cnt )
if MesArray( cnt ) == "\n" {
DrawX = StartX
DrawY += ginfo_mesy
} else : DrawX += ginfo_mesx
}
loop
return
#global
//サンプル
addWord "赤", 255, 0, 0
addWord "緑", 0, 255, 0
addWord "青", 0, 0, 255
addWord "タ", 255, 0, 0
addWord "ト", 255, 255, 0
addWord "バ", 0, 255, 0
superMes "赤い文字や青い文字、\n改行して緑の文字までも出力できます。"
pos 50, 50
superMes "pos命令で場所を指定することもできます。"
pos 100, 100
Var = "タ!ト!バ!!"
superMes Var + "のように、変数も問題なく表示できます。"
//命令説明
;addWord 文字列, R, G, B
;文字列に対応する色を設定します。
;superMes 文字列
;mes命令とまったく同じように使え、addWordで設定した色が反映されます。

| |
|
2011/3/1(Tue) 12:17:09|NO.37311
×「わかりずらい」
◯「わかりづらい」
|
|
2011/3/1(Tue) 21:29:25|NO.37320
回答なさってくれた皆さんありがとうございます。
おかげで何とかなりそうです。
ありがとうございました。
-----------------------------------------------
「わかりづらい」でしたか。。。
日本語って難しいですねww
|
|