~katsuhiko メッセージボード

back 851-900

901-950

951-1000


950 Re^2: PosToRowCol の逆ってあると思うんですけど。。。 コメント数:  1件
  本田勝彦   |  2001/01/09 (火) 23:31
 http://member.nifty.ne.jp/~katsuhiko
> Result := Point(LeftMargin + (ACol - TopCol) * ColWidth,
> TopMargin + (ARow - TopRow) * RowHeight);
>
> で、求めてね。。。ってーことですかぬ?

これで良いと思いますが、PosToRowCol のヘルプにも記述があるように、求めるのが
文字と文字の間なのか、文字の頭かによって変わりますので、その辺も考慮して頂け
ればと思います。



949 Re^2: カッコの対応のメソッドってありませんでしたっけ? コメント数:  0件
  本田勝彦   | 2001/01/09 (火) 23:27
 http://member.nifty.ne.jp/~katsuhiko
秀丸のように対応する括弧を見つけてくれる機能は残念ながら
ありません。作ってくださいね。ってもう出来ていらっしゃるようですが。



948 TEditor で描画を止めるには? コメント数:  2件
  DR-X   | 2001/01/09 (火) 19:54
 本田さん、こんにちは。
いつもお世話になります。DR-X です。

 さっそく質問なんですが、TEditorで描画を止める方法はないのでしょうか。

やりたいことは、SelStart と SelLength で選択しておいて、その内容を削除
したり編集したりするといったことですが、選択し、すぐに SelText に代入して
も、一瞬選択状態が表示されてしまいます。

 この描画を止められるようになるか、あるいはそもそも描画しないようになら
ないかなあと思います。描画したければ明示的にアップデートすればよいですし。

 では、このへんで失礼します。
最後になりましたが、今年も、よろしくお願いいたします。m(_ _)m


 



947 Re: カッコの対応のメソッドってありませんでしたっけ? コメント数:  1件
  かとちん   | 2001/01/06 (土) 05:13
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
> TEditor、Q&Aもザッと見たんですが、ちょっと見つかりませんでした。
> でもQ&Aにも出てないのだから私の探し方が甘いのかも。(^^;)>
No.498 の仮対応を行ったところ、うまく完成しました。(^-^)V
#全角かっこは使えぬのですけどね。

トークンの評価をしながらなのでエラい重かったりします。(^-^;
連続して単語単位に TokenStringBracketPos を呼んでいるのがまずい。
余裕が出たら自前で行単位にパーサーでサクサクっと取り込んで評価していくように
しなきゃ。



946 Re: PosToRowCol の逆ってあると思うんですけど。。。 コメント数:  2件
  かとちん   | 2001/01/06 (土) 05:06
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
んーーーー。もしかしてその都度、

Result := Point(LeftMargin + (ACol - TopCol) * ColWidth,
TopMargin + (ARow - TopRow) * RowHeight);

で、求めてね。。。ってーことですかぬ?
#まだ試してないけど、これでうまくいくかなぁー。
でも、RowColToPos なんて関数があると非常にありがたいなぁと思いましたとさ。



945 表示されていない領域の Token が取得できません コメント数:  5件
  かとちん   | 2001/01/06 (土) 02:56
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
TokenStringBracketIndex や、TokenBracketIndex や、その他もろもろの
関数が、Pos.X か、Pos.Y がマイナス値を示していると常に 空文字列や
EOF を返します。

...で追っていったら、どうやら ListInfoFromPos の「マージンの中か?」という
チェックではねられています。

// マージンの中
if (Pos.X < LeftMargin) or (Pos.Y < TopMargin) then
Exit;

これって、行や桁がスクロールして見えなくなっているだけなのだから、
以下のようにしてはまずいのでしょうか?

// マージンの中
if (TopCol * ColWidth + Pos.X < LeftMargin) or
(TopRow * RowHeight + Pos.Y < TopMargin) then
Exit;

このマージン内かのチェックはどこか別の処理で不具合になっちゃうのですか?
逆に表示エリアを超えても↓→の見えないエリアはちゃんと取得できるので
ちょっと中途半端かなぁという気がします。
やっとカッコの対応の処理が作成できたんですが、表示されているエリアか先方向
しか取れない。。。(T_T)



944 PosToRowCol の逆ってあると思うんですけど。。。 コメント数:  3件
  かとちん   | 2001/01/06 (土) 01:39
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
探したり無いのか見つかりません。大抵の Token, String 取得メソッドは、
Pos: TPoint が必要ですので、ある行のある桁から取得するために行・桁を、
X, Y座標に変換しなければならないのですが、うーん。。。見つかりません。(T_T)
それとも何とか計算で出すのかなぁ。。。。

初歩的な質問かもしれませんが、よろしくお願いします。m(_ _;)m



943 カッコの対応のメソッドってありませんでしたっけ? コメント数:  2件
  かとちん   | 2001/01/06 (土) 01:09
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
TEditor、Q&Aもザッと見たんですが、ちょっと見つかりませんでした。
でもQ&Aにも出てないのだから私の探し方が甘いのかも。(^^;)>




942 Re: 解決しました コメント数:  0件
  本田勝彦   | 2001/01/03 (水) 23:25
 http://member.nifty.ne.jp/~katsuhiko
> 各セクションを全て固有のブラケットとすることで解決しました。
> TEditor の使い方としては代わっているかもしれないけど、
> 今回のやり方は他にも応用が利きそうです。

解決されたようで良かったですね。

UpdateBrackets そうですね。確かに統一性が保たれていません。この辺も
含めて、パーサーまわりを考え中です。

過去の資産をある程度は捨て去る必用が出るかもしれませんが、より美しいモノを
目指しています。




941 解決しました コメント数:  1件
  かとちん   | 2001/01/03 (水) 16:50
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
各セクションを全て固有のブラケットとすることで解決しました。
TEditor の使い方としては代わっているかもしれないけど、
今回のやり方は他にも応用が利きそうです。



940 Re^2: パーサーの改造に悩んでいます。Part2 コメント数:  2件
  かとちん   | 2001/01/03 (水) 05:53
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
> これは行インデックスを受け取って扱えるコンストラクタを持った
> パーサーを派生させれば出来ると思います。

CreateWithLineIndex というコンストラクタを実装して、途中や末尾をコメントブロックとすることはできています。でもファイル先頭から切り替わるタイミングのキーワードまでのコメント化がうまくいきません。
先頭行だけはコンストラクタから FLintIndex という内部変数を用いることでうまくいったのですが、
TEditorScreenStrings.UpdateBrackets が、CreateWidthLineIndex なんてものは使うはずもないので、
Parser := TMyParser.CreateWithLineIndex(
LineStr, Self, ListBracket[Index], ListToken[Index], Index);
なんてことをしても、ListBracket[Index], ListToken[Index] は当然ながら
前行の状態を保持していないのです。よって2行目からは、ブラケット内にいると
いう認識を持てません。

自由に hedit.pas を改造すればよいことなのかも知れませんが、
現状までは、折角スマートな派生クラスだけで出来ているので、崩したくないのです。
#それは本当の最終手段にとっておいています。(^^;

もうちょっとうまい方法を考えていきたいと思います。



939 Re^2: パーサーの改造に悩んでいます。Part1 コメント数:  0件
  かとちん   | 2001/01/03 (水) 05:52
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
コメントありがとうございます。

一応ファイル内容としては以下のようなものを想定しています。

|最初にセクション開始コード([)が
|出現するまでは全てコメントとしなければならない
|[Start]
| この間は普通にトークン単位に色分けされる
|[End]
|終了セクションより後ろは全て
|コメントとしなければならない

> RightBracket, LeftBracket に同じモノを実行時に指定するとか?
これらは全て実行時に空文字を設定することで解決しています。
何とか、BracketProc,IsBracketProc を override して変更を加えたり、
他の各 XXXProc を override して何とかさせています。
セクション単位に異なるルールを適用させるために、Bracket に挟まれながらも
各トークンが識別される状態を実現することはできました。
(FBracketIndex によって各トークンProc でルールを変えつつも、FToken は
toAnk など個別の状態が保持されるという状態を実現)

***文字数制限により分割***コメントは Part2 の方へお願いします。



938 Re: override? コメント数:  0件
  本田勝彦   | 2001/01/02 (火) 17:07
 http://member.nifty.ne.jp/~katsuhiko
> FFontWidth等のprivate宣言してある変数にアクセス出来ません。
> どうすれば、引用出来るのでしょうか?

ありゃそうですね。(^^ゞ
FFontWidth = ColWidth なのでそちらを利用して下さい。



937 override? コメント数:  1件
  うらら   | 2001/01/02 (火) 09:17
毎度お世話になります。

バージョンアップの度にソースコードを変えるのが大変なために、いよいよ
拡張コンポを作ろうと、頑張っておりますが、基本的なとこで苦戦しております。

例えば、DrawRetMarkのoverrideしたプロシージャにおいて

procedure TEditorFx.DrawRetMark(X, Y: Integer);
begin
if (X >= LeftMargin) and Showing then
begin
X := X + FFontWidth div 2; <- NG
~~~~~~~~~~
Y := Y + 6;
with Canvas do
.
.
.
end;

FFontWidth等のprivate宣言してある変数にアクセス出来ません。
どうすれば、引用出来るのでしょうか?

新年早々基本的であほな質問ですが、Delphi初心者にお教え下さいませ。



936 Re: パーサーの改造に悩んでいます。 コメント数:  4件
  本田勝彦   | 2001/01/02 (火) 00:24
 http://member.nifty.ne.jp/~katsuhiko
> ドキュメントの中で、あるキーワードが出現するまでは、
> コメント扱い(開始の括りがないブラケット扱い)にし、
> あるキーワードが出現した後は、ドキュメントの最後まで
> コメント扱いにする(終了の括りがないブラケット扱い)といった場合の
> パーサーがうまく作れません。

RightBracket, LeftBracket に同じモノを実行時に指定するとか?

> パーサー自体はエディタの行インデックスを知るすべがないので、

これは行インデックスを受け取って扱えるコンストラクタを持った
パーサーを派生させれば出来ると思います。

実現されたい機能を、もう少し具体的に書いて頂けると、
アイデアを出せるかもしれません(^^;



935 パーサーの改造に悩んでいます。 コメント数:  5件
  かとちん   | 2001/01/01 (月) 23:34
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
ドキュメントの中で、あるキーワードが出現するまでは、
コメント扱い(開始の括りがないブラケット扱い)にし、
あるキーワードが出現した後は、ドキュメントの最後まで
コメント扱いにする(終了の括りがないブラケット扱い)といった場合の
パーサーがうまく作れません。

パーサー自体はエディタの行インデックスを知るすべがないので、
ブラケットの方を改造しなければならないのかなぁと思うのですが、
派生させてとなるとちょっと厳しいようですね。

サクッと解決するうまい方法はないものでしょうか。



934 Re^4: Font.Charsetによる文字コード対応について コメント数:  0件
  本田勝彦   | 2000/12/31 (日) 23:49
 http://member.nifty.ne.jp/~katsuhiko
> > // 半角文字 //$20..$7E,$A1..$DF : -->$20..$7E,$A0..$FF に変えてみまし>たWMImeCompositionもみてみます。
>
> WMImeCompositionは発生していませんでした。
> 表示の方はできるので、現在のTEditorで満足しております。

よかったですね。これだけの変更で良い結果を得られるので有れば
次のバージョンで対応したいと思います。
情報ありがとうございました。



933 Re^3: Font.Charsetによる文字コード対応について コメント数:  1件
  Atsushi Fukuda   | 2000/12/31 (日) 06:37
> > WMChar もそうですが、WMImeCompositionも見てやって下さい。
> // 半角文字 //$20..$7E,$A1..$DF : -->$20..$7E,$A0..$FF に変えてみまし>たWMImeCompositionもみてみます。

WMImeCompositionは発生していませんでした。
表示の方はできるので、現在のTEditorで満足しております。

本田様には、早速の返信ありがとうございました。





932 Re^2: Font.Charsetによる文字コード対応について コメント数:  2件
  Atsushi Fukuda   | 2000/12/31 (日) 06:12
> 多言語対応の概念について情報へのポインタなど教えて頂けませんで
> しょうか?
Iso8859-2の文字を入力する時、Win2kでは、入力ロケールを切り替えて、
Fontを対応したもの(Courier Newなどで、EASTEUROPE_CHARSET )に設定した
TMemoなどでは、入力できると思っているのですが。
> WMChar もそうですが、WMImeCompositionも見てやって下さい。
// 半角文字 //$20..$7E,$A1..$DF : -->$20..$7E,$A0..$FF に変えてみましたWMImeCompositionもみてみます。




931 TEditor 2.02 コメント数:  0件
  本田勝彦   | 2000/12/31 (日) 03:21
 http://member.nifty.ne.jp/~katsuhiko
を公開しました。掲示板でご指摘頂いた不具合を修正したバージョンになります。
今世紀最後の TEditor です。

もう少し進化する予定でおりますので、21世紀もよろしく
お願い申しあげます。



930 Re: Font.Charsetによる文字コード対応について コメント数:  3件
  本田勝彦   | 2000/12/31 (日) 03:17
 http://member.nifty.ne.jp/~katsuhiko
> はじめましてFukudaです。高機能なエディタありがとうございます。
> 早速ですが、要望です。既出でしたらすいません。
> TMemoとかTRichEditでは、Font.CharsetとFont.Nameを適切に設定すると
> Iso8859-1,Iso8859-2などの多言語に対応することができますが、
> TEditorに限らず秀丸などのエディタでは、Win2k環境での多言語入力に対応して
> いないようなのですが、TEditor.WMCharを少しいじってみたのですが、うまく入力できません。
> 現在、メーラー用に使用させて頂いておりますが、表示はOKなのですが、
> 入力ができません。

すんません。多言語対応の概念について情報へのポインタなど教えて頂けませんで
しょうか?
WMChar もそうですが、WMImeComposition も見てやって下さい。



929 Font.Charsetによる文字コード対応について コメント数:  4件
  Atsushi Fukuda   | 2000/12/31 (日) 00:36
はじめましてFukudaです。高機能なエディタありがとうございます。
早速ですが、要望です。既出でしたらすいません。
TMemoとかTRichEditでは、Font.CharsetとFont.Nameを適切に設定すると
Iso8859-1,Iso8859-2などの多言語に対応することができますが、
TEditorに限らず秀丸などのエディタでは、Win2k環境での多言語入力に対応して
いないようなのですが、TEditor.WMCharを少しいじってみたのですが、うまく入力できません。
現在、メーラー用に使用させて頂いておりますが、表示はOKなのですが、
入力ができません。



928 Re^2: SelIndent/SenUnIndentの仕様に要望 コメント数:  0件
  ふく郎   | 2000/12/28 (木) 23:57
 http://www05.u-page.so-net.ne.jp/qb3/toshi-j/eMemoPad/
ども、ふく郎です。

> SelTabIndent, SelTabUnIndent は使えませんか?

if Editor1.Caret.SoftTab then
 Editor1.SelIndent else Editor1.SelTabIndent;

↑ってなことをやりたいんです。
というわけで TabSpaceCount の値を反映して欲しいなぁと
いう要望になったわけでして。

> SelTabIndent を参考にして下さい。(^^;

やっぱし(;^^)
もうちょっとがんばってみます。



927 Re^3: 擬似的なフリーキャレットについて コメント数:  0件
  本田勝彦   | 2000/12/28 (木) 21:45
 http://member.nifty.ne.jp/~katsuhiko
>  そんな感じです。で、なぜ擬似的といったかといいますと、その状態のまま
> 入力するとキャレット位置ではなく行末に入力されるからです。(行末にキャ
> レットが移動)

これが、まっとうな動作のような気もしますが。

> でも、採用しているエディタは少ないようです。なんででしょうか。

やはり、not FreeCaret の場合は、キャレット位置と文字列の関係を
考慮しないで済ましてしまう仕様なエディタが多いのではないかと思います。



926 Re: SelIndent/SenUnIndentの仕様に要望 コメント数:  1件
  本田勝彦   | 2000/12/28 (木) 21:43
 http://member.nifty.ne.jp/~katsuhiko
> SelIndent/SenUnIndentの仕様に要望です。
>
> これらを実行した時に1個のスペースを挿入するのではなく、
> Editor1.Caret.TabSpaceCount で設定されている値の分だけ
> スペースを挿入する仕様になるとうれしいです。
> ちょうど Delphi IDEと同じ動作です。
> あるいは、TabSpaceCountの値を使用するかしないかを選択で
> きるプロパティを新設するのも良いかもしれません。
> ご検討をお願いします。

SelTabIndent, SelTabUnIndent は使えませんか?

> 今のところソースを参考に独自に実現しようとしているのです
> が、どうもうまくいかなくて苦戦してます。
> できればヒントをくださればうれしいです(^^;

SelTabIndent を参考にして下さい。(^^;




925 Re^2: 擬似的なフリーキャレットについて コメント数:  1件
  DR-X   | 2000/12/28 (木) 06:08

>↓↑キーによるキャレット移動時に文字列の無いところへもキャレットが移動
>出来るということでしょうか?

 そんな感じです。で、なぜ擬似的といったかといいますと、その状態のまま
入力するとキャレット位置ではなく行末に入力されるからです。(行末にキャ
レットが移動)

 でも、これは別にキャレット位置で入力でもいいかもしれません。問題は上下
キーでスクロールさせたときにキャレットが左右に振りまくるということです
から。

>でも便利そうですね。

 めっちゃ便利ですよ〜(^^;)
でも、採用しているエディタは少ないようです。なんででしょうか。

 ではでは。



924 SelIndent/SenUnIndentの仕様に要望 コメント数:  2件
  ふく郎   | 2000/12/28 (木) 00:11
 http://www05.u-page.so-net.ne.jp/qb3/toshi-j/eMemoPad/
こんにちは。ふく郎です。
SelIndent/SenUnIndentの仕様に要望です。

これらを実行した時に1個のスペースを挿入するのではなく、
Editor1.Caret.TabSpaceCount で設定されている値の分だけ
スペースを挿入する仕様になるとうれしいです。
ちょうど Delphi IDEと同じ動作です。
あるいは、TabSpaceCountの値を使用するかしないかを選択で
きるプロパティを新設するのも良いかもしれません。
ご検討をお願いします。

今のところソースを参考に独自に実現しようとしているのです
が、どうもうまくいかなくて苦戦してます。
できればヒントをくださればうれしいです(^^;

よろしくお願いします。



923 Re: 擬似的なフリーキャレットについて コメント数:  2件
  本田勝彦   | 2000/12/27 (水) 23:44
 http://member.nifty.ne.jp/~katsuhiko
>  ダメもとで提案してみますが、疑似フリーキャレットって出来ませんか。
> これはどういうものかというと、FreeCaretがFalseでKeepCaretがTrueのと
> きにキープしている位置にキャレットを表示するような形になります。カー
> ソルキーの上下のときだけフリーキャレットするといえばわかりやすいでし
> ょうか。(ちょっと違いますが)

↓↑キーによるキャレット移動時に文字列の無いところへもキャレットが移動
出来るということでしょうか?

文字列処理において、not FreeCaret ならキャレット位置は常に
文字列上にあるということを前提にした部分があったように思いますので、
実現には少し時間がかかるかもしれません。

実現されないかもしれません。でも便利そうですね。




922 Re: ExchangeListでバグ コメント数:  0件
  本田勝彦   | 2000/12/27 (水) 23:40
 http://member.nifty.ne.jp/~katsuhiko
>  ExchangeListをオーバーライドしてInitOriginBaseを呼び出
> せば直りました。

いつもレポートありがとうございます。確認できました。
次のバージョンで対応したいと思います。



921 ExchangeListでバグ コメント数:  1件
  DR-X   | 2000/12/25 (月) 20:18
 本田さん、こんにちは。

 ちょっとしたバグを発見しましたので報告しておきます。

 LeftbarのColumnの桁数よりも大きなファイルを読んでおき、
画面を二画面などするために新しいTEditorを作成して
ExchangeListすると行番号の上、ルーラーの左あたりが少し
かけて表示されます。
 ExchangeListをオーバーライドしてInitOriginBaseを呼び出
せば直りました。

 ではまた。




920 擬似的なフリーキャレットについて コメント数:  3件
  DR-X   | 2000/12/25 (月) 19:30
 本田さん、こんにちは。

 ダメもとで提案してみますが、疑似フリーキャレットって出来ませんか。
これはどういうものかというと、FreeCaretがFalseでKeepCaretがTrueのと
きにキープしている位置にキャレットを表示するような形になります。カー
ソルキーの上下のときだけフリーキャレットするといえばわかりやすいでし
ょうか。(ちょっと違いますが)

 現在の場合、FreeCaretがTrueだと行末から行頭にいけませんし、かといっ
てFalseだとスクロールさせたときに、いちいち行頭に行ってしまうのでキャ
レットを見失ってしまいます。

 この方式だと、その両者の欠点をうまく補完することができます。
 一応、この方式はWzEditorが採用しています。

 ではまた。



919 Re: メチャクチャ細かいところをつきますが...   コメント数:  0件
  本田勝彦   | 2000/12/21 (木) 19:39
 http://member.nifty.ne.jp/~katsuhiko
ご指摘ありがとうございます。今度のバージョンで対応したいと思います。



918 Re: メチャクチャ細かいところをつきますが...   コメント数:  0件
  本田勝彦  |  2000/12/21 (木) 19:39
 http://member.nifty.ne.jp/~katsuhiko
ご指摘ありがとうございます。今度のバージョンで対応したいと思います。



917 メチャクチャ細かいところをつきますが...   コメント数:  1件
  かとちん  |  2000/12/21 (木) 17:37
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
前々のバージョンからそうで、新バージョンをいただく度に
修正している箇所があります。

TEditor の、Color と、ParentColor なんですが、
コンストラクタでデフォルトから変更されている...
Color := clWindow;
ParentColor := False;
...ので、

デザイン時に異なる色値にしても、実行時に反映されません。
要は TEditor の定義部を、

published
property Color default clWindow;
        ~~~~~~~~~~~~~~~~
property ParentColor deafult False;
           ~~~~~~~~~~~~~
にするのが正しいことは御承知と思います。
基本的なことだと思いますので今後はデフォで対応して
もらえませんでしょうか。

私も自作コンポでよく忘れるので人のことを言えたクチでは
ないのですが。 (^-^;



916 Re^3: 改行マーク以降を選択しないようにする コメント数:  0件
  ふく郎  |  2000/12/20 (水) 16:22
 http://www05.u-page.so-net.ne.jp/qb3/toshi-j/eMemoPad/
> そうなりますね。DrawUnderline, HideUnderline を override してください。

了解しました。トライしてみます(^^;
ありがとうございました。



915 Re: 親睦会 コメント数:  0件
  本田勝彦  |  2000/12/20 (水) 02:34
 http://member.nifty.ne.jp/~katsuhiko
> 只今TEditor親睦会がDEKOさんの掲示板にて開かれております。
> ここは是非、本田さんにも参加して頂きたいと思い、お誘い申し上げます。
>
> 2001年に向かってのTEditorの進化等、さわりだけでも聞ければ幸いです。
> お待ちしております。

お誘いありがとうございます。行って来ま〜す。



914 親睦会 コメント数:  1件
  うらら  |  2000/12/19 (火) 23:53
只今TEditor親睦会がDEKOさんの掲示板にて開かれております。
ここは是非、本田さんにも参加して頂きたいと思い、お誘い申し上げます。

2001年に向かってのTEditorの進化等、さわりだけでも聞ければ幸いです。
お待ちしております。



913 Re^2: 改行マーク以降を選択しないようにする コメント数:  1件
  本田勝彦  |  2000/12/14 (木) 23:16
 http://member.nifty.ne.jp/~katsuhiko
> TEditor Q&Aにある「改行マーク以降を選択しないようにする」技ですが、
> Editor1.Marks.Underline が表示されている場合はそのアンダーラインが
> 画面に残ってしまいます。(画面が線だらけになっちゃう)
>
> TEditor を継承してカスタムコンポを作らないとこれを防止することはでき
> ないでしょうか?

そうなりますね。DrawUnderline, HideUnderline を override してください。



912 縦スクロールバーの有効/無効切り替え コメント数:  0件
  ふく郎  |  2000/12/13 (水) 18:55
 http://www05.u-page.so-net.ne.jp/qb3/toshi-j/eMemoPad/
これまた TEditor Q&Aにある「文字列の行数に応じて縦スクロールバーをオンオフする」ですが、違うパターンとしてスクロールバーを表示したままで Enable/Disable を切り替えるようにしてみました。

OnChange イベントで...

procedure TForm1.Editor1Change(Sender: TObject);
begin
if Editor1.ListCount > Editor1.RowCount then
EnableScrollbar(Editor1.Handle, SB_VERT, ESB_ENABLE_BOTH)
else
EnableScrollbar(Editor1.Handle, SB_VERT, ESB_DISABLE_BOTH);
end;

#ぼくの好みです(^^;



911 Re: 改行マーク以降を選択しないようにする コメント数:  2件
  ふく郎  |  2000/12/13 (水) 18:45
 http://www05.u-page.so-net.ne.jp/qb3/toshi-j/eMemoPad/
こんにちは。ふく郎です。

TEditor Q&Aにある「改行マーク以降を選択しないようにする」技ですが、
Editor1.Marks.Underline が表示されている場合はそのアンダーラインが
画面に残ってしまいます。(画面が線だらけになっちゃう)

TEditor を継承してカスタムコンポを作らないとこれを防止することはでき
ないでしょうか?

#初歩的質問ですみません(^^;



910 Re^4: 一行の文字数について コメント数:  0件
  kei   |  2000/12/11 (月) 23:38
> 申し訳ないのですが、ソースコードを書き換えて対処していただけますでしょうか?

了解しました。これからも開発がんばってください。不具合等ありましたらまた、報告させていただきます。では。



909 Re^2: 2.01 にしたら、DoDrawLine で、Bracketsが認識しなくなりました コメント数:  0件
  かとちん  |  2000/12/11 (月) 05:18
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
> ver 2.00 からは、Brackets に関する情報を取得する時に、どんなトークンとして
> パースを開始するべきかという情報も取得して文字列リストに保持させています。
> この情報を利用してパースを開始させるのが CreateWithToken コンストラクタ
> です。
すばらしい進化ですね!
CreateWithToken 早速応用してみます。Brackets 以外にも解決させたかった内容が
ありました(<script ...>この間を色替え</script>)ので、そちらも対応できそう。



908 Re^2: TEditorの描画について コメント数:  0件
  本田勝彦  |  2000/12/09 (土) 23:59
 http://member.nifty.ne.jp/~katsuhiko
> 確認出来ました。パーサーのような気もするし、PaintLine のような気もするし
> 調べて見ます。情報ありがとうございます。

原因は両方にありました。まずパーサーがタコに出来ていること。そして
PaintLine 内で、見えない部分のパースをスキップしていること。です。

次のバージョンでは、もう少しマシなパーサーにしたいと思います。





907 Re^3: 一行の文字数について コメント数:  1件
  本田勝彦  |  2000/12/09 (土) 23:56
 http://member.nifty.ne.jp/~katsuhiko
> TEditorを使ったソフトを複数作っているのですが、ひとつは一行1000文字でも十分なのですが、もうひとつのほうはそれでは足りないので値を大きく設定しています。
> もともと大きい値を設定しておいてもいいのですが、無駄に大きい値を入れておくと、処理が少し遅くなるのではと思ったためです。

なるほど、わかりました。MaxLineCharacter が変化するだけで良さそうに見えた
のですが、FDxArray 配列メンバの宣言が固定なのでプロパティ化は難しそうです。

申し訳ないのですが、ソースコードを書き換えて対処していただけますでしょうか?



906 Re^2: 一行の文字数について コメント数:  2件
  kei   |  2000/12/08 (金) 07:07
おはようございます。

> WrapByte を変化させるという意味合いとは違いますよね。
> どういう用途をお考えなのか、お聞かせ頂けますでしょうか?

TEditorを使ったソフトを複数作っているのですが、ひとつは一行1000文字でも十分なのですが、もうひとつのほうはそれでは足りないので値を大きく設定しています。
もともと大きい値を設定しておいてもいいのですが、無駄に大きい値を入れておくと、処理が少し遅くなるのではと思ったためです。



905 Re: TEditorの描画について コメント数:  1件
  本田勝彦  |  2000/12/08 (金) 00:14
 http://member.nifty.ne.jp/~katsuhiko
> ■v2.01サンプルプロジェクトのHTMLのページ、折り返しなし
>
> 1.『xxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>』のような、ある程度長い文字列の最後の方にタグを追加
> 2.ウィンドウサイズを小さくし、タグの部分が隠れるようにする
> 3.すると、次の行以降はタグでないのに半角英数文字が色分けされてしまう。
>
> これはPARSER.PASではなく、TEditorに問題があるように思えるのですが、どうでしょうか?

確認出来ました。パーサーのような気もするし、PaintLine のような気もするし
調べて見ます。情報ありがとうございます。



904 Re: 一行の文字数について コメント数:  3件
  本田勝彦  |  2000/12/08 (金) 00:11
 http://member.nifty.ne.jp/~katsuhiko
> 標準ではMaxLineCharacterは1000となっていますが、これをプロパティとして簡単に変更できるようにしていただけると助かるのですが対応していただけないでしょうか。

WrapByte を変化させるという意味合いとは違いますよね。
どういう用途をお考えなのか、お聞かせ頂けますでしょうか?



903 Re: 2.01 にしたら、DoDrawLine で、Bracketsが認識しなくなりました コメント数:  1件
  本田勝彦  |  2000/12/08 (金) 00:03
 http://member.nifty.ne.jp/~katsuhiko
> 仕様変更なのでしょうか? もしそうなら、どう対処するのが望ましいのか
> 教えて下さい。

パーサーの数ある(^^;コンストラクタの CreateWithToken を利用して下さい。

Parser := TEditorParser.CreateWithToken(
ListStr, Editor1, Editor1.ListBracket[Index], ListToken[Index]);

とすることで toBracket も返して来るはずです。

折り返し表示によって複数行にまたがる toQuotation, toComment を認識する
ために、ver 2.00 から Tokens プロパティが文字列リストに保持される仕様に
なっています。
旧バージョンでは、該当行をパースする際、先頭の文字列がどういうトークンなの
かを知る術を持たなかったので、1行上の文字列を取得してからパースするという
方式でしたので、3行にまたがる一つのトークンは認識出来なかったワケです。

ver 2.00 からは、Brackets に関する情報を取得する時に、どんなトークンとして
パースを開始するべきかという情報も取得して文字列リストに保持させています。
この情報を利用してパースを開始させるのが CreateWithToken コンストラクタ
です。




902 TEditorの描画について コメント数:  2件
  kei   |  2000/12/07 (木) 17:23
先ほど別件で書き込みさせていただきましたが、サンプルプロジェクトをいろいろいじっていたら気になるところがありましたので、報告させていただきます。

■v2.01サンプルプロジェクトのHTMLのページ、折り返しなし

1.『xxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>』のような、ある程度長い文字列の最後の方にタグを追加
2.ウィンドウサイズを小さくし、タグの部分が隠れるようにする
3.すると、次の行以降はタグでないのに半角英数文字が色分けされてしまう。

これはPARSER.PASではなく、TEditorに問題があるように思えるのですが、どうでしょうか?

わかりにくい説明ですいませんです。では。



901 一行の文字数について コメント数:  4件
  kei   |  2000/12/07 (木) 12:37
標準ではMaxLineCharacterは1000となっていますが、これをプロパティとして簡単に変更できるようにしていただけると助かるのですが対応していただけないでしょうか。

すばらしいコンポーネントを提供していただきありがとうござます。これからも開発がんばってください。