喫茶XRAYトップページ

[スレッド全体
]

[4899] Re6:TStringGridにTEditを表示返信 削除
2011/6/19 (日) 11:03:53 Sara
▼ Mr.XRAYさん

こんにちは Saraです。

> > http://mrxray.on.coocan.jp/Delphi/zipothers/StringGrid_TEdit.zip
>
> ちょっとだけ修正しました.
> 矢印キーの移動も追加してみました.
> これって,全セルTEditでもいいような気がしてきました.(^^;


そうですね、私もそんな気がしてきています。(^^;
(自分のやりたいことが、ほぼ実現できてきました)

Syakeさん TInplaceEditより全然良いです。
さすが >TStringGrid使いといえば私です。(^_^)V
です。(^^)V

ところで、マスター、上記のURLのデモ、矢印で
Editの表示列からEditの表示されない列移動すると、
表示されない列の内容が書き換わりますが(^^;

[4900] Re7:TStringGridにTEditを表示返信 削除
2011/6/19 (日) 11:27:43 Sara
▼ Mr.XRAYさん

こんにちは、Saraです。

いろいろと、いじって見て思ったのですが、
DrawCellでEditにフォーカスを与えるときに、マウスの位置が
StringGrid上にあるかどうかを確認しないと、StringGrid外に
ボタン等を配置したときに、ボタン等のイベントが起きないです。
(ボタンを連射しているとたまにイベントが起きますが(^^; )

なので、こんな感じで・・・(もっと良い方法があるかな・・・ Syakeさん)

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var APos : TPoint;
begin
  //選択セルの場合のみ処理
  if gdSelected in State then begin
    //エディトを表示する列の番号は2
    if ACol = 2 then begin
      GetCursorPos(APos);
      if FindVCLWindow(APos) = StringGrid1 then begin
         SetWindowPos(Edit1.Handle,
                   0,
                   Rect.Left + StringGrid1.Left + 1,
                   Rect.Top,
                   Rect.Right - Rect.Left,
                   Rect.Bottom - Rect.Top + 2,
                   SWP_NOZORDER);
        Edit1.Visible := True;
        Edit1.SetFocus;
      end;
    end else begin
      if Edit1.Visible then begin
        Edit1.Visible := False;
        StringGrid1.SetFocus;
      end;
    end;
  end;
end;


[4901] Re7:TStringGridにTEditを表示返信 削除
2011/6/19 (日) 14:49:45 Mr.XRAY
▼ Saraさん

> ところで、マスター、上記のURLのデモ、矢印で
> Editの表示列からEditの表示されない列移動すると、
> 表示されない列の内容が書き換わりますが(^^;


仕様です.
スミマセン.ダウンロードされた方,修正してご利用ください.




[4902] Re8:TStringGridにTEditを表示返信 削除
2011/6/19 (日) 21:40:47 Sara
こんばんは、Saraです。

> DrawCellでEditにフォーカスを与えるときに、マウスの位置が
> StringGrid上にあるかどうかを確認しないと、StringGrid外に
> ボタン等を配置したときに、ボタン等のイベントが起きないです。
> (ボタンを連射しているとたまにイベントが起きますが(^^; )
>
> なので、こんな感じで・・・(もっと良い方法があるかな・・・ Syakeさん)


と、書きましたが、StringGrid1.Focusedを調べるだけで良いですね・・・(^^;


[4903] Re9:TStringGridにTEditを表示返信 削除
2011/6/19 (日) 22:22:54 Mr.XRAY
▼ Saraさん

> と、書きましたが、StringGrid1.Focusedを調べるだけで良いですね・・・(^^;

あっ,なるほど.
前に業務アプリでコンボボックスで選択する方式のを作成したのですが,
その時は,タブキーに移動,マウスホイールで,コンボボックスのリストが
変化しないようにしたりしたのですが,コードがどこに...

でも,こういう情報欲しいですね.
そうすれば,サンプルプログラム集のコードもいろいろ修正して提供できる
んですが...


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82