VBで動的に作成したパネルの上にラベルを乗せるには?

このQ&Aのポイント
  • VB6にてプログラムで動的に作成したフレームの上に、動的に作成したラベルを乗せる方法について教えてください。
  • フレームとラベルの作成は特定の方法で行われており、ラベルがフレームの上に正しく表示されない問題が発生しています。
  • どなたか分かる方がいらっしゃいましたら、ご教授願います。
回答を見る
  • ベストアンサー

VBで動的に作成したパネルの上にラベルを乗せるには?

VB6にてプログラムで動的に作成したフレーム(Frame)の上に、動的に作成したラベル(Label)を乗せることが出来ません。 どうすれば、ラベルをフレームの上に乗せることが出来るようになるでしょうか? どなたか分かる方がいらっしゃいましたら、ご教授願います。 なお、フレームとラベルの作成は以下のようなやり方で行っています。 ' Form1 : 表示フォーム Private lbl As New LabelClass ' ラベル作成クラス Private frm As New FrameClass ' フレーム作成クラス Private Sub Form_Load() Call lbl.LabelMake(Form1, "lbl1") With lbl.makelbl .Caption = "テストラベル" .AutoSize = True .Top = 500 .Left = 500 .Visible = True End With Call frm.FrameMake(Form1, "frm1") With frm.makefrm .Caption = "テストフレーム" .Width = 2000 .Height = 2000 .Visible = True End With End Sub ' LabelClass : ラベル作成クラス Public WithEvents makelbl As Label Public Sub LabelMake(form As Object, name As String) Set makelbl = form.Controls.Add("VB.Label", name) End Sub ' FrameClass : フレーム作成クラス Public WithEvents makefrm As Frame Public Sub FrameMake(form As Object, name As String) Set makefrm = form.Controls.Add("VB.Frame", name) End Sub ※nameはオブジェクト名です

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ヘルプをご覧になりましたか? object.Add (ProgID, name, container) container に Frame を指定して見て下さい。

thyme317
質問者

お礼

どうやら、私の確認不足だったようです。 回答ありがとうございました。

関連するQ&A

  • Access VBAのイベント共有について

    こんにちは。 初めて質問をさせて頂きますcimappleと申します。よろしくお願いいたします。 現在、業務にて使用するデータベースをAccessにて作成しておりまして、VBAにてフォームの各処理を記述しています。 ちなみに、当方Access、VBAについて超初心者ですので、そもそもの誤解がある部分もあるかと思いますが、ご容赦ください。 さて、質問の内容ですが、今回フォーム上にある14個のラベルを、マウスカーソルが乗った時(MouseMoveイベント)にそのラベルの背景色を変えるコードを組みたいと考えています。 現状としては、それぞれのラベルのMouseMoveイベントに背景色を変えたり、戻したりといったコードを記述していますが、当然非効率かつ面倒なのです。 そこで、このイベントを共有化したいと考え、いろいろと検索したところ、クラスモジュール(Private WithEvents)にてそういったことができそう・・・というところまでは辿り着いたのですが、その先が全く分かりません。 Excelについてのクラスモジュールの記事はたくさん見つけて、コピーペースト見よう見まででマネてはみたのですが、当然うまくいかず、そこから先に進めないでおります。 クラスモジュールについて基礎から勉強しなさいと言われればその通りなのですが、どうかお知恵をお貸し頂きたく質問させていただきました。 よろしくお願いいたします。 以下、見よう見まねの現在のコードです。 ちなみに、フォーム名はFRM1、ラベル名はそれぞれLbl○、クラスモジュール名はCLS1となっています。 Form(FRM1)のコード ======================================================= Option Compare Database Option Explicit Dim MyLbl(14) As CLS1 Private Sub Form_Load() Dim Lbl As Access.Label Dim i As Integer For i = 1 To 14 Set Lbl = Me.Controls("Lbl" & i) Set MyLbl(i) = New CLS1 Set MyLbl(i).Label = Lbl Next End Sub ======================================================= Class(CLS1)のコード ======================================================= Option Compare Database Option Explicit Public WithEvents Label As Access.Label Private Sub Label_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Label.BackColor = 225 End Sub ======================================================= 長文かつ駄文で申し訳ありませんでした。

  • VB2005で、動的にコントロールを作成出来ない件

    MDIのフォームで、 子フォーム1にコントロール(ラベルなど)を追加したい場合、 子フォーム2のボタンクリックで追加しようとすると 追加されません。 (子フォーム1のボタンで同一フォームへコントロールを  追加しようとすると追加できました。) どのようにすれば追加できるでしょうか? 子フォーム2の追加ボタン関数のコード Private Sub Add_click()  AddLabel(子フォーム1, "hogehoge") End Sub モジュール(関数群)のコード Private Sub AddLabel(Byval objForm As Form, ByVal strText As String)  Dim ctlAddLabel As New Label()  With ctlAddLabel   .AutoSize = False   .Location = New Point(0, 0)   .Size = New Size(200, 40)   .Name = "Label" & Counter 'Counter は追加の度に1ずつ増えます   .Text = strText  End With  objForm.Controls.Add(ctrlAddLabel) End Sub

  • Formオブジェクトについて

    Formオブジェクトに関する質問です。 ある関数にフォームオブジェクトを引数として渡してやりたいのですが、何かよい方法はありますでしょうか? 例) Private Sub cmdTest_Click(Index as Integer) Dim frm as Form If Index = 0 then Load_Test(Form 2) Else Load_Test(Form 3) End if End Sub Private Sub Load_Test(frm as Form) frm.Show frm.Label1.Caption = "TEST” End Sub

  • VB 2008: 文字サイズの指定要領が判りません!

    指定秒だけメッセージを表示する関数を作成しています。 しかし、文字サイズの設定要領が判りません。 VB.NET 学習40日余という初学者です。 宜しくお願いします。   Sub PauseMsg2(ByVal Msg As String, ByVal PauseTime As Double, ByVal aColor As Color, ByVal iFontSize AS Integer)     Dim frm As New Form     Dim lbl As New Label()     With lbl       .Text = Msg       .BorderStyle = BorderStyle.None       .Location = New Point(10, 10)       .ForeColor = aColor       .Size = XXXXX       .Width = 478     End With     With frm       .HelpButton = False       .FormBorderStyle = FormBorderStyle.FixedDialog       .ControlBox = False       .MaximizeBox = False       .MinimizeBox = False       .Text = ""       .Width = 500       .Height = 20       .StartPosition = FormStartPosition.CenterScreen       .Controls.Add(lbl)       .Show()       Pause(PauseTime)       .Close()     End With   End Sub   ' ------------   ' ポーズ関数   ' ------------   Sub Pause(ByVal PauseTime As Double)     Dim Finish As Double = DateAndTime.Timer + PauseTime     Do       DoEvents()     Loop Until DateAndTime.Timer > Finish   End Sub

  • VB、教えてください。

    VB、教えてください。 5つのラベルが縦に並んでいます。 label0 label1 label2 label3 label4 あらかじめ、 Dim m as integer=0 を宣言し、 どうにかして "label"という文字列とmという数字をくっつけ、 label0 label1… という風にできないでしょうか。 そして label"m".text=10*m というような表示を作りたいのですが。 下記のようなイメージです。分かりにくかったらごめんなさい。 Public Class Form1 Dim m As Integer = 0 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click lblmessage(+("m").Text = 10*m m = m + 1 End Sub End Class

  • VBでラベルの大きさと文字数によってフォントサイズが変化するプログラムについて

    VBで、「ラベル」っての、ありますよね。そこに入力された文字数とラベルの大きさによって、フォントサイズを変化させるプログラムを書いたのですが、うまくいきません。何が間違っているのでしょうか? Private Sub name_text_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles name_text.KeyUp Dim nam As Byte nam = Len(name_text.Text) Dim FSize As Short If nam = 2 Then FSize = 36 FSize = Label.Font.Size ElseIf nam = 3 Then FSize = 25 FSize = Label.Font.Size End If Label.Text = TextBox.Text End Sub 何が間違ってますでしょうか?お願いします。

  • VB2008 Form間の計算について

    VB勉強中のものです。 次のようにプログラムを作成したいですので よろしくお願いします。 要望: 1 From2のTextbox1 or Textbox2に"2001/05/05"ような書式で日付を入力 2 RadioButton1かRadioButton2の選択して 3 Form1の「DateTimePicker」を利用して、日数の差を計算し、 Form2の label3に結果を表示させる 例: From2のTextbox1 = 2001/01/01 Form1の「DateTimePicker」 = 2002/01/01 RadioButton1を選択したら、 Label3内に " 誕生日から生まれて365日となりました" という結果が出れば、問題がないです。 ------------ Form 1 --------------------- Public Class Form1 Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click 'labelをクリックして、form2を開く Dim frmTmp As New Form2 frmTmp.ShowDialog() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim intdate As Integer intdate = DateDiff(DateInterval.Day, DateTimePicker1.Value, Now) Label1.Text = "誕生日から生まれて" & intdate & "日となりました" End Sub End Class -------------------------------------------- -------------Form 2 ------------------------ Public Class Form2 Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged If RadioButton1.Checked = True Then Label3.Text = "*******わからない部分*******" End If End Sub End Class ----------------------------------------------------- 以上

  • MDIParent1に、ToolStripButton1とLabel1

    MDIParent1に、ToolStripButton1とLabel1、Label2を 配置しています。 やりたいことは  (1)ToolStripButton1をクリックしてForm1を表示させる。  (2)Label1をクリックしてForm1のTextをLabel1のTextに変更する。  (3)Label2をクリックしてForm1のTextをLabel2のTextに変更する。 最初に表示させたForm1のTextのみを変更させる。 現在下記のプログラムを実行したのですが Label1をクリックすると新たにForm1が表示されてしまいます。 (Form1のTextはLabel1のTextに変更されている) Label2をクリックすると新たにForm1が表示されてしまいます。 (Form1のTextはLabel2のTextに変更されている) クリックする毎にForm1がふえていきます。 対策方法を教えてください。 Public Class MDIParent1 Dim F1 As Form1  Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click Dim frm As New Form1 frm.MdiParent = Me frm.Show() End Sub   Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click F1 = New Form1 F1.Visible = True F1.Text = Label1.Text Label1.BorderStyle = BorderStyle.Fixed3D Label2.BorderStyle = BorderStyle.None End Sub   Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click F1 = New Form1 F1.Visible = True F1.Text = Label2.Text Label2.BorderStyle = BorderStyle.Fixed3D Label1.BorderStyle = BorderStyle.None End Sub End Class

  • フォームを作成すると同時にイベントを作成する方法は

    フォームを作成すると同時にイベントを作成する方法は? アクセスなのですが 標準モジュールで Sub フォームを作成() Dim myForm As Form Set myForm = CreateForm DoCmd.Close acForm, myForm.Name, acSaveYes End Sub をしたと同時に、 そのフォーム内に Private Sub Form_Open(Cancel As Integer) MsgBox "開きました" End Sub のようなイベントを同時に生成するにはどうすればいいでしょうか? クラスモジュールを使うのですか? クラスモジュールの使い方がまったくわからないのですが サンプルコードを頂けないですか?

  • VB6でスロットを作成したい

    VB6歴2ヶ月の初心者です。 フォーム上に ラベルコントロールが三つ コマンドボタンが二つ タイマーコントロールが一つ あります。 タイマーのプロパティは Enabled False Interval 10 です。 スロットを作成したいのですが、 ボタン1を一回押すごとに左からスロットが回り、 最後にボタン2で動きを止めたいのです。 一応自分でも書いてみたのですが、ここで行き詰まりました。 ウワァァァァァァヽ(`Д´)ノァァァァァァン! Private Sub Command1_Click() Timer1.Enabled = True End Sub Private Sub Command2_Click() Timer1.Enabled = False End Sub Private Sub Timer1_Timer() Dim slot As Integer slot = Int(Rnd(1) * 9 + 1) Label1.Caption = slot End Sub 思い通りに動かすにはどんなコードにしたらいいですか?

専門家に質問してみよう