「タブが「縦書き」モードかチェックする」の版間の差分
ナビゲーションに移動
検索に移動
<source>タグを<syntaxhighlight>タグに置き換え |
空行の除去 |
||
| (同じ利用者による、間の1版が非表示) | |||
| 1行目: | 1行目: | ||
<div class="warningbox">'''2019/07/06 記''' (sukemaru) | <div class="warningbox">'''2019/07/06 記''' (sukemaru) | ||
---- | ---- | ||
このページのマクロ(組み込み関数/サンプルコード)は、Mery | このページのマクロ(組み込み関数/サンプルコード)は、Mery Ver. '''2.6.5 - 2.7.5''' でしか使えません。<br>Mery '''2.7.6''' 以降では、タブが縦書きモードであるかどうかの状態を<br>マクロから取得することはできなくなりました。<br>[[#メモ|>> メモ欄を参照]] </div> | ||
== 組み込み関数 CheckVertical() == | == 組み込み関数 CheckVertical() == | ||
/** | /** | ||
* 組み込み関数 CheckVertical( objDocument ) | * 組み込み関数 CheckVertical( objDocument ) | ||
2024年9月9日 (月) 11:19時点における最新版
2019/07/06 記 (sukemaru)
このページのマクロ(組み込み関数/サンプルコード)は、Mery Ver. 2.6.5 - 2.7.5 でしか使えません。
Mery 2.7.6 以降では、タブが縦書きモードであるかどうかの状態を
マクロから取得することはできなくなりました。
>> メモ欄を参照
このページのマクロ(組み込み関数/サンプルコード)は、Mery Ver. 2.6.5 - 2.7.5 でしか使えません。
Mery 2.7.6 以降では、タブが縦書きモードであるかどうかの状態を
マクロから取得することはできなくなりました。
>> メモ欄を参照
組み込み関数 CheckVertical()[編集]
/** * 組み込み関数 CheckVertical( objDocument ) * 引数に与えられた Document オブジェクトが「縦書き」モードかチェックする * 戻り値は 真偽値 true / false */
function CheckVertical( objDocument ) {
var isViewVertical;
// Redraw = false;
var d = objDocument || document, s = d.selection;
var saved = d.Saved, readOnly = d.ReadOnly;
var sx = ScrollX, sy = ScrollY;
var act = s.GetActivePos(), anc = s.GetAnchorPos();
var ay = s.GetActivePointY( mePosView );
d.ReadOnly = false;
d.Write( "\n" ); s.CharRight();
var dy = s.GetActivePointY( mePosView );
if ( dy == ay ) { isVertical = true; Status = "縦書き"; }
else { isVertical = false; Status = "横書き"; }
d.Undo();
s.SetActivePos( act ); s.SetAnchorPos( anc );
ScrollX = sx; ScrollY = sy;
d.Saved = saved; d.ReadOnly = readOnly;
return isViewVertical;
}
使い方[編集]
例. 「ファイルを開いた時」のイベントマクロなどで、特定の条件で「縦書き」モードにする
① CheckVertical() 関数で、タブが「縦書き」モードかチェックする
var d = editor.ActiveDocument;
var isVertical = CheckVertical( d );
// var arlertStr = isVertical ? "縦書き" : "横書き";
// Alert( arlertStr );
② 条件にマッチしたら「縦書き」モードにする
※editor.ExecuteCommandByID( 2238 ) は「縦書き」の ON/OFF トグル切り替え機能であって「ON を指定する」ものではないので、「○○という条件に一致するタブが横書き表示だったときは → 縦書きに変更する」という書き方が必要になる
// 1. 編集モードが「青空文庫」なら「縦書き」モードにする
// 2.「小説」フォルダ配下の TXT ファイルなら「青空文庫」×「縦書き」モードにする
// ※「! isVertical」は「isVertical == false」と同義
var cond1 = ( d.Mode == "青空文庫" && ! isVertical );
var cond2 = ( d.FullName.match( /\\小説\\.*\.txt$/ ) && ! isVertical );
if ( cond1 ) {
editor.ExecuteCommandByID( MEID_VIEW_VERTICAL = 2238 ); // 縦書き
}
else if ( cond2 ) {
d.Mode == "青空文庫"; // 編集モードを変更
editor.ExecuteCommandByID( MEID_VIEW_VERTICAL = 2238 ); // 縦書き
// (おまけ) ウインドウの右端で折り返し
editor.ExecuteCommandByID( MEID_VIEW_WRAP_BY_WINDOW = 2148 );
}
メモ[編集]
Mery ベータ版 2.7.6 からマクロ機能の縦書きモード対応が部分的に仕様変更になった(縦書きモードのときの CharRight メソッドなどでのキャレットの移動方向が変更になった)ため、このページのマクロでは「タブが縦書きモードか」をチェックできなくなりました。
スポンサーリンク