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
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vba Textboxの文字列の結合を速くする方法 6 2022/05/10 00:56
- その他(ブラウザ) webサイトに表示する画像の向きを変える(左右に回す)方法 3 2023/01/20 08:28
- Excel(エクセル) Excelで文字列をtextboxにcopy 2 2022/07/16 22:00
- ボウリング ボウリング投球時の横方向の立ち位置について 2 2022/04/22 22:43
- その他(Microsoft Office) outlookのツールバーが縦になってしまいました。。。直す方法はないでしょうか 2 2023/01/16 09:17
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- 高校 高校からの作文 今日高校から入学にあたっての 作文の宿題が出ました。 ですが書き方が分かりません。 2 2022/03/29 17:59
- 建築士 建築士製図試験での縦距離の数値の書き方を教えて下さい 3 2023/07/16 11:36
- 情報・ワイドショー NHKチコちゃん放送の「バーコードと比較して、QRコードはなぜ情報量が多いのか?」の解説お願いします 5 2022/06/18 13:48
- WordPress(ワードプレス) ワードプレスで、左寄せ画像と文字を横並びにせず、画像の下に文字を表示される方法を教えてください 1 2022/04/24 11:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ListBoxで改行したい
-
C#を用いて描画する四角形の角...
-
for文の実行速度を遅くしたいの...
-
Word:描画オブジェクト内の画...
-
花火のアルゴリズム
-
C# DrawImage 物理サイズでな...
-
scilabでのグラフ描画時の軸設定
-
フォームに描画して表示をスク...
-
給紙トレイをダイアログを使わ...
-
色を合成するには
-
VC++2010 で線形の描画について...
-
Excel VBA:コントロールボタン...
-
DrawLine
-
delphi 画面のちらつき
-
ユーザーフォームを表示中にシ...
-
エクセル・VBA CheckBoxのオブ...
-
VBA(エクセル)で自動的にボタン...
-
エクセルエラー13型が一致しま...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
PowerPoint の VBA
-
C#を用いて描画する四角形の角...
-
給紙トレイをダイアログを使わ...
-
win32api複数のタイマーを同時...
-
Word 描画オブジェクトを削除...
-
ビットマップに描画をしてピク...
-
VC;;6.0のMFCで線を簡単に引け...
-
VB.NETでグラフィックを描くと...
-
C# DrawImage 物理サイズでな...
-
MFCでのコンボボックスについて
-
Excel VBA:コントロールボタン...
-
ボタンの更新速度について
-
画面に絵を出す方法
-
N88BASICでシューティングゲー...
-
MySQLのデータをグラフ化して表...
-
C#でPictureBox内での図形移動...
-
エクセルのレーダーチャート 0...
-
円の頂点の求め方を知りたいです。
おすすめ情報