ここから本文です

vb6 について質問です。

n_k********さん

2020/7/1119:00:03

vb6 について質問です。

最近プログラムを色々書き始めました。
いままでほとんどがvbaだったのですが、今回vb6 でフォームのあるものを作り始めました。

そこで2つ質問です。
いま作っているものが、xmlファイルを使用するものです。
いまは、データしか格納していないのですが、
どうせならと思い、xmlファイルに設定情報を記入しようと思います。
例えば、フォームの幅、フォームを点滅(透過率の変更)させる時間、フォームの色など
設定フォームを作って、起動時に取得してセットしたいと思います。

下記のようにxmlファイルがあるとします。
<root>
<setting>
<formwidth>1800</formwidth>
<timerinterval>10000</timerinterval>
</setting>
</root>
そして、この設定情報を使用するコードです。
Private Sub ShowNewForm()
Dim ofrmNewForm As Form

Set ofrmNewForm = New Form1
With ofrmNewForm
.width = xmlファイルの<formwidth>
.lblID.Caption = xmlファイルのデータのID
.show
End With
Set ofrmNewForm =Nothing
End Sub

このForm1を指定数表示するとして、
この処理が走る度にに検索しにいくのか、Type等の変数に格納するのか知りたいです。

設定情報が2つとかだとTypeでいいと思うのですが、iniファイル を使用する場合とかどうするものなのかわかりません。
Typeだとしても、変数の量が多くなりそうでそれもいいのか悪いのか...


また上記のコードのようにofrmNewFormをどんどん作って行くとしても作られたフォームの名前はすべてForm1です。
今は識別するために、ラベル(lblID)を作成しVisibleをFalseにしたものにxmlと関連づけられたIDを入れています。
ただ、これだと特定のフォームに指示を送る場合、
下記のようにForEachですべて探すしか方法が浮かびません。
Private Sub btnButton1_Click()
If FormWidthChange(2000) Then
Debug.Print "成功しました。"
Else
Debug.Print "失敗しました。"
End If
End Sub

Private Sub FormWidthChange(ByVal lngWidth As Long) As Boolean
Dim ofrmForm As Form
FormWidthChange = False
For Each ofrmForm In Forms
If Val(ofrmForm.lblID.Caption) = 1 Then
ofrmForm.Width = lngWidth
FormWidthChange = True
Exit For
End If
Next ofrmForm
Set ofrmForm = Nothing
End Sub

一発で、フォームを指定できればいいのですが、ShowNewForm()で、Nameプロパティも変更できず。
この場合もどうしたらよいですか?

説明下手ですいません。
独学で学んでいるので、コードが変かもしれません。
それも指摘してもらえればありがたいです。

閲覧数:
29
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

zzr********さん

2020/7/1301:01:02

VB6はもう何年も触っていないのでほとんど忘れているのですが、思い出せる範囲で回答します。

>この処理が走る度にに検索しにいくのか、Type等の変数に格納するのか知りたいです。

これはそのシステム(プログラム)の要件によります。一般的には設定ファイルはiniファイルに定義していますが、iniというのはinitial(初期)の略なので、プログラムを起動した最初に読み込んでグローバル変数などに保持しておく場合が多いですが、プログラムが動作している途中でも設定ファイルを変更してその変更を反映させる必要があるのなら、必要になったときに読み込まなければなりません。
プログラムが起動している間に定義ファイル(xmlファイル)を変更し、常に最新の定義を使う必要があるのなら【この処理が走る度にに検索しにいく】ようにするしかありません。

私がシステム開発する場合なら、設定ファイルは最初に読み込んでグルーバル変数に保持しておきます。起動している途中で設定ファイルを変更するような要件があるなら、システム設定用の画面を設けてその画面で変更させるべきだと割り切って考えます。


>また上記のコードのようにofrmNewFormをどんどん作って行くとしても作られたフォームの名前はすべてForm1です。

これも特に決まりはないので質問者さんがやっているように非表示にしたラベルにIDを持たせるのも一つの手です。
私なら、グローバルレベルのCollection変数を用意しておいて、フォームをNewする都度、Collectionに格納しておきます。

質問した人からのコメント

2020/7/16 07:36:32

遅くなりすいません。
iniファイルは初期の意味だったんですね!
今回は設定画面を作り、10項目ほどだったので、typeに持たせました。
collectionは初めて聞いたので、これから勉強していきます。

とても勉強になりました。
ありがとうございました。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる