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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0511
DoubleQuotehspの標準命令dialogの横幅について3未解決


DoubleQuote

リンク

2017/5/11(Thu) 20:37:36|NO.79680

hsp標準のdialogは横幅固定でしょうか?

msg = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" msg += "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n" msg += "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc\n" dialog msg end
このようなプログラムを実行すると、5行に別れてしまい非常に見づらい状態となってしまいます。
出来れば3行で納めたいのですが、そういう横幅の指定や、この文字を入れると横幅が確保されるよ
などという情報ありましたら、是非とも教えてください、よろしくお願いいたします。



この記事に返信する


いののて

リンク

2017/5/11(Thu) 21:15:10|NO.79683

Windows XP以前は文字列の横幅に応じてダイアログの幅も変わっていたのですが、
Windows Vista以降になると、横幅が長すぎると自動改行されるようになりました。
システム依存なので自作ダイアログを作るしかないようです。



inovia

リンク

2017/5/11(Thu) 21:23:42|NO.79684

TaskDialog系の関数を使用すれば、横幅指定ができるので実現できますね。
モジュールはこちら → http://hsp.moe/#taskdialog

↓のような感じになります。
http://hsp.moe/images/taskdialog2.png


#include "modTaskDialog.as" // ココの変数を 0 にすることで オールドスタイルになります。 dwFlags@mtd = 0 // また TDF_ALLOW_DIALOG_CANCELLATION を指定すると キャンセルが可能になります。 dwFlags@mtd = TDF_ALLOW_DIALOG_CANCELLATION // 横幅指定(0の場合は自動調整) cxWidth@mtd = 250 // 選択肢はいくつでも増やせます。選択IDの初期値は 101 になっています。 // 必要ない項目は "" にすることで非表示になります。以下は フッターを非表示にしています。 msg = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" msg += "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n" msg += "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc\n" DialogVistaEx "タイトル", "", msg, "", "OK(&O)", 3, 4 // 選択肢判断 switch stat case 101 : mes "OKが選択されました" : swbreak case 2 : mes "×ボタンが押されました" : swbreak default : mes "想定外の選択" : swbreak swend stop



DoubleQuote

リンク

2017/5/12(Fri) 22:03:38|NO.79712

いののて さま inovia さま 返信ありがとうございます。


inovia様、サンプルありがとうございます。
早速動作確認してみました。一つ追加質問させてください。このスクリプトの中で


// 横幅指定(0の場合は自動調整) cxWidth@mtd = 250

この数字によって横幅が決定されると思うのですが、この250という数値の単位は何でしょうか?
ピクセルでしょうか?それとも、パーセントでしょうか。自分の環境では、950位が画面横幅フルのようです。

この場合、文字列が決まってる場合は、250と、目視で決定できますが、毎回文字列が違う場合、目視で決める
事が出来ません。0にしても、文字列最後が...となってしまい省略されてしまいました。

そうなると、

#include "modTaskDialog.as" // ココの変数を 0 にすることで オールドスタイルになります。 dwFlags@mtd = 1 // また TDF_ALLOW_DIALOG_CANCELLATION を指定すると キャンセルが可能になります。 dwFlags@mtd = TDF_ALLOW_DIALOG_CANCELLATION // 選択肢はいくつでも増やせます。選択IDの初期値は 101 になっています。 // 必要ない項目は "" にすることで非表示になります。以下は フッターを非表示にしています。 msg = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" msg += "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n" msg += "cccccccccccccccccccccccccccccccccccccccccccccccccccccccc\n" #define ctype maxf(%1,%2) (%1>=%2)*%1+(%1<%2)*%2 // 比較して大きい方を返す sysfont 17 notesel msg repeat notemax noteget moji,cnt mes moji x_max = maxf(x_max,ginfo_mesx) // 横幅の最大値[dot]を算出 loop // 横幅指定(0の場合は自動調整) cxWidth@mtd = x_max DialogVistaEx "タイトル", "", msg, "", "OK(&O)", 3, 4 end
このようにして文字のピクセルサイズから、横幅を決定できないでしょうか?
また、ここに表示される文字は、sysfont 17で指定してOKでしょうか?

ご確認よろしくお願い致します。



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