~katsuhiko メッセージボード

back 951-1000

1001-1050

1051-1100


1050 TEditor ルーラーの色異常? コメント数:  10件
  OrangePekoe   | 2001/02/25 (日) 23:27
こんにちは

TEditor(v.2.02)を使わせていただいています。

ルーラーを表示させてみたのですが、VisibleをTrueにして起動し、
そのあとにVisibleをFalseにすると、ルーラーの色がおかしくなります。

私のソースが悪いのかと思い、TEditorに付属のサンプルプロジェクトの
プロパティで試しても、同じ現象が起きます。

具体的には、サンプルプロジェクトを実行し、プロパティでルーラーの表示をオ
ンにして、OKをし、次にその反対をするという操作です。

色の状態は、エディター部分のバックカラーと同じ色で、目盛りや数字が[EOF]
と同じ色になってしまいます。


環境は、
OS:Windows2000SP1
Delphi 3.01
自作機で、
CPUは、Celeron 733MHz
ディスプレイアダプタは、Graphics Blaster RIVA TNT2 VALUE(CT6981)




1049 Re: パーサーの拡張について コメント数:  5件
  本田勝彦  |  2001/02/25 (日) 23:23
 http://member.nifty.ne.jp/~katsuhiko
進んでますねぇ。

> 複数行にまたがった場合に、2行目以降の色が変わってくれませんでし
> た。私の方の問題かとも思ったのですがサンプルの先頭がアットマーク
> の語句を処理するパーサーでも同様の用です。

サンプルということで手ぇ抜き抜きでしたね(^^;
アットマークで説明しますと、toAtMark なトークンが折り返されている場合、
次の行の Token プロパティには toAtMark が入っています。これが次の行の
パースを開始する際利用されます。つまり NextToken メソッド内で最初に
FMethodTable[toAtMark] が実行されるようになります。

ですので、例えば InAtMarkProc という名前のメソッドを用意して
InitMethodTable では
FMethodTable['@'] := AtMarkProc; // に加えて
FMethodTable[toAtMark] := InAtMarkProc;
を実行すれば良いですね。
InAtMark の実装は工夫してみて下さい。

ます。




1048 パーサーの拡張について コメント数:  6件
  DR-X   | 2001/02/25 (日) 16:25
 本田さん、こんにちは。

現在、パーサーの拡張に着手しています。文字列の識別子を複数定義
できるようにしたり、引用符で色を変えたりといったものなのですが、
複数行にまたがった場合に、2行目以降の色が変わってくれませんでし
た。私の方の問題かとも思ったのですがサンプルの先頭がアットマーク
の語句を処理するパーサーでも同様の用です。

 標準で用意されている文字列の処理では問題ないので、何か方法があ
るのでしょうか。

 よろしくお願いします。 m(_ _)m





1047 Re^2: Editor 1,000 文字問題 コメント数:  1件
  本田勝彦  |  2001/02/25 (日) 15:20
 http://member.nifty.ne.jp/~katsuhiko
> ただ、このやり方ですと暴走することはなくなるものの、1000文字
> 目の後ろに表示されてしまう場合があるようです。

そうなんです。そこに独立したトークンが描画される場合にそうなります。
で、PaintLine, PaintLineSelected 内で無効領域を塗りつぶした後で、
必要な文字列を描画する際に DrawTextRect に渡す領域を1,000文字分の
クリップにすることで対処出来ることが判明しました。

> りませんでした。ただ、その場合当然のことながら改行が表示されてしま
> うのですが(^^;

改行マークが残ってますね。

>  厳密にやるなら描画領域を一つ一つ調べて、範囲を超えているものだけ
> をカットする必要があると思いますが、描画速度がネックになりますね。

この辺もう少し検討してみます。



1046 Re:TEditor 1,000 文字問題 コメント数:  2件
  DR-X   | 2001/02/25 (日) 10:50
>WordWrap オンで1,000文字以上の1行文字列を作って、WordWrap オフに
>するとウチでもOSごと死にました。
>
>取りあえず以下のように、DrawTextRect メソッドを修正して下さい。

 本田さん、こんにちは。DR-X です。
調査していただいてありがとうございます。

ただ、このやり方ですと暴走することはなくなるものの、1000文字
目の後ろに表示されてしまう場合があるようです。

 私の方でやってみた対策では、パーサーに渡す文字列の段階で範囲チェ
ックをかけて1000文字にクリッピングしたため、このような問題はあ
りませんでした。ただ、その場合当然のことながら改行が表示されてしま
うのですが(^^;

 厳密にやるなら描画領域を一つ一つ調べて、範囲を超えているものだけ
をカットする必要があると思いますが、描画速度がネックになりますね。

 ではでは。




1045 TEditor 2.03 コメント数:  0件
  本田勝彦  |  2001/02/25 (日) 00:24
 http://member.nifty.ne.jp/~katsuhiko
TEditor 2.02 には変なところがありますね。謎の Notification がコメント
アウトされていたり、ヘルプには、Cursors.TopMarginCursor が記述されちゃって
るし(^^;

1,000 文字問題と Cursors.TopMarginCursor が実装されていて(^^;
あと Shift + VK_RETURN 機能付きの 2.03 を出そうかなと考えております。

パーサーを改良したバージョンは 2.10 としてもう少し先を考えています。



1044 TEditor 1,000 文字問題 コメント数:  3件
  本田勝彦  |  2001/02/25 (日) 00:22
 http://member.nifty.ne.jp/~katsuhiko
WordWrap オンで1,000文字以上の1行文字列を作って、WordWrap オフに
するとウチでもOSごと死にました。

取りあえず以下のように、DrawTextRect メソッドを修正して下さい。

procedure TEditor.DrawTextRect(Rect: TRect; X, Y: Integer;
const S: String; Options: Word);
var
Buf: String;
begin
if Showing then
begin
if Length(S) > MaxLineCharacter then
begin
Buf := Copy(S, 1, MaxLineCharacter);
Windows.ExtTextOut(Canvas.Handle, X, Y, Options, @Rect,
PChar(Buf), Length(Buf), PInteger(@FDxArray));
end
else
Windows.ExtTextOut(Canvas.Handle, X, Y, Options, @Rect,
PChar(S), Length(S), PInteger(@FDxArray));
end;
end;

これで死ぬことはなくなります。
1000文字目のところで入力も出来て改行マークは移動するが文字は描画
されません。そのままリターンキーを押すと・・・(^^;



1043 Re^5: 無事インストールできました。 コメント数:  0件
  本田勝彦  |  2001/02/25 (日) 00:13
 http://member.nifty.ne.jp/~katsuhiko
> 早速、アドバイスいただいた通り[既存のパッケージに追加]ダイアログで
> TStringsPrinterを追加し、TEditorを再コンパイルしたら無事インストール
> できました。

良かったですね。何のアドバイスも出来ず申し訳ないです。
Km さんありがとうございます。



1042 Re^4: 無事インストールできました。 コメント数:  1件
  SKY   | 2001/02/23 (金) 14:28
> 私はTEditorをインストールしたパッケージにTStringsPrinterもインストール
> しています。そのため、dsgnintf.pasやvclsmp50.bpiが既にパッケージに組み
> 込まれているため問題が発生しないのだと思います。
> TEditorをインストールしたパッケージに組み込むか、dsgnintf.pasや
> vclsmp50.bpiをStrprn.bpkに組み込めば動くと思います。
Kmさん返答ありがとうございます。
早速、アドバイスいただいた通り[既存のパッケージに追加]ダイアログで
TStringsPrinterを追加し、TEditorを再コンパイルしたら無事インストール
できました。
アドバイスいただき感謝しています。m(__)m



1041 Re^3: TStringsPrinterをBCB5で使用するには コメント数:  2件
  Km   | 2001/02/22 (木) 18:37
> とりあえず、こちらでは上手くいってないんでインストールを行った手順を書きます。
> 1.[コンポーネント]→[コンポーネントのインストール]
> 2.[新規パッケージに追加]→[パッケージのファイル名]をStrprn.bpk
> [ユニットファイル名]をSTRPREG.PAS
> 3.コンパイル
> 4.ここで「Strprn.OBJファイルが開けない」とのエラーが出る
> 5.TStringsPrinterに含まれる全ての.PASファイルを追加
> 6.結果「Strprn.OBJファイルが開けない」とのエラーが出る
> 以上です。
> よろしければインストールの手順をお教え願えないでしょうか。

私はTEditorをインストールしたパッケージにTStringsPrinterもインストール
しています。そのため、dsgnintf.pasやvclsmp50.bpiが既にパッケージに組み
込まれているため問題が発生しないのだと思います。
TEditorをインストールしたパッケージに組み込むか、dsgnintf.pasや
vclsmp50.bpiをStrprn.bpkに組み込めば動くと思います。



1040 Re^2: TStringsPrinterをBCB5で使用するには コメント数:  3件
  SKY   | 2001/02/22 (木) 14:08
> 私が改造したのは行番号に開始行のプロパティを追加しただけなので、インストー>ルに関しては特に問題無かった気がします。どううまくいかなかったのでしょうか?

ご返答ありがとうございます。
そうなんですかぁ問題ないんですか。
とりあえず、こちらでは上手くいってないんでインストールを行った手順を書きます。
1.[コンポーネント]→[コンポーネントのインストール]
2.[新規パッケージに追加]→[パッケージのファイル名]をStrprn.bpk
[ユニットファイル名]をSTRPREG.PAS
3.コンパイル
4.ここで「Strprn.OBJファイルが開けない」とのエラーが出る
5.TStringsPrinterに含まれる全ての.PASファイルを追加
6.結果「Strprn.OBJファイルが開けない」とのエラーが出る
以上です。
よろしければインストールの手順をお教え願えないでしょうか。



1039 Re: TStringsPrinterをBCB5で使用するには コメント数:  4件
  Km   | 2001/02/22 (木) 07:58
> 同じところにTStringsPrinterがあることに気づきました。早速、BCB5で
> インストールを試したところ、上手くいきませんでした。
> TEditorEXの作者Kmさんがサンプルで上げてあるプログラムではTStringsPrinterを
> 使っているみたいなんですが(改造したってかいてありましたが)どうやれば
> 使用できるようになるのでしょう。

私が改造したのは行番号に開始行のプロパティを追加しただけなので、インストールに関しては特に問題無かった気がします。どううまくいかなかったのでしょうか?



1038 TStringsPrinterをBCB5で使用するには コメント数:  5件
  SKY   | 2001/02/22 (木) 04:12
どうも、はじめまして。
TEditorを使い自作のエディターなんぞ作っておりますが、それに印刷の機能を
つけたいと思い適当なコンポーネントがないかと探していたら灯台下暗しで、
同じところにTStringsPrinterがあることに気づきました。早速、BCB5で
インストールを試したところ、上手くいきませんでした。
TEditorEXの作者Kmさんがサンプルで上げてあるプログラムではTStringsPrinterを
使っているみたいなんですが(改造したってかいてありましたが)どうやれば
使用できるようになるのでしょう。
当方パスカルについてはわかりませんが、ご教授のほどよろしくお願いします。



1037 Re: はじめまして コメント数:  0件
  本田勝彦  |  2001/02/20 (火) 23:53
 http://member.nifty.ne.jp/~katsuhiko
ようこそいらっしゃいまし。(^^)

>ソフトは、Borland C++ Compiler のフロントエンドです。

まだ公開されてないようですが、楽しみにしています。




1036 TRegManager ver 1.5 コメント数:  0件
  本田勝彦  |  2001/02/20 (火) 23:51
 http://member.nifty.ne.jp/~katsuhiko
を公開しました。

TFont.Charset に対応しました。かとちんさんどうもです。
AsFloat プロパティも実装されてしまいました。



1035 はじめまして コメント数:  1件
  三浦淳  | 2001/02/20 (火) 23:32
 http://www.vector.co.jp/soft/win95/prog/se180695.html
本田さん、はじめまして。三浦です。TEditor(+KmさんのTEditorEx)コンポを使ったフリーソフトを公開しましたので、宣伝にきました(^^。よろしかったら、覗いてみてください。水曜日中(2/21)には見れると思います。ソフトは、Borland C++ Compiler のフロントエンドです。



1034 Re^8: 長い行を読み込んだときに不具合。 コメント数:  0件
  本田勝彦  |  2001/02/16 (金) 03:18
 http://member.nifty.ne.jp/~katsuhiko
色々ありがとうございます。1000文字はなんとかしてみたいと思います。
描画するときに切り捨てるのが簡単で間違いの無い方法のような気もします。

今までアプリケーションから TEditor をいじることがほとんど無かったので
ここいらで何か作ってみたいと思います。

色々出て来そうでイヤな予感(^^;




1033 Re^7: 長い行を読み込んだときに不具合。 コメント数:  1件
  K2  | 2001/02/15 (木) 11:55
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。
不満だけと投稿というのも、なんかばつが悪いので、ちょっと情報を。

うちのサイトではK2Editorを約2週間から1ヶ月間隔で細かいバグ
フィックスなどを行っていますが、その間のダウンロード数は3000件を
越えます。一緒にVECTORにも登録していますが、こちらは1000件くらい
です。バージョンアップに追従するユーザーは、すべてのユーザーの
氷山の一角だと思いますので、全ユーザーはこの数の倍から1桁上
だと思います。

たぶん、てらおさんところはもっと多くのユーザーを抱えていると
思います。この2つだけでも、軽く1万ユーザーを越えます。
おおざっぱな推測ですが、TEditorの全ユーザー数は10万を越えると
思います(考えると怖くなってきた……)

TEditorってすごいなぁと、今更ながら思います。
本田さん、すごい(^^



1032 Re^6: 長い行を読み込んだときに不具合。 コメント数:  2件
  K2  | 2001/02/15 (木) 11:39
 http://web.kyoto-inet.or.jp/people/koyabu/
(つづき)

 3つめは、K2Editorを作っていて要望が多かったですね。秀丸に
この機能があるのが要因でしょう。2つめはメモ帳を意識されるんで
しょうね。これはTEditorの構造から言っても、できなくて仕方が
ないと思います。

 1つめ以外は、できなくても可ですが、1つめはちょっと致命的です。
できれば改善して欲しいと思うのですが、なんとかなりませんか?>本田さん

# 最新版で改善されても、今のところはうちでは最新版にはついて
# いけないのですが……(^^; 将来作り直すことがあるようなら、
# 新しいTEditorをさわってみたいと思います。



1031 Re^5: 長い行を読み込んだときに不具合。 コメント数:  3件
  K2  | 2001/02/15 (木) 11:38
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。

>  じつは、まったく同じことを試してはいたんです。でも、1000文字目の
> ところに改行マークが出てしまうのがちょっとアレかなと思ってました。

 そうですね。あんまりよくはないでしょうね(^^;

 最近の新パーザ仕様のTEditorは全然試していないのですが、約1年半
TEditorを使い倒してきて、不満な点を上げておきます。ほとんど満足
していて、本田さんには大変感謝しているのを前提に……

・1000文字制約(これはかなりまずい)
・動的に折り返し桁数を変えられない(Undoの制約と再構築の時間)
・変更行がどこかを覚えることができない(変更行にマークをつけたり
 する方法がない)
・文字列を表す文字が一種類。エスケープシーケンスを指定できない。

 最後のはパーザを変更すればできるので、今のバージョンではOKなの
かもしれません。K2Editorではパーザに手を入れてあります。

(つづく)



1030 Re^4: 長い行を読み込んだときに不具合。 コメント数:  4件
  DR-X   | 2001/02/14 (水) 15:59
 K2さん、こんにちは。DR-X です。

> うちでは1000文字以上の場合、表示時に以降の文字列を切り捨てています。
> パフォーマンスの問題でやりかたないでしょうが(^^; 有効な解決手段
>が提示できない以上、仕方がないでしょう。

 じつは、まったく同じことを試してはいたんです。でも、1000文字目の
ところに改行マークが出てしまうのがちょっとアレかなと思ってました。
 で、そう思いながら K2Editor を見させていただくと、いっしょだったんで
安心しました。(^^;
 string 型は長さを得るのにほとんどコストがかかりませんから、いいと
思いますけどね。


> W2Kが飛ぶのは納得いかないですよね。うちで対策を入れる前にNTがとんだ
>という記憶はありませんが、飛ぶこともあるんでしょうね。

 これは、私の方のテストにも少し問題があったかもしれません。適当にアル
ファベットと数字の羅列で長い文字を作ったため、一つのトークンとして表示
された可能性があります。それで、ExtTextOut の配列サイズを超えたため、
暴走してしまったと。通常の文章ならあまりないでしょうね。でも上記の対策
を行っていれば、これでも問題ないですね。

 ではでは(^^)/



1029 Re^3: 長い行を読み込んだときに不具合。 コメント数:  5件
  K2  | 2001/02/14 (水) 10:32
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。

> >以前 urano さんからもご指摘を受けたように思います。
> >その時は、WordWrap を常時オンにして、WrapByte = 250 をデフォにしてね
> >と回答したと思います。

 1000文字以上表示できないのは、とりあえずWindowsの仕様だと逃げると
しても、ハングアップするのはまずいので、TEditor側で最低限その対処だけ
は必要かと思います。
 うちでは1000文字以上の場合、表示時に以降の文字列を切り捨てています。
 パフォーマンスの問題でやりかたないでしょうが(^^; 有効な解決手段
が提示できない以上、仕方がないでしょう。

 W2Kが飛ぶのは納得いかないですよね。うちで対策を入れる前にNTがとんだ
という記憶はありませんが、飛ぶこともあるんでしょうね。



1028 Re^2: 長い行を読み込んだときに不具合。 コメント数:  6件
  DR-X   | 2001/02/14 (水) 09:56
>以前 urano さんからもご指摘を受けたように思います。
>その時は、WordWrap を常時オンにして、WrapByte = 250 をデフォにしてね
>と回答したと思います。

 あ、そうでしたか。でもそれはちょっと(汗)
WordWrap を オンすると、読み込みが遅くなってしまいますし、その他 Lines
へのアクセスなども遅くなるので、選択できるようにしておきたいのです。

>win98, 95 では、読み込まれているが、表示されていない状態>でしたけどね。

 Win98 でも試しているのですが、現象は様々です。文字が重なって表示された
り、1000 文字目より後に表示されたり、範囲チェックエラーがでたり、アクセス
違反がでたりという感じです。

>>  でも、これぐらいで飛ばないでほしい。 >Win2000
>
>ですね。(^^;

 信頼性のあるOSらしいですけど。やっぱり、Linux ですか。(^^;

>ちゃんとやろうとすると、loadfromfile, settextbuf, settextbox などで・・・
>いやぢゃ(^^;

 うーん。表示するときだけ範囲に収まるように補正すればよさそうに思ったんで
すけど、、



1027 Re: 長い行を読み込んだときに不具合。 コメント数:  7件
  本田勝彦  |  2001/02/14 (水) 00:17
 http://member.nifty.ne.jp/~katsuhiko
以前 urano さんからもご指摘を受けたように思います。
その時は、WordWrap を常時オンにして、WrapByte = 250 をデフォにしてね
と回答したと思います。

そうして下さい。win98, 95 では、読み込まれているが、表示されていない状態
でしたけどね。

>  でも、これぐらいで飛ばないでほしい。 >Win2000

ですね。(^^;

ちゃんとやろうとすると、loadfromfile, settextbuf, settextbox などで・・・
いやぢゃ(^^;



1026 Re: 祝!雑誌掲載! コメント数:  0件
  本田勝彦  |  2001/02/14 (水) 00:13
 http://member.nifty.ne.jp/~katsuhiko
> > こりゃやっぱり、Teddy も落として試してみないと良さを体感出来ないようですね。
> > 試してみます。

一回だけ実行しました(^^;

> 突然ですが、そのお遊びで作ったエディタが雑誌掲載されました!
> Windows100% 3月号に!今日手元に届いて見たところ、

おぉおめでとうございます。\(^o^)/

> 「こ、これは...」その雑誌は、ちょっとかなり趣味が
> 偏っているような...わたしゃアニメ系とか苦手です。
> 嬉しい反面、肌に合わず余計に恥ずかしいという...

人の向き不向きって自分の意志とは別のところにあるような気もしますが。

> 2.0以降で多くのメソッドに細分化されたことにより結構
> 便利に派生することができました。パーサーよりも本体の方で
> 今までいくつか質問や要望したことが、困ったことといえば
> 困ったことだったのかと思っています。

考え中です(^^;



1025 長い行を読み込んだときに不具合。 コメント数:  8件
  DR-X   | 2001/02/12 (月) 16:29
 本田さん、こんにちは。

 さっそくですが、一行が1000文字を越える行を読み込んだときに、
範囲チェックエラーがでたり、OSごと暴走することがありました。

 最初バイナリファイルを読み込んだときになったため、コードの問題
かなと思い、シフトJISの範囲に入らないものをスペースに変換した
りしてみましたが、効果はありませんでした。

 そこで 1行が 8000 文字ぐらいのファイルを他のエディタで作成して、
読み込ませると Win2000 が OSごとお亡くなりになりました(^^;

 おそらく ExtTextOut が 引数で渡した配列数よりも長い文字を表示さ
せようとしたときの動作を保証していないためだと思います。

 ご検討お願いします。


P.S.

 でも、これぐらいで飛ばないでほしい。 >Win2000

  



1024 祝!雑誌掲載! コメント数:  1件
  かとちん  | 2001/02/12 (月) 03:36
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
> こりゃやっぱり、Teddy も落として試してみないと良さを体感出来ないようですね。
> 試してみます。
突然ですが、そのお遊びで作ったエディタが雑誌掲載されました!
Windows100% 3月号に!今日手元に届いて見たところ、
「こ、これは...」その雑誌は、ちょっとかなり趣味が
偏っているような...わたしゃアニメ系とか苦手です。
嬉しい反面、肌に合わず余計に恥ずかしいという...

> 拡張する上で特に困ったことなどは無かったですか?
> 現在パーサーを大幅に変更する予定があるので・・・
うーんと聞かれてたのにレスしてませんですみません。
2.0以降で多くのメソッドに細分化されたことにより結構
便利に派生することができました。パーサーよりも本体の方で
今までいくつか質問や要望したことが、困ったことといえば
困ったことだったのかと思っています。



1023 Re^2: 大きなファイルを読み込んだとき コメント数:  0件
  DR-X   | 2001/02/07 (水) 10:37
>でかいファイルだと読み込み終わってからしばらくダンマリが発生しますけど
>という要望に応えた記憶があります。InitBrackets はそうそう実行される
>メソッドではないので、プロパティを参照しても良いかもしれませんね。

 上から順番にスクロールさせるだけなら、今の仕様の方がいいのかもしれま
せんから、一応そのまま残しておいてプロパティで切り替えるというのがいい
んじゃないでしょうか。

>というか、private セクションを無くしてしまえば良いんですよね。
>んで全部 virtual

 そうですね、FList が private なのはかなり厳しいと思います。別件ですが、
ListRows が使えなかったので、public に移した気がします。あとキャレット
の形状をかえたいときも 一部 private でソースの改変が必要でした。

 できるだけ継承だけで機能が追加できるほうが、オブジェクト指向ぽくていい
のですけど。わがままばかりいってすいません。




1022 Re: 大きなファイルを読み込んだとき コメント数:  1件
  本田勝彦  |  2001/02/07 (水) 01:32
 http://member.nifty.ne.jp/~katsuhiko
>  こうすることで読込を速くできるのでしょうけど、動きがギクシャクしてしまう
> のはどうでしょうか。できれば、プロパティで切り替えて全て処理するようにする
> とか、外部から全て処理できるようになればと思います。

でかいファイルだと読み込み終わってからしばらくダンマリが発生しますけど
という要望に応えた記憶があります。InitBrackets はそうそう実行される
メソッドではないので、プロパティを参照しても良いかもしれませんね。

というか、private セクションを無くしてしまえば良いんですよね。
んで全部 virtual



1021 大きなファイルを読み込んだとき コメント数:  2件
  DR-X   | 2001/02/06 (火) 22:48
 本田さん、こんにちは。DR-X です。

なんか私ばっかり要望だしてますが(^^;、またまた気になる点を見つけました
ので連絡しておきます。

 割と大きなファイル(10MByteぐらい)を TEditor に読み込んだときに、スク
ロールバーを動かすと異様に重くなってしまいました。ところが、どういうわけか
いったん最後までスクロールさせるとサクサク動くようになります。

 この現象、なんでかなぁ、とずっと考えていたのですか、どうもファイルを読み込
んだときに Bracket の処理を表示させている部分のみ行っているのが原因ではない
かなと思います。

 こうすることで読込を速くできるのでしょうけど、動きがギクシャクしてしまう
のはどうでしょうか。できれば、プロパティで切り替えて全て処理するようにする
とか、外部から全て処理できるようになればと思います。

P.S
 なんか、こないだからソース書き換えれば済む問題ばっかり言ってますね、私。
でも、それはそれだけ TEditor の完成度が高いためで、、
気悪くしないでくださいね。では。




1020 Re: TEditorExの新バージョン コメント数:  0件
  本田勝彦  |  2001/02/03 (土) 00:06
 http://member.nifty.ne.jp/~katsuhiko
> Delphian Worldに登録しましたので、よろしかったら試してみてください。

見て来よ。



1019 Re^3: 選択範囲のフォントの種類や大きさを変更したいのですが コメント数:  0件
  本田勝彦  |  2001/02/03 (土) 00:04
 http://member.nifty.ne.jp/~katsuhiko
> BCBによるコーディングですけど、一応できてるみたいです。(^^;
> ただ、フォントサイズを変えると問題も起きますね。どんな問題かは
> 実験するとすぐわかります。

多分 shugo さんは、そやって描いた状態をエディタ側で保持して
くれることを期待されていると思うのですよね(^^;



1018 TEditorExの新バージョン コメント数:  1件
  Km   | 2001/02/02 (金) 17:53
どうもです。宣伝しに来ました。
Delphian Worldに登録しましたので、よろしかったら試してみてください。
ソースを公開していますので実際に使わなくても何かの参考にでもなったら
幸いです。
Pascalはあまり詳しくないので、不具合があったら指摘してくださいね>ALL

ではまた。



1017 Re^2: 選択範囲のフォントの種類や大きさを変更したいのですが コメント数:  1件
  Km   | 2001/02/02 (金) 17:45
> > 選択範囲のフォントの種類や大きさを変更したいのですが
> > どうすればいいのでしょうか?
>
> ごくたまにですが、こういうことも出来ちゃうんぢゃないかと思われる方がいらっしゃるのですが、残念ながら TEditor では出来ないんです。TRichEdit を使って下さいね。

BCBによるコーディングですけど、一応できてるみたいです。(^^;
ただ、フォントサイズを変えると問題も起きますね。どんな問題かは
実験するとすぐわかります。

void __fastcall TForm1::Editor1DrawLine(TObject *Sender,
AnsiString LineStr, int X, int Y, int Index, TRect &ARect,
bool Selected)
{
if (Selected){
Editor1->Canvas->Font->Name = "MS 明朝";
Editor1->Canvas->Font->Color = clRed;
Editor1->Canvas->Font->Style = TFontStyles()<< fsBold << fsItalic;
Editor1->DrawTextRect(ARect, X, Y, LineStr, ETO_CLIPPED);
}
}



1016 Re^16: 空行挿入機能について コメント数:  0件
  Kobayashi   | 2001/02/02 (金) 17:33
 http://www2.off.ne.jp/~gshome/
>> 今度は縦線の描画をいれました。
> おぉやりましたね。待ちかねていた方がかなりいらっしゃると思いますよ。

はい、僕もその一人です。
ここで質問を出してからいろいろ試行錯誤してみましたが、結局挫折。
そのまま放置しておりました(^^;
期待しています。



1015 Re^15: 空行挿入機能について コメント数:  1件
  本田勝彦  |  2001/02/01 (木) 23:32
 http://member.nifty.ne.jp/~katsuhiko
> 今度は縦線の描画をいれました。

おぉやりましたね。待ちかねていた方がかなりいらっしゃると思いますよ。



1014 Re^14: 空行挿入機能について コメント数:  2件
  Km   | 2001/02/01 (木) 12:41
> おぉ、すばらしいですね。Km さんの TEditorEx みたいな感じで、個別にどんどん公開して頂けると有り難いです。

みんなでいろんな派生コンポを作って広めましょう(^o^)
週末には新しいTEditorExを公開できると思います。
今度は縦線の描画をいれました。
少し前のバージョンからPascalで書きなおしたのでDelphiユーザの方も使える
とは思いますが、開発環境/テスト環境ともBCB5ですので実績はありません。



1013 Re^13: 空行挿入機能について コメント数:  3件
  本田勝彦  |  2001/02/01 (木) 00:07
 http://member.nifty.ne.jp/~katsuhiko
チャットになりそう(^^;

> この辺りの動作制御がすべてメソッド化されることを望みます。
> しかも、TActionを使えないDelphi2/3の人にも恩恵はありますしね。

へいm(_ _)mかとちんさんのを参考にさせて頂きます。でも実装はだいぶ
後になると思いますが、今後の楽しみということにさせて下さい。

> 実は他にも TEditor 用の検索置換コンポ TEditorFindReplaceなるものを作成
> 済みだったりします(もちろん HTSearchを uses しています)。
> これも同梱してもらえるとかなり便利かなぁと思ってます。

おぉ、すばらしいですね。Km さんの TEditorEx みたいな感じで、個別にどんどん公開して頂けると有り難いです。



1012 Re^12: 空行挿入機能について コメント数:  0件
  本田勝彦  |  2001/01/31 (水) 23:59
 http://member.nifty.ne.jp/~katsuhiko
なるほど。解説どうもです。
TEditor が命令セットと受付窓口を用意すれば良いのですね。
今後の楽しみとさせて下さい。(^^;



1011 Re^12: 空行挿入機能について コメント数:  4件
  かとちん  | 2001/01/31 (水) 23:56
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato/download/hedtActs.txt
> かとちんさんのソースの
> 中で、キーを投げたり、メッセージを投げたりして苦労していらっしゃる
> 部分をどうしたらいいかという話ですので。
そうそう、全く同感です。あのサンプルで言いたかったことは、
いくつも出てくるコメントにある通りです。
この辺りの動作制御がすべてメソッド化されることを望みます。
しかも、TActionを使えないDelphi2/3の人にも恩恵はありますしね。

> わたしが気にしている「動的」だから云々は考えなくていいので、便利
> でわかりやすいですね。非常に参考になりました。
おほめいただき光栄です。
私はD4以降のユーザ向に、これらは TEditorの配布パッケージに同梱して
欲しいと思ってます。カスタムアクション自体が提供者サイドに
あって利用者サイドが用意するものではないですからね。

私は本田さんじゃないので、TEditorの周辺強化・後方支援にまわろうかなぁと
思っている次第です。ハイ。
実は他にも TEditor 用の検索置換コンポ TEditorFindReplaceなるものを作成
済みだったりします(もちろん HTSearchを uses しています)。
これも同梱してもらえるとかなり便利かなぁと思ってます。



1010 Re: 選択範囲のフォントの種類や大きさを変更したいのですが コメント数:  2件
  本田勝彦  |  2001/01/31 (水) 23:55
 http://member.nifty.ne.jp/~katsuhiko
> 選択範囲のフォントの種類や大きさを変更したいのですが
> どうすればいいのでしょうか?

ごくたまにですが、こういうことも出来ちゃうんぢゃないかと思われる方がいらっしゃるのですが、残念ながら TEditor では出来ないんです。TRichEdit を使って下さいね。



1009 Re^11: 空行挿入機能について コメント数:  5件
  K2  | 2001/01/31 (水) 21:18
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。はじめまして。

> どっちかというと、TEditor でどうこうするのではなく、
> 「TEditor用の標準アクション」を用意するというのが妥当な気がします。

それは、みなさん、いろいろな方法で工夫していることだと思いますので、
今回の話とはちょっと視点が違うと思います。かとちんさんのソースの
中で、キーを投げたり、メッセージを投げたりして苦労していらっしゃる
部分をどうしたらいいかという話ですので。

かとちさんさんの方法は、コンポーネントパレットにTEditor専用の
Actionを定義できるということで、使いやすいと思います。これなら
わたしが気にしている「動的」だから云々は考えなくていいので、便利
でわかりやすいですね。非常に参考になりました。




1008 Re^11: 空行挿入機能について コメント数:  1件
  K2  | 2001/01/31 (水) 16:36
 http://web.kyoto-inet.or.jp/people/koyabu/
(つづき)

で、TMenuItemのOnClickにTEditorを操るコードを書きますが、
現状ではキーを投げることしかできません。ここで、各動作が一つのメソッド
として提供されていれば、直接そのメソッドをたたけばよいですし、
もしTNotifyEventなら、動的にですが、直接TMenuItemのOnClickに
代入することで動作を実現できます。
TActionのショートカットキー処理は、ほぼTMenuItemのショートカット
処理と同じですので、これをイメージすればよいと思います。

汎用コンポに、こういう機能を載せるのは得策かどうかは別の議論で、
かとちんさんの案のように、あくまでもクライアントの方で工夫を
するべきなのかもしれません。が、結局キーを投げたり、特別な工夫をしないと
うまくいかないというのがスマートじゃないので、一長一短だと
思います。



1007 Re^10: 空行挿入機能について コメント数:  2件
  K2  | 2001/01/31 (水) 16:35
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。風邪をひいてしまって、謹慎中です。

> TAction を使ったこと無しで書いてますが、TEditor に接続出来て、TAction
> にも接続出来る TComponent 直系コンポは考えられますか?

はずしているかもしれませんが、TMenuItemを考えてみてください。
普通は、設計時にメニューを設計し、TMenuItemのハンドラはメインフォーム
の方に作成し、そこからTEditorをいじるという流れになります。
たとえば、カーソルの左右上下移動のキーまでカスタマイズしようとすると、
TActionを使わないとすれば、メニューを使うのが一番手っ取り早いです。
TEditorのポップアップに上下左右を用意し、Visibleをfalseにし(確か、
Visibleをfalseにしてもショートカットキーは生きていたと思う。うろ覚え
ですが)、TMenuItemのショートカットキープロパティにショートカットを
与えます。(つづく)



1006 選択範囲のフォントの種類や大きさを変更したいのですが コメント数:  3件
  shugo   | 2001/01/31 (水) 05:19
選択範囲のフォントの種類や大きさを変更したいのですが
どうすればいいのでしょうか?



1005 Re^11: 空行挿入機能について コメント数:  0件
  かとちん  | 2001/01/31 (水) 04:25
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato/download/hedtActs.txt
はい、かとちんです。
そういうわけで、いっちょあがりのソースが上記URL↑です。
拡張子を pas に変えて、任意のパッケージに追加してインストールしてください。

とりあえずのサンプルですので、まだまだ動作(Operationプロパティ)の
列挙値は増やす必要があるでしょう。

それと汎用アクションにしたので、イメージリソースを最初から用意できません。
個別に派生アクション
(TEditorKeyBindPageUp = class(TCustomEditorKeyBindAction) のように作る)
を1つ1つ作ってあげるとOperationを固定化させてイメージリソースも含められる
ことができますのですが、その辺りは興味があったらまた私に聞いてください。

このようなものを用意することで、ShortCutのキー割り当てを変えたり、
そのまんまメニューやツールボタンにしたりと便利なんですよー。 > 本田さん



1004 Re^10: 空行挿入機能について コメント数:  7件
  かとちん  | 2001/01/31 (水) 02:06
 http://pc2.techno-ware-unet.ocn.ne.jp/~kato
はーい、途中参加します。
どっちかというと、TEditor でどうこうするのではなく、
「TEditor用の標準アクション」を用意するというのが妥当な気がします。
もちろん TEditor に1つ1つの動作制御を行うメソッドを用意するという
のは良いと思いますが、TNotifyEvent 型のメソッドを外部が割り付けるために
用意するというのは得策ではないと思うんです。できるけどスマートじゃないし
ユーザが理解に苦しみそうな気がします。

標準アクションを作って設計時ライブラリに登録する方法については、
私は一応情報を持っているので伝えられます(長くなるのでここでは言及しません)。

例えば TEditorKeyBindAction というようなアクションを用意し、こいつは
プロパティとして、TEditorの参照プロパティと、キー種別プロパティを
新たに Published プロパティとして用意する。で、このアクションのインスタンス
を必要なキー制御の分だけアクションリストプロパティエディタ上で追加して
いくってのがスマートじゃありませんでしょうか。
Execute メソッドでキー種別毎のメソッドを 参照している TEditor に発行する
という処理を書けば、いっちょあがりです。



1003 Re^9: 空行挿入機能について コメント数:  11件
  本田勝彦  |  2001/01/30 (火) 23:41
 http://member.nifty.ne.jp/~katsuhiko
> TActionはコマンドの数だけ用意しますので、TEditorの受けも各機能について
> 一つ用意しています。カーソルの右・左移動についても一つずつ用意します。
> で、本体クラスで動的に接続して各機能をメニューやショートカットキー
> から使えるようにします。

ご理解ご理解(^^:

> 一般で使うには、この「動的」じゃないとだめというのがネックだろうな……

TAction を使ったこと無しで書いてますが、TEditor に接続出来て、TAction
にも接続出来る TComponent 直系コンポは考えられますか?




1002 Re^8: 空行挿入機能について コメント数:  12件
  K2  | 2001/01/30 (火) 09:23
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。

> 解説どうもです。
> TEditor 側の仮称 CommandProc(Sender: TObject) は、一個で済ましてるんですか?それとも OnExecute で処理を分岐しているのですしょうか?

TActionはコマンドの数だけ用意しますので、TEditorの受けも各機能について
一つ用意しています。カーソルの右・左移動についても一つずつ用意します。
で、本体クラスで動的に接続して各機能をメニューやショートカットキー
から使えるようにします。

一般で使うには、この「動的」じゃないとだめというのがネックだろうな……




1001 Re^7: 空行挿入機能について コメント数:  13件
  本田勝彦  |  2001/01/30 (火) 06:25
 http://member.nifty.ne.jp/~katsuhiko
解説どうもです。
TEditor 側の仮称 CommandProc(Sender: TObject) は、一個で済ましてるんですか?それとも OnExecute で処理を分岐しているのですしょうか?