TDBGridで特定のセルを編集不可にするには?

解決


みるく  2005-05-18 11:58:16  No: 121749  IP: [192.*.*.*]

あるマスターテーブルから一覧を下記のように表示させ、
登録・更新・削除を行っています。

削除  コード  名称
 □      1    あああ
 □      2    いいい

テーブルにデータがあったときに、そのレコードのコードを
変更不可にしたいのですが、削除のチェックボックスや名称は
変更できるようにしたいです。
テーブルにあるデータのコードだけを
編集不可にすることは可能でしょうか?

ネットで色々検索してみたのですが、列全体を編集不可にするような
やり方しか見つけられなかったので、質問してみました。
可能かどうかだけでも教えていただけないでしょうか?
よろしくお願いします。

編集 削除
特攻隊長まるるう  2005-05-18 18:19:17  No: 121750  IP: [192.*.*.*]

>可能かどうかだけでも教えていただけないでしょうか?
それが一番難しい質問でしょうね。工夫しだいでどうにか
なる場合がありますから。そういった設定ができるプロパティ
などが用意されてるかどうかは、使った事がないので全く
知りませんが、無くてもそれなりの物はできるでしょう。

例えば、
[VB6.0]の MSFlexGrid は編集できませんが、ヘルプには
KeyPress イベントで選択セル位置にテキストボックスを表示し、
そのテキストボックスの値をプログラムから代入する事により
編集を実現してるサンプルが載ってます。
Click イベントや KeyPress イベントくらいはあるんじゃないですか?。
…なら可能と言う事になるでしょう。

編集 削除
葉月α  2005-05-19 10:34:55  No: 121751  IP: [192.*.*.*]

処理の仕方次第ですよね
まるるうさん仰っているイベント関係は存在します

ただDBGの特性上たいていバインドして行変えた(カーソルが行を変更した)瞬間更新
が普通の処理なので、仕様次第でしょう・・・

できるできないで言えばできます・・・となるのかな

バインドしないで更新なら同社(推定グレープシティ)のスプレッドシートの利用も考えられるかも知れませんね
確かこれならセル単位でロックとかできますからね

編集 削除
いな  2005-05-19 10:44:59  No: 121752  IP: [192.*.*.*]

>可能かどうかだけでも教えていただけないでしょうか?

ぢぶんは
実現が不可!という情報が明らかで無ければ
可能だぁ〜、できるんだぁ〜
っと思い込んで、試練の道を行くだろうなぁ〜、

#だから今月もデスマーチ(orz

編集 削除
みるく  2005-05-25 17:34:38  No: 121753  IP: [192.*.*.*]

投げっぱなしみたいになってしまってすいません;
教えていただいたように、keypressやkeydownのところに
入力をキャンセルするような処理を書いたりしたのですが
if tdbgrid1.text <> "" or keycode = 46 then
   keycode = 0
end if
ちょっと考えが浅すぎたようで、表示されているところには
入力もdeleteもできないようになってますけど、
1文字でも入力したらこれに引っかかってしまうじゃん><;
ってことになったりして、無理矢理やるには技術も時間も
足りませんでした・・・

結局上司にそこはいいと言われてしまいました。
どうやら私が勝手に細かく作ろうとしてただけみたいで。。すみません。。
まだTDBGridを使った仕事を2,3度しかしたことがないので
これからもっと勉強したいと思います。
お答えいただいた皆さん、ありがとうございました。

編集 削除