• ベストアンサー

vb6のTEXTBOX

教えて下さい。 vb6の環境下でTextbox、もしくはLabelのでそれに表示させる文字位置を枠内のセンターに持っていきたいのですが、その方法を教えて下さい。 横方向はプロパティ-でセンターに持っていけるのですが。縦方向がわかりません。教えて下さい。

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.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)

回答No.1

私の知る限りでは、出来ないと思います。 そこで、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の方は、いい方法が思いつきません。すいません。 参考になればいいのですが・・・

関連するQ&A