ちょっと便利な小技集(その2)
                                                       玄関へお回り下さい。
   
           **********   目               次   **********  

1.フォーマットダイアログを開く
2.メニューの下に3Dラインを引く
3.AVI(アニメーション)ファイルを表示する
4.画面等のスケールモード単位変換
5.文字列中の半角文字数・全角文字数を取得する
6.
7.
8.ちょっと便利な小技集(その1)へ移動
9.

1.フォーマットダイアログを開く
   VB初心者友の会に sugi さんが回答されておられましたフォーマットダイアログを呼び出すだけですが、簡単なので

  Private Sub Command1_Click()
    Shell "Rundll32 Shell32,SHFormatDrive"
  End Sub


お奨めはできませんが、以下の方法でも可
  (A:ドライブがフロッピーディスクの機種の場合)

  Shell "command.com /c format a:", 1

2.メニューの下に3Dラインを引く    (106)
   たいていのソフトはメニューの下に3Dラインがあるのですが、VBにはありません。
そこで、自分で引いてみました。これで少しは見栄えがよくなりますよ

その1.フォームにLINEを書く方法
プロシージャを作成
Private Sub MeULine(myForm As Form)
'メニューの下に3Dラインを引く
  '表示が遅くなるが影に隠れると消えるので
  myForm.AutoRedraw = True
  myForm.Line (0, 0)-(Screen.Width, 0), vb3DShadow
  myForm.Line (0, 10)-(Screen.Width, 10), vb3DHighlight
End Sub


ラインを引くフォームのイベントに

Private Sub Command1_Click()
'使用時は Form_Activate or Load イベントにでも記入して下さい
  MeULine Me
End Sub


又は表示するフォームが1つの場合

Private Sub Command2_Click()
'使用時は Form_Activate or Loadイベントにでも記入して下さい
  Me.AutoRedraw = True
  Me.Line (0, 0)-(Screen.Width, 0), vb3DShadow
  Me.Line (0, 10)-(Screen.Width, 10), vb3DHighlight
End Sub


その2.LINEコントロールを使ったやり方

フォームにLineコントロールを2個配置し、下記プロパティを設定して下さい。

Private Sub Command3_Click()
'使用時は Form_Activate or Load イベントにでも記入して下さい
  With Line1
    .BorderColor = &H80000010
    .BorderWidth = 1
    .X1 = 0
    .X2 = ScaleWidth
    .Y1 = 0
    .Y2 = 0
  End With
  With Line2
    .BorderColor = &H80000014
    .BorderWidth = 1
    .X1 = 0
    .X2 = ScaleWidth
    .Y1 = 15
    .Y2 = 15
  End With
End Sub

3.AVI(アニメーション)ファイルを表示する           (038)
   プロジェクト→コンポーネントで下記コントロールを追加
Microsoft Windows Common Controls-2 6.0

Animation コントロールを表示したい位置に貼り付ける

filecopy.avi ファイルは VB6.0 のCDの中のGraphicsフォルダーの中のAVIsフォルダーの中にあります
上記ファイル以外にも色々収録されているので試して見て下さい。

Option Explicit   'SampleNo=038 WindowsXP VB6.0(SP5) 2002.05.02

Private Sub Command1_Click()
'AVI(アニメーション)ファイルを表示する
  Dim st As Long
  '表示ファイルの指定及びオープン
  Animation1.Open "c:fileCopy.avi"
  '再生開始
  Animation1.Play

  '10秒間表示
  st = Timer
  Do While Timer - st < 10
    DoEvents
  Loop

  '再生を停止
  Animation1.Stop
  'ファイルをクローズ
  Animation1.Close
End Sub

          実行結果
       

ファイルの検索で *.AVI を探せば面白いファイルが見つかるかもそれらを、タイトルの画面にでも表示させたらどうですか?

4.画面等のスケールモード単位変換 (123)
  Option Explicit   'SampleNo=123 WindowsXP VB6.0(SP5) 2002.05.22

Private Sub Command1_Click()
  'このマシンでのX方向のサイズ変換です
  With Form1
    Label1.Caption = "1 ピクセルは " & .ScaleX(1, 3, 6) & " mmです"
    Label2.Caption = "100 Twip は" & .ScaleX(100, 1, 6) & " mmです"
    Label3.Caption = "100 Twip は " & .ScaleX(100, 1, 3) & " ピクセルです"
    Label4.Caption = "1 ピクセルは " & .ScaleX(1, 3, 1) & " Twip です"
    Label5.Caption = "567 Twip " & .ScaleX(567, 1, 6) & " mm です"
    Label6.Caption = "10 mm は " & .ScaleX(10, 6, 3) & " ピクセル です"
    Label6.Caption = "10 mm は " & .ScaleX(10, 6, 3) & " ピクセル です"
    Label7.Caption = "10 mm は " & .ScaleX(10, 6, 1) & " Twip です"
    Label8.Caption = "1 インチは " & .ScaleX(10, 5, 1) & " Twip です"
    Label9.Caption = "参考 このマシンでの水平方向の1ピクセル" & _
             "あたりのtwip数は " & Screen.TwipsPerPixelX & " です"
  End With
End Sub


'ScaleX、ScaleY メソッド

'Form オブジェクト、ピクチャーボックス (PictureBox) コントロール、
'または Printer オブジェクトの幅や高さの値を、ScaleMode
'プロパティに設定されている単位から別の単位に変換します。
'名前付き引数は指定できません。

5.文字列中の半角文字数・全角文字数を取得する
   Option Explicit

Private Sub Command1_Click()
  Dim nHan As Long
  Dim nZen As Long
  Dim nLen As Long
  Dim nByt As Long
  nLen = Len(Text1.Text)
  nByt = LenB(StrConv(Text1.Text, vbFromUnicode))
  nHan = (nLen * 2) - nByt
  nZen = nLen - nHan
  Label1.Caption = "半角文字:" & nHan & " 全角文字は:" & nZen
End Sub




2003/04/20