討論區: 公開討議 (Thread #21466)

表示コンポーネントとして使用する際に気になるところ (2009-01-27 22:47 by iseebi #41503)

はじめまして。
伊勢 シンと申します。

Windows Mobile向けにずっとIRCクライアントを製作していまして、
ログ表示に使用できる有用なコンポーネントを探し求めていました。
ようやく使用できそうなコンポーネントを見つけて喜んでいます。

3点、疑問に思うところがありますので質問させていただきます。

●IsReadOnly プロパティを true に設定した際、プログラム側からも内容の変更ができなくなってしまいます。
 今のままでも変更するタイミングで IsReadOnly を解除するという実装をすれば対処は可能ですが、
 System.Windows.Forms.TextBox は ReadOnly に設定した際、
 編集不能になるのはユーザー入力のみになりますので、動作を合わせた方がよいかと思います。
●テキスト末尾から画面1枚分、下にスクロールできるようになっていますが、
 末尾に新しいデータが追加されてゆく、ログの表示目的として使用する場合はこの動作は邪魔になってしまいます。
 回避するプロパティ等はありますでしょうか。
●ハイパーリンクへの対応予定はありますでしょうか。

本来の目的であるテキスト編集から考えると少し方向性が違う内容ですので、
ライブラリの修正が必要であれば、今後対応する予定があるかどうかだけでもお聞かせいただければと思います。

今回は全体的な動作を見てみただけですので、今度ソースの方も拝見させていただきます。
よろしくお願いいたします。

回覆 #41503×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登入

RE: 表示コンポーネントとして使用する際に気になるところ (2009-01-31 18:42 by sgry #41575)

伊勢シンさん

はじめまして、山本です。
Azuki をご使用いただきありがとうございます。
大変返事が遅くなり申し訳ありません。

以下、ご質問にお答えします。

●読み取り専用モードでプログラム的にも内容変更が不可能

ご指摘の通り、IsReadOnly プロパティを true に設定するとプログラム的にも内容変更ができなくなります。これは現在の Azuki の「不本意な」仕様です(初期設計段階での想定不足)。私としても悪い仕様と思っていますので、動作変更する予定です。

●テキスト末尾より下へのスクロールを禁止する方法

うーん・・・これは完全に想定外でした。コードエディタを想定して設計したため行数=スクロール範囲となっており、これを変更するプロパティはありません。

IRC のログ表示を目的とされているのでしたら、メッセージのやりとりがあったタイミングで自動的に一番下へスクロールする、という制御かと思います。スクロールを禁止することはできませんが、AzukiControl.View からビューオブジェクトを取得すればそのような制御もできるはずです。具体的には、該当タイミングで次のような処理を行います。
----
int visibleLineCount;
IView view = azukiControl.View;

visibleLineCount
= view.VisibleSize.Height / view.LineSpacing;
view.FirstVisibleLine
= view.LineCount - visibleLineCount;
view.Invalidate();
----
実際に動かしたわけではないので若干不安ですが(苦笑)、お試しください。

●ハイパーリンクへの対応予定

これは "http://" で始まる文字列をハイライトして、ダブルクリックなどでその URL へジャンプする機能でしょうか。この機能でしたら将来的に対応しようと思っています。ただ、時期の見通しは立っていません。

よろしくお願いします。
回覆: #41503

回覆 #41575×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登入