[あすかぜ・ねっと]あすかぜ・ねっと自作ソフトCassava > サポート掲示板

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[173] 複数行列の幅設定

茶々玉 [2010/01/26 21:24:03]

お世話になっております。
質問ですが、複数行列を一度に幅設定をすることはできないのでしょうか?

Re: [173] 複数行列の幅設定

あすかぜ [2010/01/26 22:37:29]

固定セルを Shift + クリックするか、オプションの「動作」で固定セルドラッグ時を「複数行・列選択」にすれば、複数列を選択できます。
複数列選択した状態で幅を変更すれば、選択中の全ての列が同じ割合で伸縮します(境界線ダブルクリック時は全列幅を最適化)。
複数列を同じ幅に揃えたい場合にはマクロを書く必要があります。
行に関しても同様です。

これで答えになっているでしょうか?

Re: [173] 複数行列の幅設定

茶々玉 [2010/02/08 20:53:13]

すぐにお答えいただいてありがとうございました。お礼が遅くなり申し訳ありません。

一つ目の方法は、初めて気づきました。ありがとうございます。
ですが、できるだけマウスを触らず、特定の範囲の列の幅変更をしたいとしたら、マクロの利用ということになるかと思いますが、どのように記述したらよいでしょうか。
自分で思いつく範囲では、SetColWidth(x,w);を使うことになるのかと思うのですが、この場合に、xにその時点で選択されていた列全体を変数として代入することはできるのでしょうか。

Re: [173] 複数行列の幅設定

あすかぜ [2010/02/08 22:10:53]

はい。SetColWidth(x,w); を使います。
選択されていた列は特殊変数 SelLeft と SelRight で取れますので、
それを元にループを回すことになります。

for(i=SelLeft; i<=SelRight; i++) {
 SetColWidth(i, 100);
}

という感じです。
固定値を設定するなら「100」部分を好きな値にするだけで OK です。

Re: [173] 複数行列の幅設定

茶々玉 [2010/02/10 18:20:07]

わかりました!ありがとうございます。

w = InputBox("列の幅は?");
for(i=SelLeft; i<=SelRight; i++) {
 SetColWidth(i, w);
}

とやれば、その都度任意に設定できるのですね。

Re: [173] 複数行列の幅設定

茶々玉 [2010/02/10 19:09:48]

すみません、もうひとつお聞きしたいのですが、
列をクリックで選んで右クリックした場合に選択可能となる、「幅を狭くする」は、数値としてはいくつに設定されているのでしょうか?
また、「標準の幅にする」は、マクロで実現しようとする場合にはどのようにすればよいでしょうか。

Re: [173] 複数行列の幅設定

あすかぜ [2010/02/10 19:45:19]

「幅を狭くする」は 16 px となっています(行の高さの場合は 8 px)。

「標準の幅にする」は、、、そういえばマクロから実行できません。すみません。

Refresh(); を実行すれば全ての列が標準の幅になるので、
無理やり実現するとすれば

1. GetColWidth() で変更したくない列幅を取得しておく
2. Refresh() を実行
3. SetColWidth() で 1. の値を設定しなおす

のようなことをする必要があります。
Cassava マクロだと配列も使えないので、1. で値を取っておくのも小細工が必要ですが。。。

「標準の幅にする」については管理用に別スレッドを立てました。
http://www.asukaze.net/soft/cassava/bbs/index.cgi?t=176

Re: [173] 複数行列の幅設定

茶々玉 [2010/02/11 21:42:27]

なるほど、完全に理解できました。丁寧にありがとうございました。

スレッド一覧に戻る返信