喫茶XRAYトップページ

[スレッド全体
]

[4886] Re4:TStringGridにTEditを表示返信 削除
2011/6/15 (水) 19:07:02 Mr.XRAY
▼ Syakeさん
▼ Saraさん

> 何もありません。

いや,結構いろいろTEditで設定できるのでいいと思いますです.
サンプル作ってみました.
矢印キー等でのセル移動は実装していません.
必要であれば,TEditのOnKeyPressとかOnKeyDownに書いてくださいませ.
Rectの位置と大きさも調整が必要かも...

http://mrxray.on.coocan.jp/Delphi/zipothers/StringGrid_TEdit.zip


[4887] Re5:TStringGridにTEditを表示返信 削除
2011/6/15 (水) 19:37:06 Mr.XRAY
> サンプル作ってみました.

あぅ,ゴメンなさい.

> TStringGrid使いといえば私です。(^_^)V

と豪語するSyakeさんを差し置いて,大変失礼しました.


[4888] Re6:TStringGridにTEditを表示返信 削除
2011/6/15 (水) 22:18:39 Sara
▼ Mr.XRAYさん
▼ Syakeさん
こんばんは


▼ Syakeさん
>TEdit以外も使うもので、慣れてしまいました。
あぁ、なるほど、それもメリットの1つですね。
しかも、結構重要かも・・・(^^; InplaceEditのことしか頭になかった。

▼ Mr.XRAYさん
> サンプル作ってみました.
仕事が速いですねぇ (・o・)吃驚

サンプル確認しました。なるほど・・・

ちょっと、いじり倒してみます。(^^;

ありがとうございました。m(_ _)m

[4889] Re7:TStringGridにTEditを表示返信 削除
2011/6/15 (水) 22:54:41 Mr.XRAY
> 仕事が速いですねぇ (・o・)吃驚

いえいえ,最近UPしたStringGridのサンプルにひな形がありますからね.
手間は大してかかりません.
それよりも,TEditを使うとはね.
マルチライン(複数行)入力ならTMemoという頭はあったのですが.
これも,Saraさんが話題を提供してくれたおかげですね.
サンクスです.

ネットで,編集中のセルの背景を変更したいというのがあったので,
サンプルを作成したのですが,TEditかTMemo使った方が柔軟性はある
ような気がします.


[4898] Re5:TStringGridにTEditを表示返信 削除
2011/6/19 (日) 07:01:42 Mr.XRAY
> http://mrxray.on.coocan.jp/Delphi/zipothers/StringGrid_TEdit.zip

ちょっとだけ修正しました.
矢印キーの移動も追加してみました.
これって,全セルTEditでもいいような気がしてきました.(^^;


[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