~katsuhiko メッセージボード

back 351-400

401-450

451-500


450 そろそろ500 コメント数:  0件
  本田勝彦  | 2000/04/08 (土) 01:29
 http://member.nifty.ne.jp/~katsuhiko
発言になろうとしています。

過去ログで掲示されている 001-300 の発言を削除しようと思います。
今後の皆さんの発言番号がどうなって行くのかちょっと不安です。

こうやるとええよんみないなのありましたら、教えてね(^^;



449 Re: TEditorの安定版など コメント数:  0件
  本田勝彦  | 2000/04/08 (土) 01:16
 http://member.nifty.ne.jp/~katsuhiko
>TEditorの未来バージョンで採用されるであろう縦書き機能ががそのへんを解決してくれたらいいなあと勝手に思っております(^^;)。
> ちなみに私が今使用している縦書き可能なエディタはフリーの「CoolMint Yellow」です( http://www.webinter.net/pbd/)。

頑張りまぁ〜す(^^) CoolMint Yellow は見たことが無かったので、参考に
させて貰います。情報どうもです。



448 Re: [EOF]から行頭にワープしてしまう コメント数:  0件
  本田勝彦  | 2000/04/08 (土) 01:12
 http://member.nifty.ne.jp/~katsuhiko
> そこで、最後の行の[EOF]の横でCtrl+右を押すと、何故かキャレットが
> 最後の行の行頭に移動してしまいます(^^;
>
> バグか仕様かはわかりませんが、バグでしたら直っていた方がよさそうな気がします。(^^;

バグのような、仕様のような(^^;直してみますです。todo.txt に書いて置きます。



447 Re^4: TEditor.Margin.Left & Top と Caret コメント数:  0件
  本田勝彦  | 2000/04/08 (土) 01:10
 http://member.nifty.ne.jp/~katsuhiko
なるほど〜\(^o^)/そうかこうすれば良かったのか・・・

自分の書いたVCLが色々と拡張されていくのを見るのはとっても嬉しいですね。
で、重箱隅をひとつ。

> procedure MyEditor.CaretEndUpdate;
> const
>  HideFlag: Boolean = false;

ここにフラグを置くと、MyEditor のインスタンスが複数ある場合、破綻します。
フィールドデータとして保持する仕様にしましょう。
以前ハマったモンね。



446 Re^3: (疑似)トリプルクリックで段落を選択したい(つづき) コメント数:  0件
  本田勝彦  | 2000/04/08 (土) 01:04
 http://member.nifty.ne.jp/~katsuhiko
> > ですので、ご希望の機能を実現するためには、Caret.SelMove プロパティを
> > False にして、ドラッグ&ドロップを実装する必要があります。

ウソですね^^; 「Caret.SelDragMode プロパティを dmManual にして」
でした。

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



445 Re^3: (疑似)トリプルクリックで段落を選択したい(つづき) コメント数:  0件
  網代太郎  | 2000/04/07 (金) 19:03
 http://plaza27.mbn.or.jp/~ajitaro/
> > で、サンプルにある EndDrag イベントハンドラを
> >
> > if (Sender is TEditor) and not (TEditor(Sender).Dragging) then
> > TEditor(Sender).CleanSelection;

Unit2のサンプルを流用させていただいたところ、(疑似)トリプルクリックだけで
なく、ダブルクリックによる1語選択もできなくなってしまいました。

そこで、EndDrag イベントハンドラ自体を削除してしまったところ、うまくいき
ました。

CleanSelectionは、(疑似)トリプルクリックのコードの
方で処理しました。

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



444 Re^2: (疑似)トリプルクリックで段落を選択したい(つづき) コメント数:  2件
  網代太郎  | 2000/04/07 (金) 10:49
 http://plaza27.mbn.or.jp/~ajitaro/
> TEditor の選択領域の移動機能がじゃましてるんですね。

そのようですね。以前のバージョンのETditorでは出来ていましたから(コーディング
は、先に掲示板に書き込んだものとは、少し違いましたが)。

> ですので、ご希望の機能を実現するためには、Caret.SelMove プロパティを
> False にして、ドラッグ&ドロップを実装する必要があります。
> で、サンプルにある EndDrag イベントハンドラを
>
> if (Sender is TEditor) and not (TEditor(Sender).Dragging) then
> TEditor(Sender).CleanSelection;

ありがとうございます。試してみます。



443 Re^4: TEditor.Margin.Left & Top と Caret コメント数:  0件
  てらお  | 2000/04/07 (金) 09:28
 http://www2s.biglobe.ne.jp/~t-susumu/toclip/
K2さん、こんにちは。てらおです。

> procedure MyEditor.CaretEndUpdate;
> const
>  HideFlag: Boolean = false;
> var
>  P: TPoint;
> ・
> ・
> ・

ふむふむ、なるほど。
早速、試してみました。
バッチリOKです〜 (^.^)



442 Re^3: TEditor.Margin.Left & Top と Caret コメント数:  2件
  K2  | 2000/04/07 (金) 08:58
 http://web.kyoto-inet.or.jp/people/koyabu/
> K2です。

げ、キャレットの位置の取得を忘れてる(^^;

inheritedの次の行に

 GetCaretPos(P);

を入れてください(^^;

procedure MyEditor.CaretEndUpdate;
const
 HideFlag: Boolean = false;
var
 P: TPoint;
begin
 inherited;

 GetCaretPos(P);

 if (P.X >= FMargin.FLeft) and (P.Y >= FMargin.FTop) then begin
  if HideFlag then begin
   ShowCaret(Handle);
  end;
  HideFlag := false;
 end
 else begin
  if not HideFlag then begin
   HideCaret(Handle);
  end;
  HideFlag := true;
 end;
end;



441 Re^2: TEditor.Margin.Left & Top と Caret コメント数:  3件
  K2  | 2000/04/07 (金) 08:51
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。

> > 「マージン」なんだからキャレットも消えてくれると助かるのですが、
> > 何とかならないでしょうか?

CaretEndUpdateをOverrideして、キャレットの位置がマージン内
だったらHideCaret、それ以外の場合はShowCaretすれば実現できます。
ただし、HideCaretやShowCaretは、呼んだ数をカウントされるので、
一度Hideしたら、2度はHideしないようにしなきゃなりません。

うちは、HEditorを直接改造していますが、overrideでやるなら

procedure MyEditor.CaretEndUpdate;
const
 HideFlag: Boolean = false;
var
 P: TPoint;
begin
 inherited;
 if (P.X >= FMargin.FLeft) and (P.Y >= FMargin.FTop) then begin
  if HideFlag then begin
   ShowCaret(Handle);
  end;
  HideFlag := false;
 end
 else begin
  if not HideFlag then begin
   HideCaret(Handle);
  end;
  HideFlag := true;
 end;
end;

と、こんなんでいけるんじゃないかな……
動作確認はしていません。
それ以外に変更しなきゃならないかもしれませんが、うまく動作しなかったら
ごめんなさいね。



440 Re^3: MSゴシック9ポイントのときの改行マーク コメント数:  0件
  K2  | 2000/04/07 (金) 08:36
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。

> ちなみにK2さんが紹介してくださったやつも試してみましたが、何故かはみ出して
> しまってうまくいきませんでした(^^;

XとYを、イベントにわたってきたXとYをそのまま使ってください。
オリジナルHEditorソースでは、一旦別の値に書き換えていますから、
そのまま描画部分を入れ替えただけだと、うまく描画できません。

というか、試行錯誤はちょっとはしましょうね(^^;




439 [EOF]から行頭にワープしてしまう コメント数:  1件
  ほしけん  | 2000/04/07 (金) 08:07
 http://www.hosiken.w3.to/
こんにちは、ほしけんです。

今さっき気づいたことですなのですが、TEditorはCtrl+左右キーで
単語ごとにカーソルを移動させることが出来ますよね。
そこで、最後の行の[EOF]の横でCtrl+右を押すと、何故かキャレットが
最後の行の行頭に移動してしまいます(^^;

バグか仕様かはわかりませんが、バグでしたら直っていた方がよさそうな気がします。(^^;



438 Re^2: MSゴシック9ポイントのときの改行マーク コメント数:  1件
  ほしけん  | 2000/04/07 (金) 08:01
 http://www.hosiken.w3.to/
> マークにつきましては、「好み」の要素が大きいと思いましたので、
> DrawRetMark メソッドが virtual になっています。override するなり
> 直接 HEditor.pas を書き換えるなどやって見ていただけませんか?

結局、ソースの数値を直接書き換えて2〜3ドットほど長くさせることにしました。
(本当はoverrideさせようと思ったんですが、どうもうまくいかなくて
あきらめました。(Delphiに関してはまだ若葉マークなので(T_T)))

ちなみにK2さんが紹介してくださったやつも試してみましたが、何故かはみ出して
しまってうまくいきませんでした(^^;



437 TEditorの安定版など コメント数:  1件
  ゆうきひろ  | 2000/04/07 (金) 06:11
 http://www.remus.dti.ne.jp/~kinpotwn/mozart/Nami2000.htm
 ↑というような話題がしばらく前にFDELPHIであったようですが、確かに現在のバージョンあたりをそういうものにしてもよいような気がします。個人的には画面分割機能はいらないですけど。
文書を作成するエディタとしては、もう「秀丸」で必要かつ十分だと思っていますのでTEditorを使って通常のエディタ(たとえばメモの拡張版のようなもの)を作成することは私の場合はないです(HTMLエディタは作ったけど)。ただ、オンライン上の小説等を読むときは縦書き機能が欲しいなと思うことがあります。縦書き表示できるエディタをいくつか試してみましたけど、どれも表示のスムーズさがイマイチ。横スクロールは縦スクロールに比べどうしても違和感が残ります。TEditorの未来バージョンで採用されるであろう縦書き機能ががそのへんを解決してくれたらいいなあと勝手に思っております(^^;)。
ちなみに私が今使用している縦書き可能なエディタはフリーの「CoolMint Yellow」です( http://www.webinter.net/pbd/)。
いや、俺の使っているエディタの方が縦書き表示はスムーズだぞ、といういような方がいらっしゃましたらぜひ教えてくださいね。



436 Re^10: 印刷機能に関して コメント数:  0件
  本田勝彦  | 2000/04/07 (金) 01:20
 http://member.nifty.ne.jp/~katsuhiko
> 一応JPEGで再アップしてみました

あら、スミマセンね。今度は見られましたです。

> TStringsPrinterはDrawTextを使っているので固定ピッチフォントを指定していても
> 半角:全角が1:2で描画されるとは限らないということですか

そうです。以前 nifty で ExtTextOut を教えて頂いたときのログでは、要するに
フォントの問題なんですね。

TTextMetric 構造体の tmAveCharWidth と tmMaxCharWidth が1対2
になるフォントはOKなのですが、それ以外は×なんです。

固定ピッチフォントのくせに、フォントのサイズや、ボールドかどうかによって
tmAveCharWidth と tmMaxCharWidth の比率が変わるのです。最初は悩みました
もん(^^;

例えば、MS ゴシック では Regular 9, 12, 15, 18, 30 などはOKですが、
それ以外のフォントサイズやボールドにするとだめという具合です。



435 Re^9: 印刷機能に関して コメント数:  1件
  森田良平  | 2000/04/06 (木) 23:57
一応JPEGで再アップしてみました
http://super.fureai.or.jp/~jrm/strprint12_preview_edit.jpg
http://super.fureai.or.jp/~jrm/strprint12_preview_print.jpg

> で、TEditor の表示と TStringsPrinter の表示ですが、これは元来別物ですよ。
> 使っている API が ExtTextOut と DrawText なので、違って表示されます。

TStringsPrinterはDrawTextを使っているので固定ピッチフォントを指定していても
半角:全角が1:2で描画されるとは限らないということですか



434 Re: TEditor.Margin.Left & Top と Caret コメント数:  4件
  本田勝彦  | 2000/04/06 (木) 23:54
ようこそいらっしゃいまし。(^^)

> スクロールバーでスクロールすると、X < Margin.Left, Y < Margin.Top
> の場所でも、キャレットが点滅したままになります。
> 行番号やルーラーを表示させているとルーラーの上で点滅してしまいます。

うむ〜(^^;痛いところを(^^;
開発初期の頃、参考にしていたD2のエディタがそうなっていたんで、
まぁいっか〜という仕様のまま現在に至っております。
D3になって、ボーランドの開発部隊もどうすることも出来なくて
パネルを貼り付けたんだろうな〜と邪推していました。

> 「マージン」なんだからキャレットも消えてくれると助かるのですが、
> 何とかならないでしょうか?

「逃げ」なんですけどね、同じ色のパネルを貼ってやって下さい。



433 Re: (疑似)トリプルクリックで段落を選択したい(つづき) コメント数:  3件
  本田勝彦  | 2000/04/06 (木) 23:45
> ところが、選択された部分をクリックすると、一瞬だけ、段落全体が選択状態になった
> ように見えるのですが、すぐに選択状態が解除されてしまいます。

TEditor の選択領域の移動機能がじゃましてるんですね。
選択領域で WM_LBUTTONDOWN されると InitSelDrag されます。
その状態で(ドラッグしていない状態)WM_LBUTTONUP すると CanselSelDrag
されます。

ですので、ご希望の機能を実現するためには、Caret.SelMove プロパティを
False にして、ドラッグ&ドロップを実装する必要があります。
で、サンプルにある EndDrag イベントハンドラを

if (Sender is TEditor) and not (TEditor(Sender).Dragging) then
TEditor(Sender).CleanSelection;

としてみて下さい。試してはいないですが(^^;



432 Re^8: 印刷機能に関して コメント数:  2件
  本田勝彦  | 2000/04/06 (木) 23:27
> 私の環境でも発生したので報告
> http://super.fureai.or.jp/~jrm/strprint12_preview_edit.png
> と、TEditorでは表示されるものの
> http://super.fureai.or.jp/~jrm/strprint12_preview_print.png
> TStringsPrinterのプレビューではこのように
> ※ MS ゴシック : 10pt

お手数をお掛けいたいしました。が、.png は見られないんです(^^;
で、TEditor の表示と TStringsPrinter の表示ですが、これは元来別物ですよ。
使っている API が ExtTextOut と DrawText なので、違って表示されます。
プレビューと印刷されたモノは一致すると思いますが。
このツリーの元ネタの「詰まって表示される」というのもそういうことだった
のかなぁ?

> あと、TEditorのUrlCharsにデフォルトで'+'が入っていないのが少し気になりました

今度追加しておきますね。情報どうもです。(^^)



431 TEditor.Margin.Left & Top と Caret コメント数:  5件
  稀杜(きと)  | 2000/04/06 (木) 19:46
 http://hp.vector.co.jp/authors/VA017148/
こんにちは、稀杜です。Niftyではお世話になっています。
TEditorは大変すばらしいコンポで、活用させていただいてます。

さて本題ですが、
スクロールバーでスクロールすると、X < Margin.Left, Y < Margin.Top
の場所でも、キャレットが点滅したままになります。
行番号やルーラーを表示させているとルーラーの上で点滅してしまいます。

「マージン」なんだからキャレットも消えてくれると助かるのですが、
何とかならないでしょうか?



430 (疑似)トリプルクリックで段落を選択したい(つづき) コメント数:  4件
  網代太郎  | 2000/04/06 (木) 12:19
 http://plaza27.mbn.or.jp/~ajitaro/
ところが、選択された部分をクリックすると、一瞬だけ、段落全体が選択状態になった
ように見えるのですが、すぐに選択状態が解除されてしまいます。
キャレットは、段落の一番最後に移動します。

ちなみに、a,bの2行を

SelStart := 0;
SelLength := 10;

と変更しても、同様に、先頭から半角10文字分が一瞬、選択状態になったように
見えますが、すぐ解除されてしまいます。
キャレットは10文字目に移動します。

したがって、このa,bの2行自体には問題がないと思われます。

何か良い方法にお心当たりがございましたら、ご教示いただければ幸いです。



429 (疑似)トリプルクリックで段落を選択したい コメント数:  0件
  網代太郎  | 2000/04/06 (木) 12:17
 http://plaza27.mbn.or.jp/~ajitaro/
本田さん、いつもお世話になっております。
いつも恐縮ですが、また質問させてください。

編集中のテキストをダブルクリックして1語を選択したあと、選択された部分をもう
一度クリックすると、その部分を含む1段落全体(Lines単位の1行全体)を選択できる
ようにしたいのです(秀丸のように)。
そこで、次のようにコーディングしました。

procedure TLogoAppForm.Editor1DblClick(Sender: TObject);
//TEditor Help のサンプルコードより
var
aPos: TPoint;
C: Char;
begin
GetCaretPos(aPos);
C := Editor1.TokenFromPos(aPos);
if (C = toUrl) or (C = toMail) then
Editor1.SelectTokenFromPos(aPos)
else
Editor1.SelectWordFromPos(aPos);
end;

procedure TLogoAppForm.Editor1Click(Sender: TObject);
var
aPos: Tpoint;
aRow, aCol: Integer;
begin
GetCaretPos(aPos);
with Editor1 do begin
PosToRowCol(aPos.x, aPos.y, aRow, aCol, false);
if IsSelectedArea(aRow, aCol)
then begin
SelStart := CharFromPos(aPos) - ColToChar(aRow, aCol);//a
SelLength := Length(Lines[RowToLines(aRow)]);//b
end;
end;
end;
(つづく)



428 Re^9: MSゴシック9ポイントのときの改行マーク コメント数:  0件
  K2  | 2000/04/06 (木) 08:12
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。

> > 何とかやってみますので、左マージンへのBMP描画のやり方を教えて下さい。
> > 基本的にDelphi初心者ですもので。
>
> マークジャンプってそこまで実装するんですか。ん゛〜かなりメンドイような(^^;
> 以前まゆりんさんが公開されていた行番号表示コンポと同じ要領になると思います。

マークジャンプはK2Editorにも実装していますが、現在はアプリ側で
マーク行の管理を行っています。マークの描画よりも、その行数を管理
するのが難しいです。マーク行の上で行が追加されたらマーク位置は
ずらさないといけないし、この部分が大変です。
EditorStringListの1ビットをマークに割り当てると、割合簡単にできる
と思います。が、HEditorの中身をいじることになってちょっと高度です。



427 Re^7: 印刷機能に関して コメント数:  3件
  森田良平  | 2000/04/06 (木) 01:47
私の環境でも発生したので報告
http://super.fureai.or.jp/~jrm/strprint12_preview_edit.png
と、TEditorでは表示されるものの
http://super.fureai.or.jp/~jrm/strprint12_preview_print.png
TStringsPrinterのプレビューではこのように
※ MS ゴシック : 10pt

あと、TEditorのUrlCharsにデフォルトで'+'が入っていないのが少し気になりました



426 Re^8: MSゴシック9ポイントのときの改行マーク コメント数:  1件
  本田勝彦  | 2000/04/05 (水) 23:57
 http://homepage3.nifty.com/~katsuhiko/
> 何とかやってみますので、左マージンへのBMP描画のやり方を教えて下さい。
> 基本的にDelphi初心者ですもので。

マークジャンプってそこまで実装するんですか。ん゛〜かなりメンドイような(^^;
以前まゆりんさんが公開されていた行番号表示コンポと同じ要領になると思います。
番号の文字列を描画するかわりに、見せたいBMPを該当する行位置に描画する
というパターンになると思います。

描画は、Canvas.Draw(X, Y, Bitmap); で行けます。ヘルプのままだぞ(^^;;;;



425 Re^2: TEditor ver 1.54 コメント数:  0件
  本田勝彦  | 2000/04/05 (水) 23:51
 http://homepage3.nifty.com/~katsuhiko/
> 早速頂きました。ありがとうございます。
> カーソルは、良い感じです。

どもども(^^)
リンクの件ではありがとうございました。



424 Re^7: MSゴシック9ポイントのときの改行マーク コメント数:  2件
  うらら  | 2000/04/05 (水) 16:58
> ん゛〜。こゆのは、アプリケーションで実装してくらはい(^^;

何とかやってみますので、左マージンへのBMP描画のやり方を教えて下さい。
基本的にDelphi初心者ですもので。



423 Re: TEditor ver 1.54 コメント数:  1件
  kmth  | 2000/04/05 (水) 03:11
 http://www3.cds.ne.jp/~kmth/software/
早速頂きました。ありがとうございます。
カーソルは、良い感じです。



422 TEditor ver 1.54 コメント数:  2件
  本田勝彦  | 2000/04/05 (水) 00:49
 http://homepage3.nifty.com/~katsuhiko/
になりました。

マウスカーソルがもうひとつ増えました。ドラッグ中にコントロールキーを
押すとカーソルが変わるようになりました。

また、エスケープキーによるドラッグの中断も実装されました。



421 Re^6: MSゴシック9ポイントのときの改行マーク コメント数:  3件
  本田勝彦  | 2000/04/05 (水) 00:47
 http://homepage3.nifty.com/~katsuhiko/
> > マークジャンプとはどんなものでしょう?
>
> DelphiのIDEにもありますが、Ctrl+K+(No)で行を記憶して、Ctrl+Q+(No)
> で復帰するものです。(Delphiでは「しおり操作」と書いてあります)
> エディタの元祖「WordStar」から始まったものです。

ん゛〜。こゆのは、アプリケーションで実装してくらはい(^^;



420 Re^6: 印刷機能に関して コメント数:  4件
  本田勝彦  | 2000/04/05 (水) 00:45
 http://homepage3.nifty.com/~katsuhiko/
> よく見ると、ぷれびゅーでもズレますね。

ウチではずれてないんですけど・・・(^^;

> エディタと同じように 半角:全角を1:2の固定ピッチで
> きれいに描画、印刷する方法はないでしょうか?
> どうも半角スペースや全角スペースを入れると、
> 文字間サイズが自動調整されている気がするのですが・・・。
> MS ゴシック 9/10ポイントで 確認しました。

なんでかな〜



419 Re^5: 印刷機能に関して コメント数:  5件
  Kou  | 2000/04/04 (火) 18:50
> 色々試しているのですが、Win95, NEC-MultiWriter1000, 標準プリンタドライバ
> という環境ではご指摘の現象が出ていません。

よく見ると、ぷれびゅーでもズレますね。
エディタと同じように 半角:全角を1:2の固定ピッチで
きれいに描画、印刷する方法はないでしょうか?
どうも半角スペースや全角スペースを入れると、
文字間サイズが自動調整されている気がするのですが・・・。
MS ゴシック 9/10ポイントで 確認しました。



418 Re^5: MSゴシック9ポイントのときの改行マーク コメント数:  4件
  うらら  | 2000/04/04 (火) 09:13
> マークジャンプとはどんなものでしょう?

DelphiのIDEにもありますが、Ctrl+K+(No)で行を記憶して、Ctrl+Q+(No)
で復帰するものです。(Delphiでは「しおり操作」と書いてあります)
エディタの元祖「WordStar」から始まったものです。



417 Re^4: 印刷機能に関して コメント数:  6件
  本田勝彦  | 2000/04/04 (火) 00:56
 http://homepage3.nifty.com/~katsuhiko/
色々試しているのですが、Win95, NEC-MultiWriter1000, 標準プリンタドライバ
という環境ではご指摘の現象が出ていません。

皆さんのところではいかがでしょう?情報がありましたらよろしくお願いいたします。



416 Re^4: MSゴシック9ポイントのときの改行マーク コメント数:  5件
  本田勝彦  | 2000/04/04 (火) 00:50
 http://homepage3.nifty.com/~katsuhiko/
でかい改行マークは嫌いなんです。なんかこうどぉぅだぁって感じが
好きでないので。

ニコちゃんマークのビットマップや MIFES の改行マークのようなビットマップを
表示することも DrawRetMark を override すれば出来るんですよね。

マークジャンプとはどんなものでしょう?



415 Re^3: MSゴシック9ポイントのときの改行マーク コメント数:  6件
  うらら  | 2000/04/03 (月) 18:50
> 改行マークに関しては、昔、改善依頼を出したのですが、同じ
> 理由で却下されました。しかし、MSゴシックを使う人が多いので、
> やっぱり気になると思いますよ。

同感です。私も何とかしたいな〜とは思っているのですが、まだ手が出せる状況
ではないので、指くわえて待っています。
プロパティでの設定で、低速(リアル)or高速描画を選べれば最高ですが(^^ゞ
あと、将来で結構ですので、マークジャンプを実装していただければ幸いです。(汗;)



414 Re^2: MSゴシック9ポイントのときの改行マーク コメント数:  7件
  K2  | 2000/04/03 (月) 13:03
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。

改行マークに関しては、昔、改善依頼を出したのですが、同じ
理由で却下されました。しかし、MSゴシックを使う人が多いので、
やっぱり気になると思いますよ。

好みの要素も大きいですが、ちゃんと表示されていさえすれば、あまり
気にしない人も多いのでは?

ちなみに、うちでは以下のように描いています。

MoveTo(X + ColWidth div 2, Y + 2);
LineTo(X + ColWidth div 2, Y + FFontHeight - 3);
LineTo(X + ColWidth div 2 + 3, Y + FFontHeight - 6);
MoveTo(X + ColWidth div 2, Y + FFontHeight - 3);
LineTo(X + ColWidth div 2 - 3, Y + FFontHeight - 6);

起点は、DrawRetMarkにわたったX,Yをそのまま使っています。
これが原因で描画が遅くなるという気もしませんが……



413 Re: MSゴシック9ポイントのときの改行マーク コメント数:  10件
  本田勝彦  | 2000/04/03 (月) 01:25
 http://homepage3.nifty.com/~katsuhiko/
> 例えば、フォントにMSゴシック9ポイントなどの12ドット文字を指定したときに、
> 改行マークの矢印の矢が短くなりすぎて矢印に見えにくなってしまうのですが、
> もう少し、矢印の矢を長くできないでしょうか。

マークにつきましては、「好み」の要素が大きいと思いましたので、
DrawRetMark メソッドが virtual になっています。override するなり
直接 HEditor.pas を書き換えるなどやって見ていただけませんか?

メソッド内に、フォントのサイズによって描画方法を変えるための判別処理を
入れると、かなりスピードが落ちますので、CMFontChanged メッセージハンドラ
も実装して、その中で改行マークを描画するためのパラメータを初期化するような
作りになっていると、良いと思います。



412 Re^3: 印刷機能に関して コメント数:  7件
  本田勝彦  | 2000/04/03 (月) 01:15
 http://homepage3.nifty.com/~katsuhiko/
> MSワードなんかと 同じような感じです。
> プレビューではそろっているが、印刷時に 文字間が自動調整されてずれる・・・。
> ワードでは オプションで文字間の自動調整をしない ようにすると、
> きれいに プレビューの通りにきれいに印刷できるのですが・・・。

Word は持ってないのですが、TStringsPrinter の印刷は
TMetaFile に描画してそれを StretchDraw しているのでそうなるのかも
しれません。
プレビューと一致させるために一番苦心した部分だったりするのですが、
その仕様がいけないのかもしれませんね。DivideStringsToMetaFiles で
行われている描画処理を Printer.Canvas.Handle に対して直接行うと
どうなるでしょう?




411 Re^2: 印刷機能に関して コメント数:  8件
  Kou  | 2000/04/02 (日) 23:44
> 何故でしょうねぇ(^^;;;
> プリンターが持っていないフォントを指定して、プリンターが勝手に変えている
> ということは考えられないのかなぁ。自信なしモード(^^;
MSワードなんかと 同じような感じです。
プレビューではそろっているが、印刷時に 文字間が自動調整されてずれる・・・。
ワードでは オプションで文字間の自動調整をしない ようにすると、
きれいに プレビューの通りにきれいに印刷できるのですが・・・。



410 MSゴシック9ポイントのときの改行マーク コメント数:  11件
  ほしけん  | 2000/04/02 (日) 05:27
 http://www.hosiken.w3.to/
こんにちは、ほしけんです。TEditor愛用しております(^^)。

これはずっと前から気になっていたことなのですが(^^;
例えば、フォントにMSゴシック9ポイントなどの12ドット文字を指定したときに、
改行マークの矢印の矢が短くなりすぎて矢印に見えにくなってしまうのですが、
もう少し、矢印の矢を長くできないでしょうか。
動作的には全く支障ないのですが、小さすぎて見づらいのでぜひお願いします。m(__)m

(僕はいつも9ポイントにしていたので、ずっと「ああいうマークなんだ」と思ってしまいました(^^;))



409 Re: 印刷機能に関して コメント数:  9件
  本田勝彦  | 2000/04/02 (日) 00:57
 http://homepage3.nifty.com/~katsuhiko/
> ところで、TStringsPrinterにおいて、印刷をした場合、
> 固定ピッチフォントでの印刷にも関わらず、文字間などが自動調整され、
> 文字がずれるような現象が出るのですが、
> これは どうにからないのでしょうか?

何故でしょうねぇ(^^;;;
プリンターが持っていないフォントを指定して、プリンターが勝手に変えている
ということは考えられないのかなぁ。自信なしモード(^^;



408 Re^4: TEditor ver 1.53 コメント数:  0件
  本田勝彦  | 2000/04/02 (日) 00:53
 http://homepage3.nifty.com/~katsuhiko/
> え、できませんか? Win95,Win2Kとも解除できますよ。Win2Kは
> 新しいK2Editorでしか試していませんが、Win95ではサンプルでも
> OKでしたよ。

わかりました。D4以降は TDragObject がキーメッセージも処理していますね。
TDragObject も拡張出来る仕様かどうかはまだ不明ですが、拡張が可能であれば
コントロールキーでカーソル変更も可能になると思います。

> 後は新井さんの「シェルプログラミング入門」がいいです。

これは持ってるんですが、持ってるだけという(^^; FDELPHI のサンプルなども
お勉強中です。



407 Re: Cプログラマがはまった罠 コメント数:  0件
  K2  | 2000/04/01 (土) 23:58
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。

> ご指摘のとおり、デバッガで追ったら私の単純ミスでした、elseにセミコロンを
> 付けていたために、閉じてはいるんですが直後にまた開いていました(汗;)

原因がわかってよかったですね。
ifやelseの後ろは、できるだけbegin〜endブロックを書いた方が
いいというのが僕の考えです。今回のようなミスも防げますし、
後から文を追加したときにもミスを少なくできます。
どうしてもelseの後などにbegin〜endをつけたくない場合は、
改行を入れないなどで、間違いを少なくします。

if XXX then A := B
else A := C;

書き方に関しては、みなさんいろいろ信じる道があるので、すぐに
宗教戦争に発展してしまいがちで、あまり深入りはしません(^^;
ちなみに、僕ももともとCから来たので、begin〜endの書き方が
多くのpascalプログラマと違うんですよ。

if XXX then begin
A := B;
end
else begin
A := C;
end;

これは、Cの時に

if (XXX) {
A = B;
}
else {
A = C;
}

と書く癖があったからなんです。

ではでは。



406 印刷機能に関して コメント数:  10件
  Kou  | 2000/04/01 (土) 23:38
お世話になります。
ところで、TStringsPrinterにおいて、印刷をした場合、
固定ピッチフォントでの印刷にも関わらず、文字間などが自動調整され、
文字がずれるような現象が出るのですが、
これは どうにからないのでしょうか?
よろしくお願いいたします。



405 Cプログラマがはまった罠 コメント数:  1件
  うらら  | 2000/04/01 (土) 22:24
 http://www.try-net.or.jp/~nabetech/
こんにちは、K2さん

> Freeしているつもりでも消えないのだから、普通に考えると、Freeして
> いるルーチンを通っていないというのが思いつきます(^^;
> デバッガでトレースしてみたらいかがでしょうか。
ご指摘のとおり、デバッガで追ったら私の単純ミスでした、elseにセミコロンを
付けていたために、閉じてはいるんですが直後にまた開いていました(汗;)

procedure TMainForm.EditSplitExecute(Sender: TObject);
begin
if (ActiveMDIChild As TMDIChild).IsSplit then
(ActiveMDIChild As TMDIChild).EndSplit
else<-ここに';'を付けていた
(ActiveMDIChild As TMDIChild).BeginSplit;//フラグに関係なく実行されていました
end;

C++言語仕様なら、コンパイルエラーで引っかかるんですが、m(..)m
画面分割はMDIでもちゃんと動作しております。お騒がせしました。



404 Re: 画面分割の解除ソース2 コメント数:  2件
  K2  | 2000/04/01 (土) 10:17
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。

> >Splitter は消えるけどEditor が消えないのですか?
> 両方消えません。

Freeしているつもりでも消えないのだから、普通に考えると、Freeして
いるルーチンを通っていないというのが思いつきます(^^;
デバッガでトレースしてみたらいかがでしょうか。

Freeしても消えないというのは、ちょっと考えられないんじゃ。
そのまま2面のTEditorとスピリッターが使い続けられるのなら、
なおさらです。



403 Re^3: TEditor ver 1.53 コメント数:  1件
  K2  | 2000/04/01 (土) 10:14
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。

> ウチにあるサンプルでは解除出来ないようですが(^^;

え、できませんか? Win95,Win2Kとも解除できますよ。Win2Kは
新しいK2Editorでしか試していませんが、Win95ではサンプルでも
OKでしたよ。

> お勉強中ですが、難しいですね。

オランダのサイトに、割とよくできたコンポが落ちています。FDelphiや
Delphi MLで検索すると見つけることができると思います。ちょっとバグ
があるので、直さないといけないところがありますけど。
後は新井さんの「シェルプログラミング入門」がいいです。

> 人情ですね。でもなぁ、矩形選択領域の左右に移動する場合のことを考えると
> あぁメンドイ(^^;;;;

でしょうね。あまり無理も言えないので、気が向いたら挑戦していただ
けるとうれしいです。

> > それから、過去ログで見たような気もするのですが、ドラッグ中にCTRL
> > キーを押したとき、マウスカーソルにコピーの印をつけたいのですが、
>
> TEditor が行うドラッグについては、可能だと思います。

うちでは、マニュアルドラッグでいくことが決定しているので、なんか
方法があるか探してみます。



402 Re^3: TEditor ver 1.53 コメント数:  0件
  本田勝彦  | 2000/04/01 (土) 00:33
 http://homepage3.nifty.com/~katsuhiko/
> WndProc をいじって見て下さい。SelDragging and VK_ESCAPE で

ぶぶ〜。and VK_CONTROL ですね。
OnMouseMove でも、GetKeyState すれば行けるかもしれません。
試して見ます。



401 Re^2: TEditor ver 1.53 コメント数:  3件
  本田勝彦  | 2000/04/01 (土) 00:26
 http://homepage3.nifty.com/~katsuhiko/
> してみました。すると、懸案だったESCでのドラッグ解除ができるように
> なっちゃうじゃないですか(^^v これで一般公開できます。Sampleでも
> 6枚目だけはESCキーによる解除ができますね。

ウチにあるサンプルでは解除出来ないようですが(^^;

> OLEドロップターゲットとOLEドロップソースをインプリメントして、

お勉強中ですが、難しいですね。

> ところで、矩形選択時のマウスによる選択領域の移動は、今後サポート
> する予定はありますか? 矩形でもできて欲しいというのが人情だと
> 思います(笑)

人情ですね。でもなぁ、矩形選択領域の左右に移動する場合のことを考えると
あぁメンドイ(^^;;;;

> それから、過去ログで見たような気もするのですが、ドラッグ中にCTRL
> キーを押したとき、マウスカーソルにコピーの印をつけたいのですが、

TEditor が行うドラッグについては、可能だと思います。まだ試してませんが、
WndProc をいじって見て下さい。SelDragging and VK_ESCAPE で
Windows.SetCursor すれば行けると思います。これ実装して見ようっかなぁ。