投稿日 | : 2004/03/12(Fri) 18:55 |
投稿者 | : トラッキー |
Eメール | : |
URL | : |
タイトル | : Re^6: Timerを使用したら「×」を表示させるには? |
花ちゃんさん、回答ありがとうございます。
> .AutoRedraw = True はどこに設定したのですか?
> フォームに表示しているのなら フォームの.AutoRedraw = True に
> ピクチャーに表示しているのならピクチャーの .AutoRedraw = True に設定して
> 試してみましたか?
.AutoRedraw = Trueに関して私はプロパティウインドウの事だとばかり
考えていましてコードとして記述するとは考えても見ませんでした。
ヘルプも参照してみました。
現状ではピクチャボックスPicDrawに.AutoRedraw = True を設定し以下
のようにコードを書きかえ、さらにfrmGameRecordの実行時にcmdTimeOut
ボタンがゲーム時間用タイマーを「試合開始」「一時停止」「時計リセッ
ト」などの操作をするたびに.EnabledをTrueにしたりFalseに変えたりと
いう事をしていたためFalse状態の時に「×」は表示されなかったのだと
いうことがわかりました。
そして7箇所の「×」の表示を考えてコードを記述してみましたが、最
初の1つは良いのですが2つ目以降は表示されない状況です。
ご意見よろしくお願いします。
Option Explicit
Private file_name As String
Private Obj As Object
Private PrtX As Long
Private PrtY As Long
Private Sub PLocate(X As Long, Y As Long, myStr As String)
'プレビュー用'
With Obj
.ScaleMode = vbCharacters 'キャラクターモードに設定
.CurrentX = X * PrtX '水平座標の設定
.CurrentY = Y * PrtY '垂直座標の設定
End With
Obj.Print myStr '指定位置に文字列を表示
End Sub
Private Sub sPreview()
Dim i As Integer
Dim h As Integer
Dim j As Integer
Set Obj = picDraw
Dim cnt As Integer
cnt = cnt + 1
'プレビュー用ピクチャボックスのサイズをプリンタに合わせる'
With picDraw
.Height = Printer.Height
.Width = Printer.Width
.ScaleHeight = Printer.ScaleHeight
.ScaleWidth = Printer.ScaleWidth
.AutoRedraw = True
End With
'垂直スクロールバーの設定'
With VScroll1
.Max = picDraw.Height - picFrame.Height
.LargeChange = .Max / 10
.SmallChange = .LargeChange / 10
End With
PrtX = Obj.ScaleWidth / Printer.ScaleWidth
PrtY = Obj.ScaleHeight / Printer.ScaleHeight
'Aチームのゲーム記録'
'Aチームのチーム名を記録させます。'
Obj.Font.name = "MS 明朝"
Obj.Font.Size = 10
Call PLocate(34, 2, "チームA")
Obj.Font.Size = 14
Call PLocate(34, 4, frmGameMember.txtTeamName1(0).Text)
'Aチームの総得点を記録させます。'
Obj.Font.Size = 10
Call PLocate(34, 6, "得点")
Obj.Font.Size = 14
Call PLocate(38, 6, frmGameRecord.lblTokuten1(0).Caption)
'Aチームのチーム名を記録させます。'
Obj.Font.Size = 10
Call PLocate(1, 8, " チームA:")
Obj.Font.Size = 18
Call PLocate(10, 8, frmGameMember.txtTeamName1(0).Text)
'Aチームのチャージドタイムアウトを記録させます。'
Obj.Font.Size = 10
Call PLocate(37, 8, "チャージドタイムアウト")
'Aチームがチャージドタイムアウトを取った場合にプレヴュー表示する'
For cnt = 0 To 7
If frmGameRecord.cmdTimeOut.Enabled = True And cnt = 0 Then
Call PLocate(38, 9, "×")
ElseIf frmGameRecord.cmdTimeOut.Enabled = True And cnt = 1 Then
Call PLocate(41, 9, "×")
ElseIf frmGameRecord.cmdTimeOut.Enabled = True And cnt = 2 Then
Call PLocate(44, 9, "×")
ElseIf frmGameRecord.cmdTimeOut.Enabled = True And cnt = 3 Then
Call PLocate(47, 9, "×")
ElseIf frmGameRecord.cmdTimeOut.Enabled = True And cnt = 4 Then
Call PLocate(50, 9, "×")
ElseIf frmGameRecord.cmdTimeOut.Enabled = True And cnt = 5 Then
Call PLocate(53, 9, "×")
ElseIf frmGameRecord.cmdTimeOut.Enabled = True And cnt = 6 Then
Call PLocate(56, 9, "×")
End If
Next cnt