[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/01/11(Tue) 13:53
投稿者名:緋桜
Eメール:
URL :
タイトル:
Index値の受け渡しについて(PopUp,API使用)
まず一つのフォームにLbl_SetTemplateFolderという名前のラベルがあり、それは
配列(0 to 4)の計5つ存在します。

Private Sub Lbl_SetTemplateFolder_MouseUp(Index As Integer, _
                                          Button As Integer, _
                                          Shift As Integer, _
                                          x As Single, _
                                          y As Single)
'ラベルをクリックした際の処理

  '左クリックを制御
    If Button = vbLeftButton Then
        If Lbl_SetTemplateFolder(Index).Caption = vbNullString Then
        Else
          '動作ファイル名をフルパスで表示する
            MsgBox "動作ファイルには現在、" & vbCrLf & vbCrLf & _
                   " フォルダ名:" & _
                   Lbl_SetTemplateFolder(Index).Caption & vbCrLf & _
                   "が読み込まれています", _
                   vbOKOnly + vbInformation, "動作ファイル"
        End If
  '右クリックを制御
    ElseIf Button = vbRightButton Then
      '「フォルダ変更」のポップアップを表示する
        MainForm.PopupMenu MainForm.Mnu_PopFolder
    End If

End Sub

Private Sub Mnu_ChangeFolder_Click()
'「フォルダ変更」のポップアップをクリックした際の処理

  Dim StrFolder     As String

 'SHBrowseForFolderのAPIを使用しフォルダのパスを返す
 'ShowFolder Functionは標準モジュールに格納されています。
    StrFolder = ShowFolder

    If StrFolder = vbNullString Then
      'キャンセルが押されたので何も処理は行わない
    Else
      'ラベルの中身を書き換える
        Lbl_SetTemplateFolder(0).Caption = StrFolder
    End If

End Sub

上記コードでは各ラベルをクリックした時は、配列の何番をクリックしたのかをIndexで判定できます

が、その後選択したフォルダ名を書き込む際に上記では(0)と打っていますが、ここに
Index値を入れておかねば意味ないのです。
どうやってIndex値の受け渡しが出来るのでしょうか?
MouseUpの時点でIndex値をPublic変数に叩き込んでおけばいいのですが、
部の方針でPublic変数使用禁止なので、くだらないことで困っています。
どうしても受け渡しが不可能ならば許可を得てPublic変数を使いますが、
可能か不可能かだけでも解れば幸いです。

投稿時間:2005/01/11(Tue) 14:53
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re: Index値の受け渡しについて(PopUp,API使用)
Tagプロパティに入れるとか。

> Private Sub Lbl_SetTemplateFolder_MouseUp(Index As Integer, _
>                                           Button As Integer, _
>                                           Shift As Integer, _
>                                           x As Single, _
>                                           y As Single)
> 'ラベルをクリックした際の処理
>
>   '左クリックを制御
>     If Button = vbLeftButton Then
>         If Lbl_SetTemplateFolder(Index).Caption = vbNullString Then
>         Else
>           '動作ファイル名をフルパスで表示する
>             MsgBox "動作ファイルには現在、" & vbCrLf & vbCrLf & _
>                    " フォルダ名:" & _
>                    Lbl_SetTemplateFolder(Index).Caption & vbCrLf & _
>                    "が読み込まれています", _
>                    vbOKOnly + vbInformation, "動作ファイル"
>         End If
>   '右クリックを制御
>     ElseIf Button = vbRightButton Then
>       '「フォルダ変更」のポップアップを表示する
          MainForm.Mnu_ChangeFolder.Tag = Index
>         MainForm.PopupMenu MainForm.Mnu_PopFolder
>     End If
>
> End Sub
>
> Private Sub Mnu_ChangeFolder_Click()
> '「フォルダ変更」のポップアップをクリックした際の処理
>
>   Dim StrFolder     As String
>
>  'SHBrowseForFolderのAPIを使用しフォルダのパスを返す
>  'ShowFolder Functionは標準モジュールに格納されています。
>     StrFolder = ShowFolder
>
>     If StrFolder = vbNullString Then
>       'キャンセルが押されたので何も処理は行わない
>     Else
>       'ラベルの中身を書き換える
          Lbl_SetTemplateFolder(MainForm.Mnu_ChangeFolder.Tag).Caption = StrFolder
>     End If
>
> End Sub

投稿時間:2005/01/11(Tue) 18:51
投稿者名:緋桜
Eメール:
URL :
タイトル:
上記、解決しましたので締めます
> Tagプロパティに入れるとか。
おかげさまで解決できました。
探せばあるものですね、ありがとうございました。