~katsuhiko メッセージボード

back 301-350

351-400

401-450


400 Re: 画面分割の解除ソース2 コメント数:  0件
  本田勝彦  | 2000/04/01 (土) 00:10
 http://homepage3.nifty.com/~katsuhiko/
気になったところだけ。

BeginSplit の最初に if IsSplit then Exit; というのを入れて見て
下さい。これでもダメだとちょっとわかりません。



399 Re: TEditor ver 1.53 コメント数:  4件
  K2  | 2000/03/31 (金) 12:57
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。
バージョンアップ、お疲れさまでした。

マージしてみました。動作はおおむね良好のようです。マウスカーソル
の問題も、解決しました。

ついでに、Sampleの6枚目のエディタと同じように
コーディングして、マルチTEditorの時にもマウスドラッグできるように
してみました。すると、懸案だったESCでのドラッグ解除ができるように
なっちゃうじゃないですか(^^v これで一般公開できます。Sampleでも
6枚目だけはESCキーによる解除ができますね。

Delphiにまかしてしまった方が、ドラッグの処理はきれいにできそうな
感じですね。

OLEドロップターゲットとOLEドロップソースをインプリメントして、
別プロセスのエディタにドラッグできればいうことないですが、まぁ
そこまでやらなくてもいいか(^^;

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

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



398 画面分割の解除ソース2 コメント数:  4件
  うらら  | 2000/03/31 (金) 09:53
続きです。

procedure TMDIChild.SplitterMoved(Sender: TObject);
begin
if IsSplit then
Editor.Height := TSplitter(Sender).Top;
end;

procedure TMDIChild.EndSplit;
begin
Splitter.Free;
Editor.Free;
IsSplit := false;
end;

procedure TMDIChild.FormDestroy(Sender: TObject);
begin
if IsSplit then
begin
Splitter.Free;
Editor.Free;
end;
end;

>プログラマが分割しているかどうかの状態に責任を持っているんですよね。
はいそうです。責任持たなくて良いんでしょうか?

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

よろしくお願いします。



397 画面分割の解除ソース1 コメント数:  5件
  うらら  | 2000/03/31 (金) 09:47
掲示板って文字数の制約激しいんですね、しかたがないので分割します。
こんな感じです。
public
Editor: TEditor;
Splitter : TSplitter;
IsSplit : boolean;

procedure SplitterMoved(Sender: TObject);
procedure BeginSplit;
procedure EndSplit;
end;

procedure TMDIChild.BeginSplit;
begin
Editor := TEditor.Create(Self);

EditorProp1.Assign(Edit);
EditorProp1.AssignTo(Editor);
// イベントハンドラをコピーする
SetProperties(Edit, Editor, tkMethods);
// Parent 他
Editor.Parent := Edit.Parent;
Editor.Align := alTop;
Editor.Top := 0;
Editor.Height := Height div 2;
// 文字列オブジェクトの共有
Editor.ExchangeList(Edit);
Editor.TopRow := Edit.TopRow;
Edit.TopRow := Edit.TopRow + Editor.RowCount;

Splitter := TSplitter.Create(Self);
Splitter.Parent := Edit.Parent; //PageControl1.ActivePage;
Splitter.Align := alTop;
Splitter.Top := Editor.Top + Editor.Height;
Splitter.Cursor := crVSplit;
Splitter.OnMoved := SplitterMoved;
IsSplit := true;
end;



396 Re: 画面分割の解除 コメント数:  6件
  本田勝彦  | 2000/03/31 (金) 00:51
 http://homepage3.nifty.com/~katsuhiko/
> 右向きカーソルの解決おめでとうございます。

どもです。ヘルプファイルの CursorState プロパティのトピックに
OnMouseMove でマウスカーソルを変更するサンプルがありますので、
見てやって下さい。


> Splitter.Free;
> Editor.Free;
> IsSplit := false;

この IsSplit := False; というのが、気になります。プログラマが分割
しているかどうかの状態に責任を持っているんですよね。
Splitter は消えるけどEditor が消えないのですか?
Editor はどうやって取得しているのでしょう?

もすこし情報が欲しいです。MDI ではうまく行かないのかなぁ



395 Re: 再びAtokでの単語登録 コメント数:  0件
  本田勝彦  | 2000/03/31 (金) 00:41
 http://homepage3.nifty.com/~katsuhiko/
あ、スミマセン。HEditor.pas を改造してね、ということだったんです(^^;
で、今公開中の TEditor ver 1.53 ではデフォで WM_COPY メッセージハンドラ
が実装されましたので、1.53 を貼り付けるだけで、うんまく行きます。
お試し下さいませ。



394 再びAtokでの単語登録 コメント数:  1件
  ゆうきひろ  | 2000/03/30 (木) 21:50
 http://www.remus.dti.ne.jp/~kinpotwn/mozart/Nami2000.htm
> WM_COPY メッセージハンドラを実装すると機能するようです。
> procedure WMCopy(var Message: TMessage); message WM_COPY;
>というのを private 部の適当なところに追加して、実現部では、

> procedure TEditor.WMCopy(var Message: TMessage);
> begin
> if Selected then
> CopyToClipBoard
> else
> Clipboard.AsText := '';
> end;

 ではコンパイルエラーになるので実現部を以下のように修正しましたが期待した効果が得られません。どこがおかしいのでしょ?

procedure TForm1.WMCopy(var Message: TMessage);
begin
if TEditor1.Selected then
TEditor1.CopyToClipBoard
else
Clipboard.AsText := '';
end;



393 画面分割の解除 コメント数:  7件
  うらら  | 2000/03/30 (木) 17:47
右向きカーソルの解決おめでとうございます。

毎度お世話になります。ただ今、画面分割に挑戦しているのですが、分割は出来る
のですが、元に戻すのが、うまく行きません。
Splitter.Free;
Editor.Free;
だけでは戻らないのでしょうか?、教えて下さい。

procedure TMDIChild.EndSplit;
begin
Splitter.Free;
Editor.Free;
IsSplit := false;
end;

procedure TMDIChild.FormDestroy(Sender: TObject);
begin
if IsSplit then
begin
Splitter.Free;
Editor.Free;
end;
end;



392 TEditor ver 1.53 コメント数:  5件
  本田勝彦  | 2000/03/29 (水) 23:08
 http://homepage3.nifty.com/~katsuhiko/
公開致しました。
・選択領域ドラッグの仕様を変更し、左ボタンを押し下げた状態から、数ピク
セルドラッグされた時点で開始されるようになった。
・マウスで選択処理を行う時にキー入力を受け付けない仕様にした。
・マウスによる選択やドラッグ時に上方向にもスクロールするようにした。
・OnMouseMove イベントハンドラでマウスカーソル変更処理を行う場合の
不具合を解消した。

他にも新しい型・メソッド・プロパティ・メッセージハンドラが追加されています。
お試し下さい。



391 Re^2: 現在カーソル行の別色表示 コメント数:  0件
  KUBO  | 2000/03/29 (水) 00:32
 http://homepage1.nifty.com/kubouchi/
 本田さん、こんばんわ。

>描画関連においては、プロパティ設定によって処理を分岐するということは
>極力避けて通りたいと考えています。遅くなるので(^^;)

 了解しました。

 方法を教わっただけでも有難いです。




390 Re^3: 右向きカーソルとMouseMoveイベントの競合? コメント数:  0件
  本田勝彦  | 2000/03/28 (火) 23:58
 http://homepage3.nifty.com/~katsuhiko/
> Editor.Caret.Cursors.DefaultCursor に設定することで回避できましたが、
> 的をはずしていますでしょうか。

あ、その手もありますね。

> 右向きのマウスカーソルについては気づきませんでしたが・・・。

現在、Caret.AutoCursor プロパティを追加する格好で改善中です。



389 Re^2: 右向きカーソルとMouseMoveイベントの競合? コメント数:  1件
  Kou  | 2000/03/28 (火) 22:26
> > 早速使わせて頂きましたが、URLジャンプ用のMouseMoveイベントを設定すると
> > 右向きカーソルの表示が出来なくなります。

お世話になります。

私は、URL上でマウスカーソルをハンドポイントに設定していました。
その時、ちらつきが見られましたので、
Editor.Cursor で設定せず、
Editor.Caret.Cursors.DefaultCursor に設定することで回避できましたが、
的をはずしていますでしょうか。

右向きのマウスカーソルについては気づきませんでしたが・・・。



388 Re: 右向きカーソルとMouseMoveイベントの競合? コメント数:  2件
  本田勝彦  | 2000/03/28 (火) 00:46
 http://homepage3.nifty.com/~katsuhiko/
> 早速使わせて頂きましたが、URLジャンプ用のMouseMoveイベントを設定すると
> 右向きカーソルの表示が出来なくなります。
>
> これは仕様なんでしょうか?、使い方が悪いのでしょうか?

ありゃ〜そうですね。TEditor が設定するカーソルとイベントハンドラでの設定が
激しいチラツキを発生させますね。

やっぱり、マウスカーソルには手を出すべきではなかったかな〜・・・
TEditor.Caret に AutoCursor プロパティを持たせるなどして、ユーザーが
MouseMove イベントハンドラでカーソルを変更する場合はその設定を行って
もらうようにするとか・・・くらいしか思いつきません。

何か矛盾した動作を実現しようとしてハマっているような気がする。
困ったな〜



387 Re: 現在カーソル行の別色表示 コメント数:  1件
  本田勝彦  | 2000/03/28 (火) 00:38
 http://homepage3.nifty.com/~katsuhiko/
ようこそいらっしゃいまし。(^^)

>  現在カーソル行の別色表示を要望したいです。
> (文字色、背景色)
>
>  ソースをちょっと編集して、なんとかそうなるようにはしていますが、
> TEditorで対応していただけたら有難いです。

描画関連においては、プロパティ設定によって処理を分岐するということは
極力避けて通りたいと考えています。遅くなるので(^^;)

DrawUnderLine を override して、アンダーライン描画 or 1行別色描画という
処理になると思いますので、TEditor を拡張して下さい。多分すでにそうされて
いると思いますが(^^;)

で、その際、プロパティ値を判別して描画処理を切り分けるのでは
なく(これが遅さの原因)プロパティ値が変わった時点で、描画メソッドを
アタッチし直す。あるいは、描画メソッドを持ったオブジェクト群を再構築する
というような方法を採ると速度的に稼げるかもしれません。

試してみて下さい。うまく行ったら教えてね。(^^;;;;;



386 右向きカーソルとMouseMoveイベントの競合? コメント数:  3件
  うらら  | 2000/03/27 (月) 10:34
こんにちは、本田さん。

TEditor ver.1.52バージョンアップのメールありがとうございました。

早速使わせて頂きましたが、URLジャンプ用のMouseMoveイベントを設定すると
右向きカーソルの表示が出来なくなります。

これは仕様なんでしょうか?、使い方が悪いのでしょうか?
教えて下さい。



385 現在カーソル行の別色表示 コメント数:  2件
  KUBO  | 2000/03/27 (月) 07:03
 http://homepage1.nifty.com/kubouchi/
 皆さん、はじめまして。
 本田さん、すばらしいコンポーネント有難うございます。この場を借りて
お礼申し上げさせていただきます。

 現在カーソル行の別色表示を要望したいです。
(文字色、背景色)

 ソースをちょっと編集して、なんとかそうなるようにはしていますが、
TEditorで対応していただけたら有難いです。




384 Re^3: Atokでの単語登録 コメント数:  0件
  ゆうきひろ  | 2000/03/27 (月) 03:19
 http://www.remus.dti.ne.jp/~kinpotwn/mozart/Nami2000.htm
 早速のご回答ありがとうございます。早速実行してみます。

 しかし TEditor も、もう Ver1.52 ですか。どんどん進化していきますねえ。
私は今のままであんまり不満はないですけど(^^;)。
 バージョンアップといえば私もついにDelphi5を手に入れました。しかし、私
のマシンでは重いので Delphi2.0 もまだまだ現役です。



383 Re^2: Atokでの単語登録 コメント数:  1件
  本田勝彦  | 2000/03/27 (月) 01:56
 http://homepage3.nifty.com/~katsuhiko/
> だいぶ前にご指摘を頂いたような気がします(^^;

K2さんからでしたね。

> 何かのメッセージがやって来るので、というお話でした。
> いまだに実装はされていません。調べてみますね。

わっかりました。WM_COPY メッセージハンドラを実装すると機能するようです。

procedure WMCopy(var Message: TMessage); message WM_COPY;

というのを private 部の適当なところに追加して、実現部では、

procedure TEditor.WMCopy(var Message: TMessage);
begin
if Selected then
CopyToClipBoard
else
Clipboard.AsText := '';
end;

としてやれば行けます。ATOKはクリップボードにあるデータを取ってくるだけ
のようですので、非選択状態の場合はクリップボードをクリアする意味で
'' を渡してやるとベターかなと思います。



382 Re^5: TEditor ver 1.52 コメント数:  0件
  kmth  | 2000/03/27 (月) 01:14
 http://www3.cds.ne.jp/~kmth/software/
> いつからそうなってました? うちではアプリケーションの方で、
> ...中略
> 気になるようなら、古いバージョンのソースと見比べてみましょうね。
誠に申し訳ありません。m(_ _)m
思いっきり勘違いしてました。
自分のDblClickのイベントに書き加えたコードを見落として、思い込みで書き込みしたことを恥ずかしく思います。
本当に失礼しました。
本田さん、K2さん他皆様、混乱させて申し訳ありませんでした。
m(_ _)m



381 Re: Atokでの単語登録 コメント数:  2件
  本田勝彦  | 2000/03/27 (月) 00:44
 http://homepage3.nifty.com/~katsuhiko/
>  大変ご無沙汰しております。

ども〜、お久ですね。お元気でしたか(^^)

>  RichEditを使ったアプリや秀丸、EmEditorなどではAtokで単語登録をする際文字
> 列を反転してやると、反転した文字列が自動的にクリップボードにコピーされその
> 文字列を単語登録の対象とすることができますがTEditorではできないようです。
>  何か対策があるでしょうか?

だいぶ前にご指摘を頂いたような気がします(^^;
何かのメッセージがやって来るので、というお話でした。
いまだに実装はされていません。調べてみますね。



380 Re^4: TEditor ver 1.52 コメント数:  0件
  本田勝彦  | 2000/03/27 (月) 00:39
 http://homepage3.nifty.com/~katsuhiko/
>実際に組み込んで試用してみます。気付いた点がありましたらまた、
>書き込みにきますね。

お待ちしてま〜す(^^)




379 Re^4: TRegManagerについて コメント数:  0件
  兎犬  | 2000/03/27 (月) 00:29
> 追加情報です。
>
> 生まれつきキャプションの無いパネルをこしらえるという手もあります。

Delphiは本当に柔軟ですね。
私は初心者でしかもアホですが、さわっててとても楽しいです。
プログラミングはコンポーネント頼りなのでこれからもがんばってください。



378 Atokでの単語登録 コメント数:  3件
  ゆうきひろ  | 2000/03/26 (日) 17:00
 http://www.remus.dti.ne.jp/~kinpotwn/mozart/Nami2000.htm
 大変ご無沙汰しております。
 RichEditを使ったアプリや秀丸、EmEditorなどではAtokで単語登録をする際文字
列を反転してやると、反転した文字列が自動的にクリップボードにコピーされその
文字列を単語登録の対象とすることができますがTEditorではできないようです。
 何か対策があるでしょうか?

 TEditorのバージョンはまだ 1.34 です(^^;)。



377 Re^4: TEditor ver 1.52 コメント数:  1件
  K2  | 2000/03/26 (日) 10:30
 http://web.kyoto-inet.or.jp/people/koyabu/
K2です。

> > > なぜダブルクリックでのワード選択を標準から外されたのでしょう?
> > あれぇ?デフォでそうなっていましたっけ?
> はい。少なくとも、v1.51では。

いつからそうなってました? うちではアプリケーションの方で、
ダブルクリック時にワード選択するようにコーディングしています。
HEditor.pasをみても、DblClick時の動作は特に規定されていないと
思います。(うちのHEditorは、オリジナルからはかけ離れているけど)

気になるようなら、古いバージョンのソースと見比べてみましょうね。



376 Re^3: TEditor ver 1.52 コメント数:  3件
  kmth  | 2000/03/26 (日) 00:54
 http://www3.cds.ne.jp/~kmth/software/
> > なぜダブルクリックでのワード選択を標準から外されたのでしょう?
> あれぇ?デフォでそうなっていましたっけ?
はい。少なくとも、v1.51では。
でも、ユーザがダブルクリック時の挙動を決められるので、このままの方が良いと思います。
時間なくまだメインの開発環境の方に組み込めていないので、実際に組み込んで試用してみます。気付いた点がありましたらまた、書き込みにきますね。
ではまた。



375 Re^3: TRegManagerについて コメント数:  1件
  本田勝彦  | 2000/03/26 (日) 00:36
 http://homepage3.nifty.com/~katsuhiko/
> > なので、復帰させた後で、キャプションを消すという作業をやっていただくより
> > 今のところ方法は無いように思います。

追加情報です。

生まれつきキャプションの無いパネルをこしらえるという手もあります。

unit ToolPanel;

interface

uses
Classes, ExtCtrls;

type
TToolPanel = class(TPanel)
public
constructor Create(AOwner: TComponent); override;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TToolPanel]);
end;

constructor TToolPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle - [csSetCaption];
end;

end.

というのをコンポーネントインストールして使うという手もあります。



374 Re: TEditor ver.1.52 コメント数:  0件
  本田勝彦  | 2000/03/26 (日) 00:29
 http://homepage3.nifty.com/~katsuhiko/
> ドラッグ中にESCキーを押したとき、ドラッグ操作を解除する
> ことはできないでしょうか。
> Win95インターフェイスでは、ESCキーを押せば解除できること
> になっているようですので。

あ、やっぱり(^^;)

TDragObject のD&Dでは、かなり面倒な処理が必要になります。たぶん^^;

TEditor がドラッグ中は、override した WndProc がキーメッセージを殺して
いますので、そこで・・・あ゛キャンセルするメソッドは現在用意されていませんね。
フラグも private だし・・・やっぱ何かちょっとしっくり行ってない部分が
今回のバージョンにはあります。VCLらしさに欠けるという感じですね。

考えて見ます。ご意見ありがとうございます。



373 TEditor ver.1.52 コメント数:  1件
  K2  | 2000/03/25 (土) 19:26
 http://web.kyoto-inet.or.jp/people/koyabu/
こんにちは。K2です。

マウスドラッグによる選択範囲移動、今日、やっと試すことが
できました。(なかなか暇ができなかったので)
Tab内にもキャレットが入らなくなりました。どうもありがとう
ございます。

ところで、マウスドラッグですが、おおむねうまく動作してい
るようです。もうちょっと様子を見て一般公開に持ち込みたい
と思います。

ドラッグ中にESCキーを押したとき、ドラッグ操作を解除する
ことはできないでしょうか。
Win95インターフェイスでは、ESCキーを押せば解除できること
になっているようですので。



372 Re^2: TEditor ver 1.52 コメント数:  4件
  本田勝彦  | 2000/03/24 (金) 23:46
 http://homepage3.nifty.com/~katsuhiko/
どうも、お久です。

> なぜダブルクリックでのワード選択を標準から外されたのでしょう?

あれぇ?デフォでそうなっていましたっけ?



371 Re^2: TEditor ver 1.52 コメント数:  0件
  本田勝彦  | 2000/03/24 (金) 23:45
 http://homepage3.nifty.com/~katsuhiko/
> やっと出てきまして、皆様始めまして
> さっそくですが V1.52 頂いてまいりますm(__)m
> 何が変わったのかな〜、楽しみ、楽しみ

ようこそいらっしゃいませ。(^^)
使い勝手など教えて下さいね。



370 Re: TEditor ver 1.52 コメント数:  5件
  kmth  | 2000/03/24 (金) 14:37
 http://www3.cds.ne.jp/~kmth/software/
v1.52早速頂きました。ドラッグ&ドロップサポートありがとうございます。

で、ちょっと気になった点:
なぜダブルクリックでのワード選択を標準から外されたのでしょう?
ヘルプにあった以下で実現は可能ですが...
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;



369 Re: TEditor ver 1.52 コメント数:  1件
  sakaiy  | 2000/03/24 (金) 08:31
やっと出てきまして、皆様始めまして
さっそくですが V1.52 頂いてまいりますm(__)m
何が変わったのかな〜、楽しみ、楽しみ



368 TEditor ver 1.52 コメント数:  8件
  本田勝彦  | 2000/03/23 (木) 23:43
 http://homepage3.nifty.com/~katsuhiko/
お待たせしました。公開致しましたので、お試し下さい。
ご意見などお待ちしております。



367 Re^2: TRegManagerについて コメント数:  2件
  兎犬  | 2000/03/23 (木) 23:09
> Delphi の仕様だと思います。

知りませんでした。

> なので、復帰させた後で、キャプションを消すという作業をやっていただくより
> 今のところ方法は無いように思います。

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



366 Re: TRegManagerについて コメント数:  3件
  本田勝彦  | 2000/03/23 (木) 05:30
 http://homepage3.nifty.com/~katsuhiko/
> はじめまして。
> TRegManagerを利用させていただいてます。

ども、ようこそいらっしゃいまし。(^^)

> ツールバーとして使用しているパネルを復帰させたときにパネルのNAME
> プロパティが表示されてしまいます。
> どこか設定がまずいのでしょうか。
> パネルのキャプションにはなにも入れていません。

これは、Delphi の仕様だと思います。例えば、設計時にキャプションのない
パネルをコピーして、他のフォームに貼り付けるとキャプションが出て来るでしょ。
なので、復帰させた後で、キャプションを消すという作業をやっていただくより
今のところ方法は無いように思います。



365 Re^5: 間もなく コメント数:  0件
  本田勝彦  | 2000/03/23 (木) 05:24
 http://homepage3.nifty.com/~katsuhiko/
> 選択範囲、ドラッグ時等のマウスカーソル変更と、
> レフトマージンをクリックで行選択です〜

あら〜(^^; でもね、ドラッグ中に右クリックされると悲惨しません?
新バージョンでは、WndProc を override して、この辺も改善されてます。

> 自分なりに苦労したので、ついつい書き込んでしまいました。f(^^;)

えぇ、行選択は特に苦労しましたね。苦労の割には見返りが(^^;
と今作成中のヘルプにも書きました(^^;;;;;;;

> ところで、1.00 から HEditor.pas をちまちまと改造してますが、
> 本田さん書いたソース見ているだけでほんとーーに勉強になります。

> #最高の参考書です♪

どもども(^^)



364 TRegManagerについて コメント数:  4件
  兎犬  | 2000/03/22 (水) 23:58
はじめまして。
TRegManagerを利用させていただいてます。

TRegManagerでComponent復帰時について質問させてください。
ツールバーとして使用しているパネルを復帰させたときにパネルのNAMEプロパティが表示されてしまいます。
どこか設定がまずいのでしょうか。
パネルのキャプションにはなにも入れていません。



363 Re^4: 間もなく コメント数:  1件
  てらお  | 2000/03/22 (水) 00:38
 http://www2s.biglobe.ne.jp/~t-susumu/toclip/
> あら、どのあたりでしょう?

選択範囲、ドラッグ時等のマウスカーソル変更と、
レフトマージンをクリックで行選択です〜
#仕様は違うかも

自分なりに苦労したので、ついつい書き込んでしまいました。f(^^;)
すみません。m(__)m

ところで、1.00 から HEditor.pas をちまちまと改造してますが、
本田さん書いたソース見ているだけでほんとーーに勉強になります。
#最高の参考書です♪

いまさらですが、ソースを公開して頂いて感謝感謝です〜 (^-^)



362 Re^3: 間もなく コメント数:  2件
  本田勝彦  | 2000/03/21 (火) 23:59
 http://homepage3.nifty.com/~katsuhiko/
> 早まった〜
> 自力で実装しまったですぅ〜 (T.T)

あら、どのあたりでしょう?
プロパティ設定で黙りおろさせることも出来ますので、そう泣かんでも(^^;;;



361 Re^2: 間もなく コメント数:  3件
  てらお  | 2000/03/21 (火) 15:54
 http://www2s.biglobe.ne.jp/~t-susumu/toclip/
早まった〜
自力で実装しまったですぅ〜 (T.T)



360 Re: 間もなく コメント数:  4件
  本田勝彦  | 2000/03/21 (火) 00:36
 http://homepage3.nifty.com/~katsuhiko/
補足(^^;

> また、今まで private だったメソッド群を public にしますので、

全部ではありません。ドラッグ&ドロップに必要なメソッドを
public に致します。



359 間もなく コメント数:  5件
  本田勝彦  | 2000/03/21 (火) 00:34
 http://homepage3.nifty.com/~katsuhiko/
TEditor ver 1.52 がリリースされる予定です。

選択文字列のマウスでの移動・コピー処理で、マウスカーソルを指定出来る
ようになります。

また、今まで private だったメソッド群を public にしますので、
MouseDown イベントハンドラ内で Editor1.BeginDrag(False); が可能に
なります。

おまけとして、右向きカーソルリソースを同梱し、TEditor が LoadCursor
しますので、レフトマージン内で使えるようになります。で、レフトマージン内で
WM_LBUTTONDOWN すると行選択が出来るようになります。今ここを実装中です。

お楽しみに(^^)



358 Re^3: キャレットのゴミが・・・ コメント数:  0件
  てらお  | 2000/03/18 (土) 01:29
 http://www2s.biglobe.ne.jp/~t-susumu/toclip/
早速ありがとうございます〜
バッチリOKです。(^-^)



357 Re^2: キャレットのゴミが・・・ コメント数:  1件
  本田勝彦  | 2000/03/18 (土) 00:27
 http://homepage3.nifty.com/~katsuhiko/
procedure TEditor.WMLButtonDown(var Message: TWMLButtonDown);
var
Shift: TShiftState;
begin
Shift := KeyDataToShiftState(Message.Keys);
if ssShift in Shift then
begin
if not Selected then
InitSelection;
// キャレット移動
SetRowColByPos(Message.XPos, Message.YPos);
// 選択状態へ移行・再入
SetSelection;
end
else
begin
// 選択領域の開始位置になるかもしれないポイントを取得
FMouseSelStartPos.X := Message.XPos;
FMouseSelStartPos.Y := Message.YPos;
// キャレット移動
CaretBeginUpdate; // ※
try
SetRowColByPos(Message.XPos, Message.YPos);
if FCaret.FSelMove and Selected and
(FSelectionMode = smLine) and IsSelectedArea then
// フラグ設定
FSelMoving := True
else
// 選択領域を初期化
InitSelection;
finally
CaretEndUpdate; // ※
end;
end;
inherited; // Windows.SetFocus cf DefaultHandler
Message.Result := 0;
end;



356 Re: キャレットのゴミが・・・ コメント数:  2件
  本田勝彦  | 2000/03/18 (土) 00:27
 http://homepage3.nifty.com/~katsuhiko/
> 選択状態にした後、選択範囲以外の場所をクリックすると、
> その位置にキャレットのゴミが残ることがあります。

サンプル画像までありがとうございました。サンプルプロジェクトでも
確認できました。

> もし、HEditor.pasを少し改造するだけで修正可能であれば、
> その方法を教えて頂けないでしょうか?

WMLButtonDown メッセージハンドラを次発言のように変更してみて下さい。
キャレット移動部分を CaretBeginUpdate; CaretEndUpdate でサンドイッチ
しています。



355 キャレットのゴミが・・・ コメント数:  3件
  てらお  | 2000/03/17 (金) 14:01
 http://www2s.biglobe.ne.jp/~t-susumu/toclip/
こんにちは、てらおです。

TEditorでちょっと気になるところがありました。
選択状態にした後、選択範囲以外の場所をクリックすると、
その位置にキャレットのゴミが残ることがあります。

 サンプル画像:
 http://www2s.biglobe.ne.jp/~t-susumu/toclip/tmp/hedit.gif

確認した環境は、
 - Win95
 - Delphi4
 - TEditor1.51 (ノーマルソース)
 - サンプルプロジェクト
です。

この現象が起きると、アプリ終了時にランタイムエラーが発生します。
ディスプレイドライバが原因かと思い、他のPCでも確認してみましたが
同様でした。

もし、HEditor.pasを少し改造するだけで修正可能であれば、
その方法を教えて頂けないでしょうか?

よろしくお願いします。



354 Re^4: 選択文字列移動関連カーソル コメント数:  0件
  本田勝彦  | 2000/03/17 (金) 03:42
 http://homepage3.nifty.com/~katsuhiko/
> OnSelMoving( TObject * Sender, AnsiString SelText, int X, int Y );
> OnSelMoveEnd( TObject * Sender, AnsiString SelText, int X, int Y );

なるほど\(^o^)/

が、現在、秀丸ライクなD&Dをマウスカーソルも含めて実装したところなんですよね。
でも、WM_LBUTTONDOWN から少しカーソルが動いたら始まるDelphi 標準D&Dや
中野さんのようなOLED&Dにも対応出来るような仕様にしたいと思っています。

プロパティ設定によって
「お任せおっけ〜」と「どうにも出来るぞ」な仕様に出来れば良いなぁと・・・

もう少し考えてみます。




353 Re^3: 選択文字列移動関連カーソル コメント数:  1件
  中野克平  | 2000/03/15 (水) 01:59
> OLE はいまだ全く不案内なのですが、そういうイベントがありさえすれば
> OLEドラッグ&ドロップが実装できるんですね。やってみます。

私はBCB派なので、BCB風に補足すると、

OnSelMoving( TObject * Sender, AnsiString SelText, int X, int Y );
OnSelMoveEnd( TObject * Sender, AnsiString SelText, int X, int Y );

という感じでしょうか?

X,Y が親フォームの範囲外であれば、OLEドロップ発動、
範囲内であれば、同一フォーム内でのドロップ処理。

OnSelMovingでOnDragOverを処理、OnSelMoveEndでOnDragDropを処理。

よろしくお願いします。

私の作っているアプリはますますTEditorへの依存度を高めていきます。:-)



352 Re^2: 選択文字列移動関連カーソル コメント数:  2件
  本田勝彦  | 2000/03/15 (水) 00:05
 http://homepage3.nifty.com/~katsuhiko/
> OLEドラッグ&ドロップで、他のアプリに選択テキストをドロップする
>(この機能はユーザーが実装、あるいは専用コンポを利用)ために、
>OnSelMoveStart/OnSelMoveEndなんていうイベントがあったらいいのでは?

ご意見どうもです。(^^)
OLE はいまだ全く不案内なのですが、そういうイベントがありさえすれば
OLEドラッグ&ドロップが実装できるんですね。やってみます。



351 Re: 選択文字列移動関連カーソル コメント数:  3件
  中野克平  | 2000/03/14 (火) 19:47
> 他にご意見などありましたら宜しくお願い致します。

OLEドラッグ&ドロップで、他のアプリに選択テキストをドロップする(この機能はユーザーが実装、あるいは専用コンポを利用)ために、OnSelMoveStart/OnSelMoveEndなんていうイベントがあったらいいのでは?