フレックスグリッドからのデータ取得について

解決


ゆうき  2005-04-12 08:17:30  No: 120803

WindowsXP & VB6(SP6)です。

早速ですが、
『フォームにフレックスグリッドとコマンドボタンを貼り付け、
ボタンを押すか選択した行をダブルクリックすると
対象の行のデータを取得し、別のフォームを開き、そこへ
取得したデータを表示する』
といったことをやろうとしているのですが、解決できない
問題が2つ程あり悩んでいます。
何卒ご助力の程、よろしくお願いいたします。

1つ目:一番上に固定行を1行配置しているのですが、
ここをダブルクリックしてもデータを取得し、別フォームを
開いてしまいます。そのとき表示されるデータは1行目
のデータです。
固定行がクリックされたときは無視するようにできないの
でしょうか?

2つ目:選択している行がなくても、ボタンを押すと別フォーム
を開きデータを表示してしまいます。
選択している行がない場合は、ボタンを押しても何もしない
ようにするということはできないのでしょうか?

'***********************************
'フレックスグリッドのプロパティ
'固定行 : 1行
'固定列 : 1行
'強調表示 : 2-With Focus
'アクティブセル : 0-None
'***********************************

'以下記述している全コード
Dim data As Integer '別フォームに表示するデータ

Private Sub Command1_Click()
    MSFlexGrid1.Col = 1
    data = MSFlexGrid1.Text
    Form2.Show
    Form2.Text1.Text = data
End Sub

Private Sub Form_Load()
    With MSFlexGrid1    'グリッドにデータを表示
        For i = 1 To 10
            .Col = 1
            .Row = i
            .Text = i
        Next
    End With
End Sub

Private Sub MSFlexGrid1_DblClick()
    Command1_Click
End Sub

'以上、よろしくお願いいたします。


いな  2005-04-12 08:43:34  No: 120804

>1つ目も2つ目も同じような解決法が提案できます。

処理を行いたくない固定行が選択されていた場合、IF文を用い、
Private Sub Command1_Click()
を処理しないようにしましょう。

MSFlexGrid1を調べると
とあるプロパティに現在選択している行の
情報が格納されていますので、
if MSFlexGrid1.???? <> 1 Then
というような条件で、1行目が選択されている場合、処理はされません。


ゆうき  2005-04-13 08:41:14  No: 120805

いな様、ご回答ありがとうございます。
いな様のご指摘により再度ヘルプ等を利用し解決を試みました結果、
2つ目の質問に関しては私の勘違いだということが判明いたしました。
任意に行を選択しなくても、常にアクティブになっている行というものが
存在するのですね。無知でした。すみません。
ただ、1つ目の質問に関しては未だ未解決の状態でして、MSDNで
MSFlexGridのプロパティを一通り調べたのですが、適当と思われるものが
見当たりませんでした。(理解できなかったものも結構あったりして)
それでも、これかなっ?と思えるのは、rowプロパティなのですが、これだと
一番上の固定行をクリックしても、1行目のデータが表示されている行を
クリックしても、どちらも"1"が代入されてしまい区別がつきません。なぜ?
rowプロパティではだめなのでしょうか?


みい  2005-04-13 10:04:54  No: 120806

MouseRowってなかったですっけ?


みい  2005-04-13 10:16:55  No: 120807

途中送信してしまいました。
固定行をクリックすると一番近い固定じゃないとこがアクティブに
なります。
MouseXXでマウスの位置の行・列が取ってこれます。
固定行クリックすると固定行位置にマウスポインタがあるので…。
ただし、確認する時にMouseXXの前にブレイクつけちゃいけません。
マウスポインタ動いたら取ってくる位置変わりますからね。


ザリガニ  2005-04-13 18:16:11  No: 120808

Private Sub MSFlexGrid1_DblClick()
    If MSFlexGrid1.MouseRow > 0 Then
    Command1_Click
End Sub


ザリガニ  2005-04-13 18:16:11  No: 120809

Private Sub MSFlexGrid1_DblClick()
    If MSFlexGrid1.MouseRow > 0 Then
    Command1_Click
End Sub


ザリガニ  2005-04-13 18:17:06  No: 120810

Private Sub MSFlexGrid1_DblClick()
    If MSFlexGrid1.MouseRow > 0 Then
       Command1_Click
    End If
End Sub


ゆうき  2005-04-14 07:18:32  No: 120811

いな様、みい様、ザリガニ様
ご指導のとおり行ったところ、
無事解決いたしました。
どうもありがとうございました。


ゆうき  2005-04-14 07:19:05  No: 120812

チェック忘れてました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加