動的にコントロール配列をLoadする際、すでにLoadされているかチェックする方法について

解決


ジュオン  2004-11-06 00:31:43  No: 86507

今、コントロール配列を動的にLoadするプログラムを作っているんですが、
その際、既にLoadされているコントロール配列を新規にLoadしようとすると
エラーが発生し困っております。
「すでにそのコントロールは存在します」という確認する方法ありましたら
教えてください。お願いします。

・・・・・・
Load  コントロール配列名(Index)
・・・・・・
の部分で「既にLoadされています」というエラーが発生します。
環境はVB6のWinXP.Pro


raki  URL  2004-11-06 00:54:10  No: 86508

On Error ステートメントを使って
エラーをキャッチする方法ではいけないのですか?


ねろ  2004-11-06 00:57:26  No: 86509

何も考えずに
    On Error GoTo e
    Load Text1(1)
    On Error GoTo 0
    Exit Sub
  e:
    MsgBox ("エラー番号 = " & Err.Number & " : " & Err.Description)
    Resume Next
これではだめですか。


java.lang.Nullpo  2004-11-06 01:20:52  No: 86510

エラーハンドラはこういうときに使ってはいけない。
自分でLoadするんだから、自分で管理すべき。

管理する配列を作ってそこを参照すると良いでしょう。


GOD  2004-11-06 01:50:35  No: 86511

On Error 使った方が楽そうだけどこんな方法も。

Private Sub Command1_Click()
    Dim objTxt As Object
    Dim AddIndex As Integer

    AddIndex = 1
    If Not IsIndex(AddIndex, Text1) Then
        '     ;
        Load Text1(AddIndex)
        '     ;
    End If
End Sub

Private Function IsIndex(No As Integer, objBase As Object) As Boolean
    Dim objX As Object

    For Each objX In objBase
        If objX.Index = No Then
            IsIndex = True
            Exit Function
        End If
    Next
End Function


ねろ  2004-11-06 02:01:42  No: 86512

>エラーハンドラはこういうときに使ってはいけない。
だめですか(^^;
>自分でLoadするんだから、自分で管理すべき。
「自分で管理」ですか(^^;


java.lang.Nullpo  2004-11-06 18:40:11  No: 86513

> だめですか(^^;
こういう風にといった方が正しかったのかも。
ここでエラー処理をおくこと自体はいいのですが、
そういう使い方はすべきでないような。
回避できるエラーは回避すべきと思ったまでです。

>「自分で管理」ですか(^^;
何番目の要素までLoadしているか、自分でLoadするのならば管理できます。
FlexGridで、CheckBoxを無数に表示する際に、そんな感じで私はやっておりました。

# まあ、どちらの方法を使うにしろ、「できない」わけではありませんので、
# 私のは「完全な物言い」だと思わないでくださいね。


ジュオン  2004-11-06 20:35:04  No: 86514

なるほど、みさなん勉強になりました。
アドバイスを参考になんとか頑張って行きたいと思います。
今後もよろしくお願いします。


ねろ  2004-11-07 05:08:43  No: 86515

>java.lang.Nullpoさん
いやみな書き方をしました。 m(__)m

「 On Error GoTo」は基本的にGoto文です、その意味から最も構造化から遅れた部分でしょう。
(VB.NETの様に  Try...Catch...Finallyが有れば当然それを使います。)
使用する時はそれなりの配慮が必要です。


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

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






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