━┯━━━━━━━━━━━━━━━━━━━━━━━ 2000/07/29 (Sat) ━┯━
│ Weekly QX 第 17 号 発行部数: 645 部 │
│ あなたも便利に電脳ライフ [mail] mailto:qx@21.fm │
│ [特集:常駐リスト大活用その7-2] [URL] http://www.21.fm/qx │
━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┷━
[TOPICS]
■ WeQX News
★特集:常駐リスト大活用7-2
■お知らせ
━■━━━━━━━━━━━━━━━━━━━━━ 対象:全ユーザー ━■━━━
■ WeQX News ■
━━━■━━━━━━━━━━━━━━━━━━━━━━━━━━━ itam ━■━
前回発行した後今回発行されるまでに、 News と筆者が判断したものを随時
掲載して行きます。場合によっては QX に無関係の News もありえます。
もちろん、 News と筆者が判断したものがまったく無い場合もあるかも知れ
ず、その場合は News はありません。
News のちょっと詳しい紹介は、 WeQX カプライト版でご覧下さい。場合に
よってはもっと詳しい紹介が、筆者の日記に記載されることもあります。
● 07/23 フォーラム始動
>http://0ban.com/forum/list.cgi
まだテスト段階ですが、 QX 以外のツールのサポート場所として使われ
そうなフォーラム掲示板が運用されています。管理は araken さんがして
います。書き込み練習用の掲示板もありますので、皆さん練習してみましょ
う。
たいていの場合、 News には URL が記載されていると思いますが、記載さ
れていない場合は、このコーナー内で詳細が記載されているか、表裏の QX-ML
で、詳細を確認することができると思います。
━★━━━━━━━━━━━━━━━━━━━━━━━ 対象:上級者 ━★━━━
★ 特集:常駐リスト大活用その7-2 ★
━━━★━━━━━━━━━━━━━━━━━━━━━━━━━━━ itam ━★━
◆今日の問いかけ
アウトラインとはや?
◆Q子さん、X子さん対談
Q子さん:「ユーザー定義一覧ってマクロ作るのが難しいってね?」
X子さん:「そうね。」
Q子さん:「でもアウトラインが表示できるの?」
X子さん:「そうね。」
Q子さん:「勉強してみるべき?」
X子さん:「さすがに。。。マクロは利用させてもらうのが一番でしょう。」
Q子さん:「やっぱりそっか。」
◆はじめに
常駐リストの機能紹介の最終回です。
今回は常駐リストのユーザ定義一覧を使ったマクロの作り方を特集します。
基本的なルールさえ分かれば、あとは普通のマクロの作製とあまり違いはあり
ません。
すごい難しい、と思った方は読み飛ばして、来週の発行を楽しみにしていた
だけるとうれしいです。 QX を使う上で絶対に必要な機能なわけではありませ
ん。また今回はかなり長くなると思います。ご容赦下さい。
例によって QX の 6.3 より前のバージョンをお使いの方は、場合よっては
記載と違う動作をする箇所があるかもしれません。できれば v6.3 以降をお使
い下さい。
●アウトラインというもの ( 対象:中級者以上 )
まず、アウトラインというものについて、まとめておきましょう。
簡単にアウトラインというものを知るために日経 BP の Find'X で検索して
みました。
□日経 BP Find'X 用語の検索
>http://findx.nikkeibp.co.jp/static/yogo.html
◇アウトライン機能 outline
文書やプレゼンテーションを作成する際に、骨格を作り上げ、肉付けし
ていく作業を効率良く行うための機能。ワープロ・ソフトやプレゼンテー
ション・ソフトの多くがこの機能を備えている。プレゼンテーションの場
合なら、アウトライン機能を使って、プレゼンテーション全体のおおまか
な流れを決めてから、細部を作り込む。
アウトライン機能を中心に開発された、アウトライン・プロセッサやア
イデア・プロセッサと呼ばれる専用ソフトもあるが、日本ではあまり普及
していない。
◇アイデア・プロセッサ idea processor
知的生産を支援するソフト。企画書などを作成する際は、まず全体の構
成を書き出し、段落を階層化したり、入れ替えたり、追加・削除を行いな
がら、まとめる方が効率的である。ワープロ・ソフトやプレゼンテーショ
ン・ソフトにはこの機能が用意されているものが多く、日本では専用ソフ
トはあまり使われていない。
筆者もレポートをまとめるときなどの、全体の構成を考える必要がある場合
に利用しています。
しかし、 QX 自体にはアウトライン機能はまだなく、多くのアイデアプロセッ
サはアウトライン機能については、良くできていても編集部分については、
QX に及ばないものが多いです。逆にアウトライン機能を搭載したエディタも
あり、そちらを利用されている方も少なくないと思います。
どんな場合にしてもそうなのですが、考えをまとめる必要があるときや、考
えていることが自分自身でも良く分からないときには、アウトライン機能のよ
うに構成を抜き出すとうまく考えをまとめることができます。
よく、「紙に書くと考えがまとまる」や「メモを取ると忘れない」という話
がありますが、前者は紙に書くという動作を通して ( 全てを書き込むと非常
に冗長なので ) アウトラインとしてまとめるという作業をしているはずで、
後者はアウトラインとしてまとまったものの理解はしやすく、理解したものは
忘れにくいという関連があります。
さて、アウトラインが構成をまとめるものだという、共通の認識を得たとし
ましょう。すると、「見出し一覧」が主に構成をまとめるものになっていると
思います。さて、では「『見出し一覧』で良いじゃないか」と思われるかもし
れないのですが、「見出し一覧」は残念ながら階層化していないのですね。
今回の特集では、見出し一覧を階層化させ、アウトライン表示させることが
目的です。
★ユーザ定義一覧マクロことはじめ ( 対象:上級者 )
ユーザ定義一覧をマクロで利用するためには、いくつかのポイントがありま
す。列挙してみましょう。
◇ユーザ定義一覧の表示
◇表示の修正
◇マクロの登録
◇マクロの実行
この中で一番重要なのはマクロの登録の部分です。ユーザはこれらをまった
く意識する必要はありませんが、マクロ作者としてはこれらに気をつけてマク
ロを作らなければ行けません。
まずユーザ定義一覧の表示です。
もちろん、常駐リストを右クリックして「ユーザ定義一覧」を選択すると、
ユーザ定義一覧を表示させることができるのですが、これではアウトラインが
表示されません。前回にユーザ定義一覧をマクロで表示させたときの一覧が記
載されていることと思います。
しかしこれではいつまでたっても新しい一覧が表示できなくなってしまいま
す。ということで、自分で一覧を作りましょう。
上級者向けですので、基本的なマクロの作り方などの記載はしません。
ユーザ定義一覧で、一覧を定義するための最低限の記述は以下のようになり
ます。
proc main
@@ToolListUserDef "ユーザ定義一覧のテスト", "", "", ""
end proc
実行してみると、常駐リストに「一覧の名前」と書かれたラベルが上に付き、
1 つも項目のない一覧になるかと思います。ユーザ定義一覧のマクロは、すべ
からくここからスタートします。
ここで "ユーザ定義一覧のテスト" はこのユーザ定義一覧の名前になってい
て、名前が共通の場合は別のマクロを使ったとしても、同じリストを利用する
ことができます。ここでは練習用に上記のような名前にして見ました。
今回はアウトライン表示を目的としていますので、アウトライン用の表示に
変更しましょう。ユーザ定義一覧では、名前は変更できませんが、表示文字列
は変更できます。 ( 名前を変更するということは新しく一覧を作るというこ
とを意味します。 )
proc main
@@ToolListUserDef "ユーザ定義一覧のテスト", "", "", ""
@@ToolListUserDefTitle$="アウトライン"
end proc
後ろの 3 つの "" は別途に説明しますので、とりあえず今はこのままにし
ておきましょう。
★マクロでリストの操作 ( 対象:上級者 )
次にアウトラインの項目を追加しましょう。
「見出し」をアウトラインの項目として取り出しますので、まずは項目を取
り出せる見出し一覧を表示しなくてはいけません。マクロステートメントのそ
れぞれの意味はヘルプで確認してください。
' 見出しをその他の一覧に表示
@@ToolListType=4
@@ListResetCache
@@ListAutoClose=TRUE
@ListCaption
次にその他の一覧に表示させれた項目を、ユーザ定義一覧にコピーしなくて
はいけません。
ところで、ユーザ定義一覧は実はその一覧ごとに、保存してあります。では
どこに保存してあるのでしょうか?
実は QX のフォルダの中の QXTL- 〜〜〜〜 .LST というファイルに保存さ
れています。ですから今回は、
QXTL-ユーザ定義一覧のテスト.LST
というファイルに見出しを保存してみましょう。
まず、保存するファイルを開きます。
dim fn
fn=freefile()
open @@QxDirectory$+"\QXTL-ユーザ定義一覧のテスト.LST" _
for output as #fn
次にリスト情報を書き込みます。最初のうちはおまじないだと思ってもかま
わないでしょう。詳しく知りたい方は、 WindowsAPI で LB_SETTABSTOPS を調
べてください。
print #fn, "tab=0 80"
print #fn, "*"
次は、常駐リストから項目を取り出します。ここは DLL を使います。見出
しの数だけ繰り返しますので、 for 文 を使いましょう。見出しがまったくな
い可能性もありますので、その場合も考慮に入れて if 文も使います。
dllname USER
cdeclare long SendMessage(HWND, long, long, long)
dim x$ as string[10000], i
if SendMessage(@@hwndToolListL, &h018B, 0, 0)>1 then
for i=1 to SendMessage(@@hwndToolListL, &h018B, 0, 0)-1
SendMessage(@@hwndToolListL, &h0189, i, varptr(x$))
print #fn, x$ ' ※ あとで変更するのは主にここ!
next
end if
さて、上記で QX のヘルプに記載のない部分を説明しましょう。
> SendMessage(@@hwndToolListL, &h018B, 0, 0)
これはその他の一覧の項目数を返してきます。ここではその他の一覧の先頭
にファイル名が常に入っているために、「見出しの数 +1 」が常に返ってきま
す。このため
if 文では 1 より大きい場合としました。
for 文では「 1 」からスタートで「項目数 -1 」が終了です。
となります。
> SendMessage(@@hwndToolListL, &h0189, i, varptr(x$))
これはおまじないのように、まるまるマネをして書いたほうが良いですが、
その他の一覧から「 i 」番目の項目を「 x$ 」に代入するというステートメ
ントです。
> print #fn, x$ ' ※ あとで変更するのは主にここ!
これは後で修正しますが、見出し一覧の項目をそのまま保存するファイルに
書き出すというステートメントですね。
書き出したら保存するファイルを閉じましょう。
close #fn
ここまでをとりあえず、マクロにして見ましょう。
----^ test.mac ----8<----8<----8<---- BEGIN ----8<----<< cut here
proc main
@@ToolListType=4
@@ListResetCache
@@ListAutoClose=TRUE
@ListCaption
dim fn
fn=freefile()
open @@QxDirectory$+"\QXTL-ユーザ定義一覧のテスト.LST" _
for output as #fn
print #fn, "tab=0 80"
print #fn, "*"
dllname USER
cdeclare long SendMessage(HWND, long, long, long)
dim x$ as string[10000], i
if SendMessage(@@hwndToolListL, &h018B, 0, 0)>1 then
for i=1 to SendMessage(@@hwndToolListL, &h018B, 0, 0)-1
SendMessage(@@hwndToolListL, &h0189, i, varptr(x$))
print #fn, x$ ' ※ あとで変更するのは主にここ!
next
end if
close #fn
@@ToolListUserDef "ユーザ定義一覧のテスト", "", "", ""
@@ToolListUserDefTitle$="アウトライン"
end proc
----$ test.mac ----8<----8<----8<---- END ----8<----<< cut here
これだけなら以前紹介した、見出し一覧を常駐リストに表示させるものとほ
とんどかわりありませんね。ので、アウトライン用にツリー表示できるように
改造しましょう。さすがに改造過程は冗長になってしまうので、改造後のもの
を書いてみましょう。
----^ test.mac ----8<----8<----8<---- BEGIN ----8<----<< cut here
proc main
@@ToolListType=4
@@ListResetCache
@@ListAutoClose=TRUE
@ListCaption
dim fn
fn=freefile()
open @@QxDirectory$+"\QXTL-ユーザ定義一覧のテスト.LST" _
for output as #fn
print #fn, "tab=0 80"
print #fn, "*"
dllname USER
cdeclare long SendMessage(HWND, long, long, long)
dim x$ as string[10000], y$ as string[10000], x, y
dim i, j, c
c=SendMessage(@@hwndToolListL, &h018B, 0, 0)
if c>2 then
SendMessage(@@hwndToolListL, &h0189, 1, varptr(x$))
x$=mid$(x$, instr(x$, ":")+1)
for j=1 to 10
if @Caption$(j)<>"" then
if @Caption$(j)=left$(x$, len(@Caption$(j))) then
x=j
exit for
end if
end if
next
for i=2 to c-1
SendMessage(@@hwndToolListL, &h0189, i, varptr(y$))
y$=mid$(y$, instr(y$, ":")+1)
for j=1 to 10
if @Caption$(j)<>"" then
if @Caption$(j)=left$(y$, len(@Caption$(j))) then
y=j
exit for
end if
end if
next
if x=y then
print #fn, space$((x-1)*2)+"├─"+x$
elseif x>y then
print #fn, space$((x-1)*2)+"└─"+x$
else
print #fn, space$((x-1)*2)+"└┬"+x$
end if
x$=y$
x=y
next
print #fn, space$((y-1)*2)+"└─"+y$
elseif c=2 then
SendMessage(@@hwndToolListL, &h0189, 1, varptr(x$))
print #fn, mid$(x$, instr(x$, ":")+1)
end if
close #fn
@@ToolListUserDef "ユーザ定義一覧のテスト", "", "", ""
@@ToolListUserDefTitle$="アウトライン"
end proc
----$ test.mac ----8<----8<----8<---- END ----8<----<< cut here
★マクロでメニュー ( 対象:上級者 )
さて上記のマクロでは、ツリー化された見出しが一覧として表示されている
だけですね。実際にアウトラインマクロとして利用するためには、最低限以下
の 3 つのマクロを作る必要があるでしょう。
◇一覧を右クリックしたときのマクロ
◇一覧を左ダブルクリックしたときのマクロ
◇一覧を左クリックしたときのマクロ
それぞれのマクロは別のマクロファイルでも良く、 @@ToolListUserDef で
指定します。一般的には下記のように書いて指定することが多いでしょう。
@@ToolListUserDef "ユーザ定義一覧のテスト", _
macrofilename$+",RClick", _
macrofilename$+",DblClick", _
macrofilename$+",Click"
もちろん RClick や DblClick 、 Click はそれぞれプロシージャであり、
このマクロにはなくてはならないことになります。
特に右クリックのプロシージャは重要で、メニューを表示させるマクロを記
載しておかないと実用にはならないでしょう。
◆終わりに
今回はかなりハイレベルになりましたが、常駐リストのユーザ定義一覧のマ
クロの作り方の特集でした。実際にアウトラインとして動作させることは、無
理にしてもそのさわりだけなら紹介できたのではないかと思います。
━■━━━━━━━━━━━━━━━━━━━━━ 対象:全ユーザー ━■━━━
■ お知らせ ■
━━━■━━━━━━━━━━━━━━━━━━━━━━━━━━━ itam ━■━
[まぐまぐ・ Pubzine 次号予告]
◆メモ機能
■お知らせ
[カプライト次号予告]
■ 2000/07/29 〜 2000/08/04 の ML 日記
■お知らせ
[ WeQX お休みのお知らせ]
まぐまぐサーバダウンにつき、 8/12 発行予定の WeQX まぐまぐ・ Pubzine
版をお休みさせていただきます。カプライト版は発行する予定です。
また、私用により 8/26 発行予定の WeQX まぐまぐ・ Pubzine ・カプライ
ト版をお休みさせていただく予定です。
[サイトリニューアル中]
現在、 WeQX のトップページをリニューアル中です。リニューアルが終了し
たときにまた告知しますが、ネットスケープナビゲータ 4.x ではアクセスし
ないで下さい。ネットスケープナビゲータ 4.x では強制終了されることがあ
ります。
□リニューアル中の WeQX トップページ URL
>http://www.0ban.com/itam/mm/frames.html
また、リニューアル後のページはすべて、画面サイズが SVGA(800x600) 以
上を想定するつもりです。画面サイズが VGA(640x480) で恒常的にアクセスさ
れる方が、いらっしゃったら連絡を下さい。人数が多かったら、 VGA でも横
スクロールバーが表示されないようにします。
[ メール ] mailto:qx@21.fm
[ タイトル ] 画面サイズ 640x480
[ 中身 ] 何も書かなくてかまいません。
[特集・企画募集]
Weekly QX では特集・企画募集を行っています。特集してほしいことや面白
い企画を思いついたら下記 URL で登録していただけるとうれしいです。
[ 企画募集 URL ] http://0ban.com/itam/mm/kikaku.cgi
[ 企画メール ] mailto:qx@21.fm
題名は " 【企画】 " ではじめて下さい。
同時にライターも募集しています。この特集・企画では是非書きたい、言い
たいことがあるという方は、上記メールアドレスにメールを下さい。
[解説マクロ募集]
Weekly QX では解説してほしいマクロを募集しています。マクロヘルプを読
んだが分からない、解読してみたいマクロがあるなどありましたら、下記 URL
で登録頂くか、下記メールアドレスまでメールを下さい。
[ 解説登録 URL ] http://0ban.com/itam/mm/explmac.cgi
[ 解説メール ] mailto:qx@21.fm
題名は " 【解説】 " ではじめて下さい。
[ FAQ & TIPS 募集]
Weekly QX では紹介してほしい FAQ & TIPS を募集しています。分かりそう
で分からないこと、有用な情報などがありましたら、下記 URL で登録頂くか、
下記メールアドレスまでメールを下さい。
[ FAQ 登録 URL ] http://0ban.com/itam/mm/faq.cgi
[ FAQ メール ] mailto:qx@21.fm
題名は " 【 FAQ 】 " ではじめて下さい。
[ TIPS 登録 URL ] http://0ban.com/itam/mm/tips.cgi
[ TIPS メール ] mailto:qx@21.fm
題名は " 【 TIPS 】 " ではじめて下さい。
[ミス・誤植・感想・投稿募集]
Weekly QX ではミスや誤植の指摘、読んだ感想や投稿を歓迎します。またさ
さいなことでも、上記に含まれないようなことでも、かまいませんので連絡を
頂けると幸いです。
また投稿の場合、掲載する可能性があります。掲載の可否、掲載時のハンド
ル名を同じに記載しておいて下さい。
[ ミス・誤植メール ] mailto:qx@21.fm
題名は " 【ミス】 " ではじめて下さい。
[ 感想メール ] mailto:qx@21.fm
題名は " 【感想】 " ではじめて下さい。
[ 投稿メール ] mailto:qx@21.fm
題名は " 【投稿】 " ではじめて下さい。
[ URL 紹介募集]
Weekly QX では読者リンクを作りたいと考えています。読者の方でホームペー
ジをおもちの方は、下記 URL で登録頂くか、下記メールアドレスまで簡単な
解説文といっしょにメールを下さい。 (CGI は工事中です。 )
[ 読者リンク URL ] http://0ban.com/itam/mm/link.cgi
[ 読者リンクメール ] mailto:qx@21.fm
題名は " 【リンク】 " ではじめて下さい。
━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┯━
│ マガジン名: Weekly QX 発 行 日: 2000/07/29 (Sat) │
│ 発行責任者: itam 発 行 部数: 645 部 │
│ 問い合わせ: mailto:qx@21.fm 発行号番号: 17 │
│ WeQX 公式ホームページ : http://www.21.fm/qx │
│ araken さんのホームページ: http://www2k.biglobe.ne.jp/~araken/ │
─┼─────────────────────────────────┼─
│ ◆配信内容のミスや質問については上記アドレスにメールを下さい。 │
│ ◆配信解除や配信先の変更は上記公式サイトより可能です。 │
│ ◆特に記載の無い限り転載・再利用については下記の通りとします。 │
│ ○個人の利用については自由。転載は要許可。 │
│ ※注)当メールにより生じる損害等について責任は負いません。 │
─┼─────────────────────────────────┼─
│ このメールマガジンは QX を使ってかかれています !! │
│ 発行にあたっては、 │
│ まぐまぐ版 http://www.mag2.com/ ID:0000029050 │
│ Pubzine 版 http://www.pubzine.com/ ID:5414 │
│ カプライト版 http://kapu.cplaza.ne.jp/ ID:335 │
│ を利用させて頂いています。 │
│ 「狛犬本」はこちら: http://takuki.tanu.net/edit.html │
━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┷━
━■━━━━━━━━━━━━━━━━━━━━━ 対象:全ユーザー ━■━━━
■ 編集後記 & 近況 ■
━━━■━━━━━━━━━━━━━━━━━━━━━━━━━━━ itam ━■━
[編集後記]
今回はマクロの話しばかりで、多くの読者は面白くなかったかもしれません。
筆者の得意分野はもっぱらマクロで、他の部分はあまり得意ではないですので、
いずれマクロ用の何かを作ろうとは思いますが、誰か基本機能の特集を書いて
くれる人いないかなぁ?
筆者が試験期間だったせいか?、 News は 1 つだけですね。
[近況]
先の金曜日に試験やレポートが終了しました!晴れて夏休みです。 ( 学生
の特権 ( 笑 ) )
水曜日から金曜日の夜中までまったく寝ていたなかったので、寝ていたので
配信が遅くなりました。
|