Clickイベントで使う値をそのClickで取得するには?


富士屋  2004-07-09 20:24:44  No: 114664  IP: [192.*.*.*]

初心者で困っているのですが、
TDBGridで何らかのデータを表示している状態で
例えば、カレント行の値が"123"として、
他の行の"ABC"というデータが入っている行をクリックすると、
その"ABC"をラベルに表示しようと思って、

Private Sub TDBGrid1_Click()

    Label1.Caption = TDBGrid1.Columns(0).text

End Sub

上のような感じで出来るかと思ったのですが、
色々試してみると、どうやらクリックイベントはクリックと同時に起こるため、
表示したい行をクリックしても、
その前に選択されていた行の値を返してしまうようなのです。
なので、"ABC"ではなく、"123"とラベルに表示してしまいます。
そのあとで、"ABC"を選択状態にしているみたいです。

何か良い解決方法がありましたら、教えていただきたいと思っています。

(Windows2000 VB6 SP5)

編集    削除
いちゆ  2004-07-09 20:48:09  No: 114665  IP: [192.*.*.*]

MouseUpイベントとかは無い?

編集    削除
富士屋  2004-07-09 20:57:08  No: 114666  IP: [192.*.*.*]

MouseUpも試してみたんですけれど、
クリックと同じ結果になってしまって、ダメでした。

編集    削除
nanashi  2004-07-09 21:14:59  No: 114667  IP: [192.*.*.*]

試してないけど、DoEventsを入れてみるとか。

編集    削除
koma  2004-07-09 22:19:03  No: 114668  IP: [192.*.*.*]

オンラインヘルプでイベント一覧を探してみては?
適切なイベントが他にあるかも。

編集    削除
富士屋  2004-07-09 23:03:46  No: 114669  IP: [192.*.*.*]

ヘルプでイベント一覧を探してみました。
一応、一覧であやしいのは全部試してはみたのですが、どれもだめでした。
DoEventはどのように使えばいいのですか?
使ったことがないので、調べてみたのですが、OSに処理を渡す?
ということでしたが…。
もしくは、クリックし終わった後に、処理を実行することが出来れば、
と思ったのですが、そのようなことって可能なのでしょうか?

編集    削除
ken  2004-07-10 00:01:52  No: 114670  IP: [192.*.*.*]

ダブルクリックイベントってなかったでしたっけ?
そっちでカレント行をとるとか?

編集    削除
富士屋  2004-07-10 00:06:41  No: 114671  IP: [192.*.*.*]

ダブルクリックだとできました!!
しかしながら、出来れば、タッチパネルに対応したいので、
それはさけたいのですが…。いかがなものでしょうか?

編集    削除
ぴろあき  2004-07-10 00:10:33  No: 114672  IP: [192.*.*.*]

TextBoxとかはClickイベントで、既に値が入ってますね。
Private Sub Text1_Click()
    Debug.Print Text1.Text
End Sub

データベース系のコントロール扱った事ないんですが、
>Columns(0)
これって0列のデータって事ではないですよね?
だから、"123"と表示されているなんて事は。。。
外してたら、スルーでよろしく。

編集    削除