|
こんにちは。どみにかと申します。
未熟ながら、コメントつけさせていただきます。
> 1)選択範囲のみSubjectにする
> 2)行全体をSubjectにする
> 3)キャンセル
>と、いうダイアログが出てくるというイメージです。
ダイアログじゃないですが、こんなんでどうでしょ?
いちおう簡単な動作確認はしてます。
------------------------------
ProcMain:
call SubStart; // 開始処理
call SubGetString; // Subjectにセットする候補文字列の取得
if(##return<=0) call SubEnd; // 取得できなければ終了処理
call SubSelectSubject; // 選択範囲 or 行全体の選択処理
call SubSetSubject; // Subjectセット処理
call SubEnd; // 終了処理
endmacro;
SubStart:
#BROWSE = browsemode; // 閲覧モードの定義
if(#BROWSE) browsemodeswitch; // 閲覧モード切替
$SearchBuf = searchbuffer;
#SearchOpt = searchoption;
$Terget = "Subject:";
#StartX = x; #StartY = y;
$Selection = ""; $LineString = "";
$ErrMsg = "";
return;
SubEnd:
if($ErrMsg!="") message $ErrMsg;
moveto #StartX, #StartY;
if(#BROWSE) browsemodeswitch; // 閲覧モード切替
setsearch $SearchBuf, #SearchOpt;
endmacro;
return;
SubGetString:
if(selecting){
if(seltopy==selendy) { $Selection = gettext(seltopx, seltopy, selendx,
selendy); }
else { $ErrMsg = "BOX選択には対応していません。"; call
SubEnd; }
}
golineend;
$LineString = gettext(0, y, x, y);
moveto #StartX, #StartY;
return strlen($Selection + $LineString);
SubSelectSubject:
if($Selection=="") { menu "行全体をSubjectにする", "キャンセル";
if(result==0 || result==2) { call SubEnd;
}
else { $NewSubject = $LineStr
ing; }}
else { menu "選択文字をSubjectにする", "行全体をSubjectにす
る", "キャンセル";
if(result==0 || result==3) { call SubEnd;
}
else if(result==1) { $NewSubject = $Selecti
on; }
else { $NewSubject = $LineStr
ing; }}
return;
SubSetSubject:
moveto 0, -999;
searchdown $Terget;
golineend; beginsel; golinetop;
insert $NewSubject;
escape; endsel;
return;
-------------------------------
DLLを使わない方向で考えてみたんですが、やっぱダイアログがいいですかね?
BOX選択はとりあえずエラー扱いしてます。
どうでしょ・・・σ(^_^;)
|
|