- ベストアンサー
vb6のTEXTBOX
教えて下さい。 vb6の環境下でTextbox、もしくはLabelのでそれに表示させる文字位置を枠内のセンターに持っていきたいのですが、その方法を教えて下さい。 横方向はプロパティ-でセンターに持っていけるのですが。縦方向がわかりません。教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
※ラベルはVB独自のオブジェクトであり、実際にはフォームに直接描画されている絵と同じです。ですのでAPI云々でどうこうできる物ではありません。 VBの仕様通りの動きしかできません。 ○水平方向中央 ×垂直方向中央 ※テキストボックスはWindowsのEditClassのオブジェクトと同じような設定が可能です。(おそらくVB内部ではVBがEditClassと同じ物を作って、KeyDown,Change...などのイベントをVB用に加工しているものだと思ってます。)そのEditClassに垂直方向の中央という設定はないので、VBでもできないと思います。 さきほどカッコで書いた部分が違うのであれば、可能性があるのですが・・・EditClass用のAPI定数をSendMessageで送ると反映されるので、多分間違いないかと・・・ 参考までに私もソースを載せます。 方法はピクチャボックスに、直接文字列を描画しています。 > Call dspCenterText(strWk, Picture1) の部分を Call dspCenterText(strWk, Me) としたら、フォーム中央に描画します。(意味ないけど・・・) ※構成 フォーム ├Command1 ├PictureBox1 └TextBox1 Option Explicit Private Sub Command1_Click() Dim strWk As String strWk = Text1.Text 'テキストボックスの内容を、ピクチャボックスの中央に表示 Call dspCenterText(strWk, Picture1) End Sub Private Sub Form_Load() 'ピクチャボックス初期設定(ここのコードはロードイベントに書かないでも、デザイン時のプロパティで初期設定で可能です) With Picture1 '再描画を自動(必須) .AutoRedraw = True 'ピクチャボックスがフォーカスを保持しないように使用不可にしてしまう .Enabled = False '---- 以下の設定はお好みで ---- 'テキストボックスみたいにしたいなら、背景を白に .BackColor = vbWhite 'フォント指定も可 .Font.Size = 15 .Font.Bold = True .Font.Italic = True .ForeColor = vbRed '---- お好み設定終了 ---- End With End Sub '引数詳細 ' inValue:文字列 ' inObj:オブジェクト(ただし、フォームかピクチャボックス) Private Sub dspCenterText(inValue As String, inObj As Object) Dim lngTextWidth As Long Dim lngTextHeight As Long With inObj 'クリア .Cls '文字列の幅/高さを得る lngTextWidth = .TextWidth(inValue) lngTextHeight = .TextHeight(inValue) '描画開始のX/Y座標を設定 .CurrentX = (.ScaleWidth - lngTextWidth) / 2 .CurrentY = (.ScaleHeight - lngTextHeight) / 2 '描画 inObj.Print inValue .Refresh End With End Sub
その他の回答 (1)
- taisuke555
- ベストアンサー率55% (132/236)
私の知る限りでは、出来ないと思います。 そこで、Labelの中央表示の仕方で、 (1)Pictureを表示したい場所に作る。 (2)その上にLabelを貼り付け (3)Label1.AutoSize を Trueに変更する。 (Caption も 何も入力されていない状態にする) (4)ラベルに表示する時に、 With Label1 .Caption = "ただいまテスト中" & Chr(13) & "少々お待ちください" .Top = (Picture1.Height - .Height) / 2 .Left = (Picture1.Width - .Width) / 2 End With のようにすれば、Pictureボックス内で中央に表示されます。 Sub LabelDsp(Dat as string) With Label1 .Caption = Dat .Top = (Picture1.Height - .Height) / 2 .Left = (Picture1.Width - .Width) / 2 End With end sub のようにしておけば、ラベルに表示する時に LabelDsp "メッセージを出力中" と書けば、毎回書くよりは楽に書けます。 Textboxの方は、いい方法が思いつきません。すいません。 参考になればいいのですが・・・