[リストへもどる]
一括表示

投稿時間:2004/03/11(Thu) 14:59
投稿者名:トラッキー
Eメール:
URL :
タイトル:
Timerが起動したら「×」を表示させるには?
フォームfrmGameRecordでcmdTimeOutボタンをクリックすると
Timerが起動するようにしてあるんですが、その際にプレビュ
ーフォームのプレビュー画面の37,9,に「×」を表示させたい
のですが、以下のコードだとTimerが起動中にのみ「×」が表
示され、Timerが終了すると「×」が消えてしまいます。
Timer終了後も「×」が表示されるようにするにはどのように
改善したらよいのでしょうか?
よろしくお願いします。

Private Sub aPreviewRecord()
'タイムアウトを取った場合にプレヴュー表示'
    If frmGameRecord.cmdTimeOut.Enabled = True Then
        Call PLocate(37, 9, "×")
    End If
End Sub

投稿時間:2004/03/11(Thu) 18:30
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: Timerが起動したら「×」を表示させるには?
>         Call PLocate(37, 9, "×")

これはどこに表示しているのですか Form ならそのForm の .AutoRedraw = True に
設定してみて下さい。

投稿時間:2004/03/11(Thu) 20:54
投稿者名:トラッキー
Eメール:
URL :
タイトル:
Re^2: Timerが起動したら「×」を表示させるには?
> これはどこに表示しているのですか Form ならそのForm の .AutoRedraw = True に
> 設定してみて下さい。

花ちゃんさん、回答ありがとうございます。
上記にある.AutoRedraw = True に設定してみたのですが駄目でした。
タイマー起動中にプレビューフォームで見てみると「×」が表示され
ているのですがタイマーが「00:00」になった後に再度プレビューフォ
ームで確認すると表示が消えています。
「×」を表示(記録)する場所は計7個あってタイマーが起動中に
cmdTimeOutがクリックされた場合にそのつど「×」を表示&記録したい
のです。
どうかよろしくお願いします。

投稿時間:2004/03/11(Thu) 23:06
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: Timerが起動したら「×」を表示させるには?
> 上記にある.AutoRedraw = True に設定してみたのですが駄目でした。
何に書いているのですか?
事象を再現できるコードなりを投稿して下さい。

投稿時間:2004/03/12(Fri) 14:01
投稿者名:トラッキー
Eメール:
URL :
タイトル:
Re^4: Timerを使用したら「×」を表示させるには?
> 事象を再現できるコードなりを投稿して下さい。

花ちゃんさん、回答ありがとうございます。
事象ですがGameStatsというフォームにピクチャボックスを2つ
(PicFrameとPicDraw)を重ねて配置してPicDrawにプレビューを
表示しようとしています。
ゲーム記録画面のfrmGameRrecordフォームにあるcmdTimeOutボタン
がクリックされたらタイマーtmrTimeOutが01:00から1秒づつ減らし
ていくようにしてあり00:00秒になったらcmdTimeOutボタンは
.Enabled = Falseとしています。
ゲーム時間用のタイマーtmrGameTimeが起動中にcmdTimeOutボタン
をクリックしてタイマーtmrTimeOutを使用した場合には所定の位置
に"×"を使用しなかった場合には"="と表示がしたいのです。
また、表示したい回数は計7箇所あり、
1番目は38,9,
2番目は41,9,
3番目は44,9,
4番目は47,9,
5番目は50,9,
6番目は53,9,
7番目は56,9,です。
自分でコードを記述してみてもタイマーtmrTimeOutが起動している
最中は"×"が表示されていますがタイマーtmrTimeOutが終了後にプレ
ビューで確認すると消えている状態です。
どうかよろしくお願いします。

'プレビュー用'
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 aPreviewRecord()
'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チームの第1クォーター時にタイムアウトを取った場合にプレヴュー表示する'
    If frmGameRecord.cmdTimeOut.Enabled = True Then
        Call PLocate(38, 9, "×")
    End If
    
    'Aチームの第2クォーター時にタイムアウトを取った場合にプレヴュー表示する'
    ・
   ・
  ・
End Sub
    

投稿時間:2004/03/12(Fri) 14:48
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: Timerを使用したら「×」を表示させるには?
>これはどこに表示しているのですか Form ならそのForm の .AutoRedraw = True に
>設定してみて下さい。

No.8319 でも答えていると思うのですがどこに表示しているのかを貴方は答えて
いません。
.AutoRedraw = True はどこに設定したのですか?
フォームに表示しているのなら フォームの.AutoRedraw = True に
ピクチャーに表示しているのならピクチャーの .AutoRedraw = True に設定して
試してみましたか?

ヘルプなりで AutoRedraw プロパティについて調べてみましたか?
現状で一番考えられる原因かと思うのですが、それが違うなら

No.8327 で
> 上記にある.AutoRedraw = True に設定してみたのですが駄目でした。
何に書いているのですか?
事象を再現できるコードなりを投稿して下さい。
と回答したのですが?

>Obj.Print myStr
この Obj はどこで何を宣言しているのですか?
せっかくコードを投稿しても中途半端のコードでは貴方と同じ状況を確認する事が
できなければいつまでたっても正確な解答を得られませんよ。
  

投稿時間: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

投稿時間:2004/03/12(Fri) 19:58
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: Timerを使用したら「×」を表示
最初の状況は下記ではなかったのですか?

> ーフォームのプレビュー画面の37,9,に「×」を表示させたい
> のですが、以下のコードだとTimerが起動中にのみ「×」が表
> 示され、Timerが終了すると「×」が消えてしまいます。
> Timer終了後も「×」が表示されるようにするにはどのように
> 改善したらよいのでしょうか?



> そして7箇所の「×」の表示を考えてコードを記述してみましたが、最
> 初の1つは良いのですが2つ目以降は表示されない状況です。

これって、結局前回の事が解決されていないだけでは

>     '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

今回も投稿して貰ったコードでは状況を確認できませんし、コードが投稿できないなら
自分で、それぞれの IF 文にブレークポイントを設定して見て確認してみて下さい。

私には貴方の説明が理解できませんし、コードを試して見る事もできませんので
これ以上はわかりません、これでパスさせて頂きます。

投稿時間:2004/03/13(Sat) 09:50
投稿者名:トラッキー
Eメール:
URL :
タイトル:
Re^8: Timerを使用したら「×」
> 私には貴方の説明が理解できませんし、コードを試して見る事もできませんので
> これ以上はわかりません、これでパスさせて頂きます。

自分で調べなおしてみます。
ありがとうございました。

投稿時間:2004/03/12(Fri) 19:08
投稿者名:ひな
Eメール:
URL :
タイトル:
Re: Timerが起動したら「×」を表示させるには?
★ - それぞれの得点を表示するには? - トラッキー 03/03-19:05 No.8202

の件はどうなったのですか?
きちんと最後まで報告をしましょうよ。
解決していないなら、今回の質問も同じソフト内での問題なら
初めに、その事をことわった方が良いのでは?

投稿時間:2004/03/12(Fri) 19:24
投稿者名:トラッキー
Eメール:
URL :
タイトル:
Re^2: Timerが起動したら「×」を表示させるには?
> ★ - それぞれの得点を表示するには? - トラッキー 03/03-19:05 No.8202
>
> の件はどうなったのですか?

ひなさん、ご意見ありがとうございます。
得点に関しては平行して行っている最中だったんですが、こちらの方を
先にと考え投稿しました。
放置しているわけではありません。

投稿時間:2004/03/12(Fri) 20:18
投稿者名:ひな
Eメール:
URL :
タイトル:
Re^3: Timerが起動したら「×」を表示させるには?
> 得点に関しては平行して行っている最中だったんですが、こちらの方を
> 先にと考え投稿しました。
> 放置しているわけではありません。

そうかも知れませんが私や他の方の問いかけには返信がありませんよね?
花ちゃんさんも No.8337 で書かれていますが、問いかけに返信も
無い以上、私もこれを最後とさせて頂きます。
 

投稿時間:2004/03/13(Sat) 09:51
投稿者名:トラッキー
Eメール:
URL :
タイトル:
Re^4: Timerが起動したら「×」を表示させるには?
> 花ちゃんさんも No.8337 で書かれていますが、問いかけに返信も
> 無い以上、私もこれを最後とさせて頂きます。

ありがとうございました。