90日間書き込みが無いと削除される運命です。
お世話になります。Maeと申します。
Delphi2009に対応したTEditorを作成しました。描画速度はとりあえず置いておいて、見た目正しく動作することを主眼に作成しています。TEditorが使用できないという理由でDelphi2009を使うのをためらっている方の手助けになれれば幸いです。
おそらく、このままでは実用に不向きですが、まったくコンパイルが出来ない状況よりは手をつけやすくなるかと思います。
※私の修正分のライセンスは主張しません。TEditor本体のライセンスにしたがって扱っていただくことを希望します。
http://homepage3.nifty.com/escargot/temp/hedit248U.lzh
そのまま配布してよいものかどうかわかりませんでしたので、問題あるようでしたら指摘ください。
大体、以下のような改造が施されています。(v2.48ベース)
1. 有る程度バランスよくプロポーショナルフォントを表示する
*左端の文字先頭が切れて表示される欠点あり
2.HitTextプロパティ追加。このプロパティに一致している部分を全てハイライト表示(サクラエディタ風)
3.MBCSフォントとANSIフォントを別指定できるようにする
4.Unicode対応 (Delphi2009でコンパイルする必要あり)
*MethodTableとTokenMethodTableを関数化しているため、〜Fountain.pasの互換性がなくなっています。
それぞれ、SetMethodTable()、SetTokenMethodTable()関数を呼び出す形に置き換える必要があります。
5.Unicode対応版の場合、LoadFromFile()はVCL本体のものをInherited呼び出しする形にしています。
1〜3は個人的趣味で実装していたもので、本来ならUnicode対応部分と分離して配布すべきと思いますが、これらの機能を実装するために行った改造を流用してUnicode対応を行ったため分離せずに配布します。 これらの改造を先に行っていたおかげでUnicode対応は比較的スムーズに進みました。ただし、2の改造で、文字を1文字ずつ描画するようにしたせいか、Unicode版にすると、すこぶる表示速度が遅くなりますので改善が必要と考えています。
※Unicodeサポートにあたり、DEKOさんの記事とMECSユーティリティー関数群のお世話になりました。
今回UPしたファイルに含まれるMECSUtilsには結合文字の判定関数を追加しています。
OnKeyDown イベントハンドラに色々処理を書く。
ということではなくてですか?
>>1
コメント頂き、ありがとうございます。
質問した後で、まずコンポーネントへの入力をキャンセルすればいいんじゃないかと思いつき、その線でいろいろ調べましたところ、OnKeyPress の Keyの値を0にして一部のキーボードの入力を無効にすることができました。ですが、この方法ですと CTRL+C,CTRL+V などが無効にできないため、さらに調べてApplicationEventsMessage でキーコードを入れ替えるというのを試しているところです。
お聞きしたかったのは、コンポーネント自体にキーカスタマイズの機能があるかどうかだったのですが、そういうのは装備されていないようですね・・・。
私はDelphiであまり複雑なプログラムは作れませんので、調べてみてできなければあきらめます。
できるようでしたら、また質問させて頂く事もあるかと思いますので、そのときは宜しくお願い致します。
いつも参考にさせていただいています。
現在、HTMLソースを表示させるエディタを作成しております。その際に、タグで囲まれた領域はすべて同一のスタイルで表示し、"〜"で囲まれた領域のみ別のスタイルで表示したいと考えています。
探したところ、このページのQ&Aにサンプルを掲載いただいていたので、試してみたのですが、残念ながらうまくいきませんでした。(UsesにEditorFountainを追加してコードを記述し、コンパイルを試みましたが、CreateWithEditorやInvalidBracketIndexが未定義などと表示されます。)
これを解消するにはどのようにすればよいでしょうか。突然のお願いで恐縮ですが、よろしくお願いいたします。
参考までに、当方の環境は次のとおりです。
WinXP SP3 + Delphi 6 + TEditor2.52
業務お忙しいのでしょうか… とりあえず、もう少しだけ補足情報を。
これの対応方法としてはHTMLFountainを利用しろ、という話になるのかもしれませんが、HTMLFountainの場合、例えば
<A HREF="">
のAとHREFは別の要素として考慮されます。そのため、フォントスタイルに下線を指定した場合、スペースのところでぶつぶつと切れてしまい、見にくくなってしまっています。
また、
<!doctype html>
などのように、タグの直後に半角英字以外の文字が来てしまうと、その部分はタグ内の文字であるにもかかわらず強調表示されません。
強調ルールを初心者の人にも分かりやすいよう、きわめてシンプルにしようと思い、上のようなことをしたいと思いました。
お答えいただくことは難しいでしょうか?
お忙しいご様子でしたので、
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200908/09080023.txt
にて、同一の質問をさせていただいております。
そちらで回答をいただけましたら、こちらにも結果をお知らせしたいと思いますので、なにとぞご容赦いただきますよう、お願いいたします。
Q&A へ上げました。
完璧ではないと思いますが、雰囲気は
ご理解頂けるかと思います。
TEditorの派生コンポーネントであるTEditorExを使うと簡単に実現できると思います。
他にも拡張機能がたくさんついてるので便利だと思いますよ。
ttp://homepage2.nifty.com/Km/download.htm
>>1
ありがとうございました。参考にさせて頂きます。
>>2
TEditorExを拝見したところ豪華すぎて使いこなせないようです。
標準のTEditorでアンダーラインを全く使わないので、アンダーライン描画のルーチンを書き換え出来ないでしょうか?
最近のEditorではアンダーラインよりアクティブな行のハイライトが主流だと思いますし、喜ばれる方が多いのではないでしょうか?
ちなみに初心者Aとは名乗っていますが、けっこう古株です。
>>3
ご要望のアクティブな行のハイライトも、TEditorExで設定可能です。
ExMarks.CurrentLine.Visible:=Trueで、ONになります。
コメント
>>20
Maeさん
納得がいかないのですが、2.48U_R3をベースに少しずつ変更し、2.52Uにするとコンパイルできました。
お騒がせしました。
少しずつ変更していたからこそ気づいたのですが、
$ifdef DRAW_TAB_MARK
が無くなったのですね。
オリジナルに無いので消したのですか?
>>23
インストール出来て安心しました。
TAB_MARKの件は、中途半端な対応(選択した際にマークが消える)なので削除しました。他の方の改造のたたき台とする際に中途半端な機能が追加されていたら扱いにくいと思いまして。
もし、中途半端な対応のままでよければ2.48Uからマージして使っていただいて結構ですよ。
Mae さんの改造版をベースに改造してみました。
http://homepage1.nifty.com/ht_deko/ft1001.html#100128
[TEditor 2.52 for "Unicode 版 Delphi"]
http://www.geocities.jp/ht_deko/software/hedit252U_modified.zip
# 今日は書き込めたぞ (w
こんにちは。
ユニコード対応ありがとうございます。
私がさっさとやれば良いのですが、パノラマ撮影と360度VRという
テーマに惹かれて css やら flash やらとお勉強の日々です。
そのためのツール作りで Delphi を触らない日はない生活ですが、
TEditor にまでは時間がまわっていません。
#css, flash をやればやるほど、ユニコード対応が必要になって来ています。
配布の方法ですが、以前 km さんや Mae さんが拡張版を公開されて
いらっしゃるので、それにならっていただければと思います。
よろしくお願い致します。
こんにちは。
> TEditor にまでは時間がまわっていません。
おけーです。
本田さんの手が空くまで改良しときます (^^;A
ダイアクリティカルマーク付きの文字に対応してみました。
[TEditor 2.52 for "Unicode 版 Delphi"]
http://www.geocities.jp/ht_deko/software/hedit252U_modified.zip