~katsuhiko メッセージボード

back 2701-2750

2751-2800

2801-2850


2800 Re: EditorUndoObj コメント数:  2件
  本田勝彦 2004/01/15 (木) 19:11
複数の TEditor を生成して、1個だけ見せておく。切替には BrigToFront で
該当 TEditor を前へ持って来る。

というのが、一番簡単ですね。



2799 EditorUndoObj コメント数:  3件
  KJ 2004/01/15 (木) 13:35
こんにちは。

現在エディタを作っていてタブなどを使って新しいインスタンスを作成せず、
1このエディタ(TEditor)で複数ファイルの編集を行っています。
ファイルの切り替え時に
TEditor.Clear
TEditor.Lines.SetText(PChar('新しいテキスト'));
のように行っております。

Clear メソッドを呼び出すため EditorUndoObj もクリアされてしまって
ファイルを戻した際に EditorUndoObj をもどそうとしてもできないので
EditorUndoObj を変数に保持しておいて後で書きこもうとしたのですが
読み出し専用で書きこめないので困っております。

一時的にEditorUndoObjを保持して後からセットできるような方法はないでしょうか?

何か良い方法ある方よろしければアドバイスいただければ幸いです。



2798 Re^3: Q&Aの「改行マーク以降を選択しないようにする」について コメント数:  0件
  Yokka 2004/01/12 (月) 13:55
Yokkaです。

> 実は、PaintRectSelectedではなく、PaintLineSelectedをいじって、希望の動作は実現できたのですが、
うそでした。
PaintLineSelectedだけでは、だめですね。
勉強します。



2797 Re^2: Q&Aの「改行マーク以降を選択しないようにする」について コメント数:  1件
  Yokka 2004/01/12 (月) 10:58
Kmさん、こんにちは。
いつも、ありがとうございます。

> 過去ログ(2002/4/11)の[2234] 改行以降の領域描画 で話題になったのですが、
> 結論は[2241] Re^2: 改行以降の領域描画
> >PaintRectSelected を書き換えてご希望の動作を実現して下さい。
>
> とのことです。

ありがとうございます。
過去ログを見つけられませんでした。

実は、PaintRectSelectedではなく、PaintLineSelectedをいじって、希望の動作は実現できたのですが、
TEditorを直接触らずに実現できるのであれば、その方がありがたいと思いまして・・・。

ご指導ありがとうございました。



2796 Re: Q&Aの「改行マーク以降を選択しないようにする」について コメント数:  2件
  Km 2004/01/12 (月) 09:31
Yokkaさん、こんちは。

> 「TEditor Q&A」にある「改行マーク以降を選択しないようにする」の件です。
> Q&Aのまま、Form1のEditor1DrawLineに書きますと、普段は正常に表示されますが、
> 横スクロールが発生したときに、表示が乱れます。
> これは、TEditorのバージョンアップともに使用できなくなった古いサンプルと考えればよいのでしょうか?
> また、現在のバージョンで、目的を実現する方法はありますでしょうか?

過去ログ(2002/4/11)の[2234] 改行以降の領域描画 で話題になったのですが、
結論は[2241] Re^2: 改行以降の領域描画
>PaintRectSelected を書き換えてご希望の動作を実現して下さい。

とのことです。



2795 Q&Aの「改行マーク以降を選択しないようにする」について コメント数:  3件
  Yokka 2004/01/11 (日) 20:31
Yokkaです。
お世話になっております。

またもや、お教え願いたいことがあります。

「TEditor Q&A」にある「改行マーク以降を選択しないようにする」の件です。
Q&Aのまま、Form1のEditor1DrawLineに書きますと、普段は正常に表示されますが、
横スクロールが発生したときに、表示が乱れます。
これは、TEditorのバージョンアップともに使用できなくなった古いサンプルと考えればよいのでしょうか?
また、現在のバージョンで、目的を実現する方法はありますでしょうか?
どうぞ、よろしくお願い致します。



2794 Re^2: taka36さんについて コメント数:  0件
  るるとん@K 2004/01/10 (土) 09:48
 http://hp.vector.co.jp/authors/VA036010/
> > taka36がさいごに書き込んだのはいつですか?
>
> Googleで~katsuhiko taka36 で検索したら、2000/3/12のようですけど、こんな情報何に使うのですか?ってプロフィール見てびっくり。わかっ!

2002/4/3 新しいエディタを開発開始
2002/5 約70%ほど完成
その後サイト更新、ソフト公開無し
メール送信→エラーメール



2793 Re: taka36さんについて コメント数:  1件
  Km 2004/01/08 (木) 20:54
> taka36がさいごに書き込んだのはいつですか?

Googleで~katsuhiko taka36 で検索したら、2000/3/12のようですけど、こんな情報何に使うのですか?ってプロフィール見てびっくり。わかっ!



2792 taka36さんについて コメント数:  2件
  るるとん@K 2004/01/08 (木) 20:01
 http://hp.vector.co.jp/authors/VA036010/
taka36がさいごに書き込んだのはいつですか?



2791 Re^5: ページコントロールへのドッキングでEOSError コメント数:  0件
  本田勝彦 2004/01/07 (水) 23:25
> とコンパイラオプションでくくって下さい。実現部もね。

くくったモノを TEditor ver 2.48 としました。



2790 Re^2: 公開 コメント数:  0件
  本田勝彦 2004/01/07 (水) 23:24
> TEditor ver 2.48のリンクが2.47になってます。

すいません。直しました。ご指摘に感謝。



2789 Re: 公開 コメント数:  1件
  Km 2004/01/07 (水) 23:08
> TStringsPrinter ver3.3
> TEditor ver 2.48
>
> 公開です。

TEditor ver 2.48のリンクが2.47になってます。



2788 公開 コメント数:  2件
  本田勝彦 2004/01/07 (水) 22:16
TStringsPrinter ver3.3
TEditor ver 2.48

公開です。



2787 Re^4: ページコントロールへのドッキングでEOSError コメント数:  1件
  本田勝彦 2004/01/07 (水) 21:46
CreateWindowHandle の override ですが、D2ではやってはいけないようです。
HViewEdit が開けなくなって焦りました。

D2をお使いの方は
{$IFDEF COMP3_UP}
procedure CreateWindowHandle(const Params: TCreateParams); override;
{$ENDIF}
とコンパイラオプションでくくって下さい。実現部もね。



2786 Re^2: TStringsPrinter Ver3.3b3 コメント数:  0件
  本田勝彦 2004/01/07 (水) 13:02
ありがとうございます。今夜にも ver3.3 を公開したいと思います。

ExpandTab をコンポーネントエディタに取り入れなければ。と忘れないように
書いておこ。



2785 Re: TStringsPrinter Ver3.3b3 コメント数:  1件
  Km 2004/01/07 (水) 06:50
本田勝彦さん、こんにちは。

> ver 3.3 beta 3 公開しました。
> お試しあれ〜

さっそく試しました。上手く動いているようです。
タブがいっぱいあっても大丈夫見たいです。



2784 Re^3: ページコントロールへのドッキングでEOSError コメント数:  2件
  本田勝彦 2004/01/06 (火) 23:52
最近、過去ログの置き場所の tripod が infoseek に統合されてしまい、
yahoo で検索しても出て来なくなりました。ご迷惑をお掛け致します。

困ったモンだわぁ。



2783 TStringsPrinter Ver3.3b3 コメント数:  2件
  本田勝彦 2004/01/06 (火) 19:11
ver 3.3 beta 3 公開しました。
お試しあれ〜



2782 Re^2: ページコントロールへのドッキングでEOSError コメント数:  3件
  もも 2004/01/06 (火) 18:09
> CreateWindowHandleをoverrideしていないのが原因です。
> ver2.46でfixされています。

ありがとうございます!うまく行きました。

最近の履歴にあったのですね・・見つけられずに質問してしまい、申し訳ありませんでした。

今後とも宜しくお願い致します。

参照:『OS機能呼び出し失敗』[2003/09/28 (日) 23:57]



2781 Re^2: TStringsPrinter Ver3.3b2 コメント数:  3件
  本田勝彦 2004/01/06 (火) 13:24
うむ〜。書いた通りに動いていますね。(笑)直します。



2780 Re: TStringsPrinter Ver3.3b2 コメント数:  4件
  Km 2004/01/06 (火) 06:51
> ver 3.3b2 公開です。例によって開発日誌のページです。

お疲れ様です。
折り返し位置にタブ文字がかかる場合、そこだけ背景色がかけてました。
→をタブ文字とすると、折り返しの手前のタブ文字から折り返しまでの背景色。

//→ → → → → → → <
a




2779 TStringsPrinter Ver3.3b2 コメント数:  5件
  本田勝彦 2004/01/06 (火) 02:28
ver 3.3b2 公開です。例によって開発日誌のページです。



2778 Re: ページコントロールへのドッキングでEOSError コメント数:  4件
  にしの  | nishino@overs.jp 2004/01/05 (月) 23:39
> TEditor version 2.45

CreateWindowHandleをoverrideしていないのが原因です。
ver2.46でfixされています。
この件だけではないですが、バグが出た場合、できるだけ最新にしてみた方がよいですよ。



2777 ページコントロールへのドッキングでEOSError コメント数:  5件
  もも 2004/01/05 (月) 21:48
TEditor version 2.45
Win2000 Del7Entで開発しております。

256KBより少し大きいサイズのデータを持つTEditがあり、そのTEditを含むフォームが、ページコントロールにドッキングする時に、

---------------------------
デバッガ例外が発生
---------------------------
プロジェクト Project1.exe が EOSError クラスの例外を生成しました。
'システムエラー。コード:6.
ハンドルが無効です。'
プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
---------------------------
OK ヘルプ(H)
---------------------------

というエラーになってしまいます。これは皆さんの環境でも同じでしょうか?

どうやら、256KBあたりが境界で、それよりもデータが少ないとうまく行き、それ以上だと上記エラーになるようです。



2776 Re: TStringsPrinter Ver3.3b コメント数:  6件
  Km 2004/01/05 (月) 00:47
> そうですね。> L でも良いかもしれないです。ループの先頭で判別してるし。
> > L にすると旨く行きますか?

はい、うまくいきます。

> いずれにしても、折り返し処理のロジックをもう一度考えて見ます。

お疲れ様です。。。



2775 Re^2: TStringsPrinter Ver3.3b コメント数:  7件
  本田勝彦 2004/01/04 (日) 23:40
そうですね。> L でも良いかもしれないです。ループの先頭で判別してるし。
> L にすると旨く行きますか?

いずれにしても、折り返し処理のロジックをもう一度考えて見ます。



2774 Re: TStringsPrinter Ver3.3b コメント数:  8件
  Km 2004/01/04 (日) 23:13
> あとついでですが、稚拙のMailFountainとTextFountainでは、引用行をとして
> SourcePosが0の時のみ反応するようにしています。TEditor上は色付けは上手
> いくのですが、TStringsPrinterだとSymbolと認識されてしまいます。
> 直前の行が改行だけ場合はTStringsPrinterでも上手くいきます。
> 1604行目のParser.NewData(S, Data);で上手くパースされてないようなのです
> がこれも1行文字列の取得と関係しているかも知れないです。

色々と試行錯誤してみたのですが、1633行目
if Parser.SourcePos + Parser.TokenLength >= L then
begin
// トークンの位置が、List[I] の文字列長を越えた場合
// 該当行 List[I] の文字列だけを描画するための処理
Buf := Copy(S, Parser.SourcePos + 1, L - Parser.SourcePos);
DrawToken;
Break;
end
の=が不要に思えるのですが、どうでしょうか。



2773 Re: TStringsPrinter Ver3.3b コメント数:  9件
  Km 2004/01/04 (日) 18:30
> 自信無しな部分ですが、タブ文字をいっぱい含んだ文字列が折り返された時
> 2行目以降のタブの展開数が怪しいのです。

確かに何かおかしいですね。
動きを見ていると、折り返し位置(S[I]の長さ)が違うためじゃないですか?
画面上の折り返し位置(例えば31桁)にして、フォントサイズを大きく
(MSゴシック32)して、画面上とプレビュー上の折り返し位置を合わせてみる
とずれないようです。

> それと、これは TFountain の問題なのですが、コメントに背景色を指定し、
> 折り返しによって空白やタブが2行目以降の行頭にある場合の動作が変です。

こういう仕様かと思ってました。。。
あとついでですが、稚拙のMailFountainとTextFountainでは、引用行をとして
SourcePosが0の時のみ反応するようにしています。TEditor上は色付けは上手
いくのですが、TStringsPrinterだとSymbolと認識されてしまいます。
直前の行が改行だけ場合はTStringsPrinterでも上手くいきます。
1604行目のParser.NewData(S, Data);で上手くパースされてないようなのです
がこれも1行文字列の取得と関係しているかも知れないです。



2772 Re^2: TStringsPrinter Ver3.3b コメント数:  10件
  本田勝彦 2004/01/04 (日) 13:31
ありがとうございます。

自信無しな部分ですが、タブ文字をいっぱい含んだ文字列が折り返された時
2行目以降のタブの展開数が怪しいのです。

それと、これは TFountain の問題なのですが、コメントに背景色を指定し、
折り返しによって空白やタブが2行目以降の行頭にある場合の動作が変です。

うむ〜



2771 Re: TStringsPrinter Ver3.3b コメント数:  11件
  Km 2004/01/04 (日) 10:23
本田勝彦さん、こんにちは。

> ver 3.3b を公開しました。ちょっと自信なしモードですが。
> 開発日誌のページに置きました。

早速試してみました。上手くいってます。
ちょっと長めのC++ファイルで、WinXPとWin2Kの両方で試したところ、
こちらも上手くプレビュー/印刷(PDF化)できてました。
#カラープリンタ持ってないのでAcrobatでPDF化してます。



2770 Re^3: TStringsPrinter Ver3.2 コメント数:  12件
  本田勝彦 2004/01/04 (日) 04:22
ver 3.3b を公開しました。ちょっと自信なしモードですが。
開発日誌のページに置きました。



2769 Re^3: タブ→空白変換 コメント数:  0件
  本田勝彦 2004/01/04 (日) 01:45
2倍速おめでとうございます。ハマり始めましたね。楽しんで下さい。



2768 Re^2: タブ→空白変換 コメント数:  1件
  いくぼ 2004/01/04 (日) 01:24
本田さん、コメントありがとうございます。
すこしでも速度を稼ぐために

S := S + ExpandTab(Lines[I]) + #13 + #10

なんぞとアレンジしてみましたら、List の方が速かったです。
(2倍以上=当社比)

ポピュラーな機能だと思うのですが、
エディタ作者の皆さんはどういうふうにされているのでしょうね。



2767 Re: タブ→空白変換 コメント数:  2件
  本田勝彦 2004/01/03 (土) 17:20
速いかどうかは試してみないとわかりませんが、
var
I: Integer;
List: TStringList;
begin
List := TStringList.Create;
try
for I := 0 to Editor1.Lines.Count - 1 do
List.Add(Editor1.ExpandTab(Editor1.Lines[I]));
Editor1.Lines.Text := List.Text;
finally
List.Free;
end;
end;

と、私ならやりますね。



2766 タブ→空白変換 コメント数:  3件
  いくぼ 2004/01/02 (金) 22:53
ExpandTab を使って「タブ→空白変換」をやろうとしたのですが、

with Editor1 do
Lines := ExpandTab(Lines.Text);
end;

だと全テキストが1行とみなされるのか、思い通りの半角空白数に
なりませんでした。

with Editor1 do
begin
for I := 0 to Lines.Count - 1 do
begin
Lines[I] := ExpandTab(Lines[I]);
end;
end;

だと遅くなりますし。

どうするのが効率が良いのでしょうか。



2765 Re^3: 矩形選択状態で編集する方法について コメント数:  0件
  本田勝彦 2004/01/02 (金) 09:33
手本にした Delphi2 のコードエディタがそういう動作だったということ以外には理由はないのですが、そういう仕様です。
でもいじっていて、なるほどと思いながら実装した覚えはあります。
何に納得したのかは忘れてしまいましたが。




2764 Re^2: 矩形選択状態で編集する方法について コメント数:  1件
  ざぶ 2004/01/01 (木) 23:49
本田さんこんばんは
> SelIndent メソッドの実装が参考になるとおもいますが、

おかげさまで大分コーディングできてきましたが
少し気になることがあります。
SelIndentって、通常選択状態のときは、スペースが増えた分
選択範囲が動きますが、
矩形選択状態のときは、スペースが増えた分選択範囲が動かないのですね。



2763 Re^2: 矩形選択状態で編集する方法について コメント数:  0件
  ざぶ 2004/01/01 (木) 00:36
あけましておめでとうございます。
お返事ありがとうございます。
この動作については、サクラエディタを参考にしています。
まだ未確認ですが、WZeditorも同様の動作をすると思われます。

Enterや、Bsは通常選択状態と同じでよいと考えているので
若干楽なのですが、入力文字数が多くなり折り返しの文字数制限を
超えたときの動作の保障が難しそうです。
ちなみにサクラエディタは動作がおかしくなります。

> SelIndent メソッドの実装が参考になるとおもいますが、
> 選択領域を移動するのが面倒な感じがしますね。

を参考にしてみます。
変更するモジュールは
TEditor.PutStringToLine
なのかなとあたりをつけています。



2762 Re: 矩形選択状態で編集する方法について コメント数:  3件
  本田勝彦 2003/12/31 (水) 23:23
SelIndent メソッドの実装が参考になるとおもいますが、
選択領域を移動するのが面倒な感じがしますね。

矩形選択状態の SelText は、TStringList.Text にそのまま代入出来るので、
メニューから矩形選択領域の前に入れる文字列を入力させて処理する方法で
あれば、実装は楽だと思います。
が、バックスペースや他の入力にも対応させるのはかんなり骨だと思いますよん。



2761 矩形選択状態で編集する方法について コメント数:  4件
  ざぶ 2003/12/31 (水) 20:26
ノーマル選択状態で文字入力を行うと、選択領域がクリアされた後に
文字が入力されると思います。

この動作を矩形選択状態のみ変えたいと考えています。

矩形選択状態で文字を入力した場合、矩形選択範囲の先頭に一律同じ文字を
入力したいのです。

たとえば
aaa|aaaaa|aaa
bbb|bbbbb|bbb
ccc|ccccc|ccc  ← '|'内は矩形選択領域
という状態で 123と入力した場合

aaa123|aaaaa|aaa
bbb123|bbbbb|bbb
ccc123|ccccc|ccc  ← '|'内は矩形選択領域

という風に動作させたいと考えています。

そこで、HEditor.pasを見て考えているのですがよいアドバイス
いただけないでしょうか?

TEditor.WMChar
TEditor.SetSelTextBox
TEditor.SetSelTextBuf
あたりが参考になると考えているのですが・・・

矩形選択領域をドラッグ&ドロップできるということは
そのあたりの関数を旨く使えるのではと思うのですが
まだ関数の依存関係がよく解っていないもので・・・

よろしくお願いします。



2760 Re^2: TStringsPrinter Ver3.2 コメント数:  13件
  本田勝彦 2003/12/31 (水) 13:24
win98se でも確認できました。
TextWidth はタブを考慮しないということですね。

メタファイルの描画領域に収まるように折り返し処理をしている部分も
TextWidth だけで判別しているので、この部分も考慮する必要があることからも
タブ文字の展開数をプロパティ化して ExpandTab する方法が有効であるように
思います。

考えて見ます。



2759 Re: TStringsPrinter Ver3.2 コメント数:  14件
  Km 2003/12/31 (水) 01:07
ExpandTabのソースをコピーして来て少し手を加えてみました。
上手くいきそうなのですが、タブの桁数は8固定でしたっけ?
プロパティなかったと思うけど見落としてたらごめんなさい。
タブの桁数を指定できるといいな。。。ExpandTab(Buf)を常に
かませばできそうな気もするけど、どうでしょうか。



2758 Re: TStringsPrinter Ver3.2 コメント数:  15件
  Km 2003/12/31 (水) 00:03
> この部分は TCanvas.TextWidth を利用しています。
>
> XP では、GetTextExtentPoint32 Windows API の実装が変わって、
> タブ文字の扱いが変わったということかしらん?

また調べてみたのですが、どうやらWin2Kでも同じでした。
Win2Kの場合aaaの背景も塗られているので気がつきませんでしたが、
タブを3つほど入れると領域が塗りつぶされてない事がわかりました。




2757 Re^2: TStringsPrinter Ver3.2 コメント数:  16件
  本田勝彦 2003/12/30 (火) 23:00
この部分は TCanvas.TextWidth を利用しています。

XP では、GetTextExtentPoint32 Windows API の実装が変わって、
タブ文字の扱いが変わったということかしらん?




2756 Re: TStringsPrinter Ver3.2 コメント数:  17件
  Km 2003/12/30 (火) 14:41
本田勝彦さん、こんにちは。年の瀬ですね。

> ver 3.2 公開しました。

今までタブ文字を使っていなかったので気が付かなかったのですが
タブが入った場合の領域計算がずれてるようです。(XPのみ)

例えば以下の文字列を例とします。((タブ)はタブ文字)
//(タブ)aaa

Win2Kの場合、Commentの背景色をセットすると行全体が強調されてます。
//(タブ)aaa
^^^^^^^^^^^

WinXPの場合、途中までしか強調されてませんでした。
//(タブ)aaa
^^^^^^
手が空いているときにでもよろしくお願いします。



2755 Re^17: TStringsPrinter Ver3.1について コメント数:  0件
  本田勝彦 2003/12/27 (土) 19:27
リンクさせていただきました。



2754 TStringsPrinter Ver3.2 コメント数:  18件
  本田勝彦 2003/12/27 (土) 19:23
ver 3.2 公開しました。



2753 Re^3: TStringsPrinter Ver3.1について コメント数:  19件
  本田勝彦 2003/12/27 (土) 18:52
> まだあまり使い込んではいませんが、XP、Meともに問題はありませんでした。

おぉいかったいかった。でわ、ver 3.2 を公開致したいと思います。
情報ありがとうございます。



2752 Re^2: TStringsPrinter Ver3.1について コメント数:  20件
  KNT 2003/12/27 (土) 13:53
> がんばりました。開発日誌のページに stringsprinter32b.lzh を置きました。
> stringsprinter.pas のみになりますが、XP 使いの方々にお試し頂ければ幸いです。

まだあまり使い込んではいませんが、XP、Meともに問題はありませんでした。
本田さん、Kmさん、にしのさん、ありがとうございました。



2751 Re^16: TStringsPrinter Ver3.1について コメント数:  1件
  にしの 2003/12/26 (金) 12:04
 http://www.overs.jp/software/
> ウチにも引き延ばし機あります(フジのカラーステーション)
> そうかぁ。そういう仕事に携わった方とお話していたとは思いませんでした。
>
> リンクにさせてもらってよろしいですか?

お願いしますm(_ _)m
まだリンクページすら作っていないので恐縮ですが・・・。
冬休み中にサイト整備しますんで、そのときにリンクさせてもらいます。