@niftyレンタル掲示板

掲示板の使い方

12>>

[TEditor]Delphi2009用 改造版2.48

  • Mae
  • 2009/02/11 03:52

お世話になります。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には結合文字の判定関数を追加しています。

  • コメント
    • 23.kuze
    • 2009/04/06 03:26

    >>20
    Maeさん
    納得がいかないのですが、2.48U_R3をベースに少しずつ変更し、2.52Uにするとコンパイルできました。
    お騒がせしました。
    少しずつ変更していたからこそ気づいたのですが、
    $ifdef DRAW_TAB_MARK
    が無くなったのですね。
    オリジナルに無いので消したのですか?

    • 削除
    • コメント
    • 24.Mae
    • 2009/04/08 22:58

    >>23
    インストール出来て安心しました。
    TAB_MARKの件は、中途半端な対応(選択した際にマークが消える)なので削除しました。他の方の改造のたたき台とする際に中途半端な機能が追加されていたら扱いにくいと思いまして。

    もし、中途半端な対応のままでよければ2.48Uからマージして使っていただいて結構ですよ。

    • 削除
    • コメント
    • 40.DEKO
    • 投稿者のメール
    • 投稿者のホームページ
    • 2010/01/30 08:22

    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

    • 削除
    • コメント
    • 41.ほんだ
    • 2010/02/02 01:48

    こんにちは。

    ユニコード対応ありがとうございます。
    私がさっさとやれば良いのですが、パノラマ撮影と360度VRという
    テーマに惹かれて css やら flash やらとお勉強の日々です。
    そのためのツール作りで Delphi を触らない日はない生活ですが、
    TEditor にまでは時間がまわっていません。

    #css, flash をやればやるほど、ユニコード対応が必要になって来ています。

    配布の方法ですが、以前 km さんや Mae さんが拡張版を公開されて
    いらっしゃるので、それにならっていただければと思います。

    よろしくお願い致します。

    • 削除
    • コメント
    • 42.DEKO
    • 投稿者のメール
    • 投稿者のホームページ
    • 2010/02/02 19:31

    こんにちは。

    > TEditor にまでは時間がまわっていません。
    おけーです。
    本田さんの手が空くまで改良しときます (^^;A

    ダイアクリティカルマーク付きの文字に対応してみました。

    [TEditor 2.52 for "Unicode 版 Delphi"]
    http://www.geocities.jp/ht_deko/software/hedit252U_modified.zip

    • 削除
    • コメント

TEditorについての質問

  • monoki
  • 2008/12/20 18:00

こんにちは。DelphiでWordStarライクなエディタを作りたいと思い、いろいろ調べているのですが、こちらのTEditorコンポーネントでキーアサインを自分の思ったとおりにカスタマイズするにはどうすればいいのでしょうか?(Delphi7 Proの環境です)宜しければお教え下さい。

  • コメント
    • 1.ほんだ
    • 2008/12/22 14:45

    OnKeyDown イベントハンドラに色々処理を書く。
    ということではなくてですか?

    • 削除
    • コメント
    • 2.monoki
    • 2008/12/22 18:06

    >>1
    コメント頂き、ありがとうございます。
    質問した後で、まずコンポーネントへの入力をキャンセルすればいいんじゃないかと思いつき、その線でいろいろ調べましたところ、OnKeyPress の Keyの値を0にして一部のキーボードの入力を無効にすることができました。ですが、この方法ですと CTRL+C,CTRL+V などが無効にできないため、さらに調べてApplicationEventsMessage でキーコードを入れ替えるというのを試しているところです。
    お聞きしたかったのは、コンポーネント自体にキーカスタマイズの機能があるかどうかだったのですが、そういうのは装備されていないようですね・・・。
    私はDelphiであまり複雑なプログラムは作れませんので、調べてみてできなければあきらめます。
    できるようでしたら、また質問させて頂く事もあるかと思いますので、そのときは宜しくお願い致します。

    • 削除
    • コメント

コードからの行追加は可能なReadOnlyの実現方法は?

  • kuze
  • 2009/08/11 01:34

ReadOnlyのモードにすると、コードからの文字列の追加も出来なくなりますが、
コードからの文字列追加が可能だけれど、ユーザーからは編集できないようにするにはどうすれば良いでしょうか?
ようするに、情報は自動でどんどん追加されていくけどユーザーは文字を消したり書いたりできないようにしたいのです。

  • コメント
    • 1.ほんだ
    • 2009/08/23 18:37

    Enabled False で行けるような気がします。

    • 削除
    • コメント
    • 2.kuze
    • 2009/08/27 00:06

    >>1
    ほんださんへいつもアドバイスありがとうございます。
    確認してみます。

    • 削除
    • コメント

<>で囲まれた領域内の"〜"部分を別色表示したい

  • MB
  • 2009/07/12 20:25

 いつも参考にさせていただいています。

 現在、HTMLソースを表示させるエディタを作成しております。その際に、タグで囲まれた領域はすべて同一のスタイルで表示し、"〜"で囲まれた領域のみ別のスタイルで表示したいと考えています。

 探したところ、このページのQ&Aにサンプルを掲載いただいていたので、試してみたのですが、残念ながらうまくいきませんでした。(UsesにEditorFountainを追加してコードを記述し、コンパイルを試みましたが、CreateWithEditorやInvalidBracketIndexが未定義などと表示されます。)

 これを解消するにはどのようにすればよいでしょうか。突然のお願いで恐縮ですが、よろしくお願いいたします。

参考までに、当方の環境は次のとおりです。
WinXP SP3 + Delphi 6 + TEditor2.52

  • コメント
    • 1.MB
    • 2009/07/26 22:33

     業務お忙しいのでしょうか… とりあえず、もう少しだけ補足情報を。

     これの対応方法としてはHTMLFountainを利用しろ、という話になるのかもしれませんが、HTMLFountainの場合、例えば

    <A HREF="">

    のAとHREFは別の要素として考慮されます。そのため、フォントスタイルに下線を指定した場合、スペースのところでぶつぶつと切れてしまい、見にくくなってしまっています。

     また、

    <!doctype html>

    などのように、タグの直後に半角英字以外の文字が来てしまうと、その部分はタグ内の文字であるにもかかわらず強調表示されません。

     強調ルールを初心者の人にも分かりやすいよう、きわめてシンプルにしようと思い、上のようなことをしたいと思いました。

    • 削除
    • コメント
    • 2.MB
    • 2009/08/09 20:11

    お答えいただくことは難しいでしょうか?

    • 削除
    • コメント
    • 3.MB
    • 2009/08/14 22:20

    お忙しいご様子でしたので、

    http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200908/09080023.txt

    にて、同一の質問をさせていただいております。
    そちらで回答をいただけましたら、こちらにも結果をお知らせしたいと思いますので、なにとぞご容赦いただきますよう、お願いいたします。

    • 削除
    • コメント
    • 4.ほんだ
    • 2009/08/23 18:38

    Q&A へ上げました。
    完璧ではないと思いますが、雰囲気は
    ご理解頂けるかと思います。

    • 削除
    • コメント

アクティブな行

  • 初心者A
  • 2009/07/30 15:46

こんにちは。
アクティブな行の背景色を淡い黄色にしたいのですが、方法が解りません。
どなた様か教えて下さい。

  • コメント
    • 1.MB
    • 2009/07/30 19:29

    TEditorの派生コンポーネントであるTEditorExを使うと簡単に実現できると思います。
    他にも拡張機能がたくさんついてるので便利だと思いますよ。

    ttp://homepage2.nifty.com/Km/download.htm

    • 削除
    • コメント
    • 2.初心者A
    • 2009/08/01 06:21

    >>1
    ありがとうございました。参考にさせて頂きます。

    • 削除
    • コメント
    • 3.初心者A
    • 2009/08/01 17:40

    >>2
    TEditorExを拝見したところ豪華すぎて使いこなせないようです。
    標準のTEditorでアンダーラインを全く使わないので、アンダーライン描画のルーチンを書き換え出来ないでしょうか?
    最近のEditorではアンダーラインよりアクティブな行のハイライトが主流だと思いますし、喜ばれる方が多いのではないでしょうか?
    ちなみに初心者Aとは名乗っていますが、けっこう古株です。

    • 削除
    • コメント
    • 4.kuze
    • 2009/08/11 01:24

    >>3
    ご要望のアクティブな行のハイライトも、TEditorExで設定可能です。
    ExMarks.CurrentLine.Visible:=Trueで、ONになります。

    • 削除
    • コメント
12>>