今、Visual Basic でスライドショーのプログラムを作っています。
その中で、プログラムの一時停止(それに伴う再開)という事をしたいのですが、どのようにすればよいかわかりません。
教えて下さい。お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

Enabledの操作で充分だと思いますよ。



ちなみに先ほどの方法の処理を書くと(フラグの1と0の値が変わってますが・・・)

Private bytFlg As Byte

Private Sub cmdPause_Click()
  bytFlg = 0
End Sub

Private Sub cmdPlay_Click()
  bytFlg = 1
End Sub

Private Sub Form_Load()
  bytFlg = 0
End Sub

Private Sub Timer1_Timer()
  If bytFlg = 1 Then
    'ここに画像読み込み処理
  End If
End Sub

とするとできます。
しかし、画像の読み込みを必要としないときもタイマーが動いているので、Windowsに負荷がかかります。

だからgotkatさんの今までのEnabledの操作で充分です
    • good
    • 0
この回答へのお礼

丁寧に回答していただいてありがとうございます。

お礼日時:2001/10/27 12:40

#2の発言のARCに質問です。



>Sleep 100 '100ミリ秒待機する
とありますが、これは意味があるのですか?
VBの処理にロックがかかるだけで、意味がないのでは?
    • good
    • 0

>スライドショーのプログラム


とあるので、きっとタイマーコントロールで定期的に画像を更新しているのでは?
もしその場合#1さんの発言の方がいいかも?

PublicもしくはPrivateでフラグの宣言
フラグのデフォルト=0
タイマーイベントでフラグが0の時以外は処理を抜ける。
一時停止ボタンの機能:フラグ=1
一時停止解除ボタンの機能:フラグ=0

もしさっきの推測がはずれならば、どのようにスライドショーの画面の更新が行われているかが気になりますね。
    • good
    • 0
この回答へのお礼

ご推測の通りです。説明不足ですみません。
僕のプログラムがまずいらしく、上述の方法がうまく出来ません。
それで、
一時停止ボタンの機能:Timer1.Enabled=False
一時停止解除ボタンの機能:Timer1.Enabled=True
としたら出来ました。これらのボタンを押して欲しくないときは、
Command1.Enabled=False
としています。このやり方でいいんでしょうか?

まだVisual Basicを始めたばかりなので、参考になりました。
ありがとうございます。

お礼日時:2001/10/27 09:46

途中でSleepを挟んだ方がいいかも。



(Genaral) (Declarations)に

Private Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long)

って行を追加しまして、

Do Until 終了条件
 Sleep 100 '100ミリ秒待機する
 DoEvents
Loop

のようにします。
    • good
    • 0

>一時停止


ボタンクリックで、
val_restart = 0
do
  doevents
  if val_restart = 1 then
exit do
end if
loop

>再開
 ボタンクリックで
 val_restart = 1

やってることわかります?
(試してないので、自信なし)
    • good
    • 0
この回答へのお礼

ありがとうございます。
さっそくやってみます。

お礼日時:2001/10/26 21:42

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q中国語の上班について質問します。

中国語の上班について質問します。
因?病了、所以不去上班。ですが、上班は辞書で見ると(出勤する)という意味なので、
不去上班。だと、出勤するに行かない。で意味がおかしくなります。出勤しない。なら、不上班。です。
所以不去公司。会社に行かない。なら意味はわかりますが、
上班というのは、出勤というだけの意味で、
出勤する。と言う場合は、去上班。になるのですか?辞書が間違っているのか、不去上班。でも、不上班。でも、どちらでも正解なのか?分かる方がいれば教えてください。

Aベストアンサー

「上班」は職場で働くことです。
中国語の基本の辞典である「現代漢語詞典」にも
「決められた時間に職場で仕事をする(原文は中国語ですが日本語に直訳しました)」
と書いてあります。
「職場に行くために移動する」という意味はありません。

ですから、「不去上班。」も「不上班。」も言えます。
「不去上班。」の場合は職場には行きません。
「不上班。」の場合は、勤務はしないというだけで、ひょっとしたら職場には行くのかもしれませんし、行かないかもしれません。その点を明確にしたいならそのための表現を付け足さないといけません。

>出勤する。と言う場合は、去上班。になるのですか?

日本語の「出勤する」は本来は「職場に移動する」という意味だと思いますが、「職場に移動して勤務する」という意味でも使いますよね。

ですから、場面によって「去上班」と訳す場合と「上班」と訳す場合があります。
中国語で単に「上班」と言った場合でも、今職場にいない場合は職場に行かないと「上班」できないわけで、わざわざ「去」と言わなくても「去」のニュアンスを含む場合があります。

中国語に限らず、日本語と外国語の単語を一対一で対応させるのは難しいです。

「上班」は職場で働くことです。
中国語の基本の辞典である「現代漢語詞典」にも
「決められた時間に職場で仕事をする(原文は中国語ですが日本語に直訳しました)」
と書いてあります。
「職場に行くために移動する」という意味はありません。

ですから、「不去上班。」も「不上班。」も言えます。
「不去上班。」の場合は職場には行きません。
「不上班。」の場合は、勤務はしないというだけで、ひょっとしたら職場には行くのかもしれませんし、行かないかもしれません。その点を明確にしたいならそのための表...続きを読む

QVB Loopを一時停止し再開あるいはキャンセル

Loopで処理を回しています。処理件数が多く、処理の途中で一時停止させ、DataGridViewに表示されている処理結果を目で確認ないしマウスでコピーしてから、処理を再開ないしキャンセルして終了させる仕様を作成中です。

MessageBoxを使用すれば、Loopは一時停止出来たのですが、MessageBoxだとDataGridView上の処理結果をマウスでコピーなど出来ません。

そこで、MessageBoxを使用せずに、以下のコマンドを書いてみたのですが、最初のStopFlag=Trueが効くだけで次のコマンドは一瞬で処理されLoopが続いてしまいます。いかにすればLoopを一時停止できるか教えてください。

<変数宣言>
Public StopFlag As Boolean
Public CancelFlag As Boolean
<前処理>
TextBox1.Text = "処理待ち" 'テキストボックスに処理ステータスを表しています。
TextBox1.Refresh()

<処理>
Do
Me.Cursor = Cursors.WaitCursor '砂時計開始
TextBox1.Text = "処理中" ’ステータスを処理中として表示
TextBox1.Refresh()

Application.DoEvents() 'ストップボタンを押下したらここでDoEventsさせます。
If StopFlag = True Then ’ここでLoopを一時停止させておきたいのです。
Me.Cursor = Cursors.Default '一旦砂時計を止めます
TextBox1.Text = "処理一時停止"
TextBox1.Refresh()
If StopFlag = False Then ’再開ボタンが押下されたらここで再開させたい。
TextBox1.Text = "処理中" ’処理中と表示させます
TextBox1.Refresh()
Me.Cursor = Cursors.WaitCursor '砂時計再開です
ElseIf CancelFlag = True Then ’キャンセルボタンが押下されれば、処理はLoopを抜けます。
TextBox1.Text = "キャンセル"
TextBox1.Refresh()
Exit Do
End If
Loop

'----------ストップボタン----------
Private Sub Button2_Click~
StopFlag = True
End Sub
'----------再開ボタン----------
Private Sub Button3_Click~
StopFlag = False
End Sub
'----------キャンセルボタン----------
Private Sub Button4_Click~
CancelFlag = True
End Sub

この質問に補足する

Loopで処理を回しています。処理件数が多く、処理の途中で一時停止させ、DataGridViewに表示されている処理結果を目で確認ないしマウスでコピーしてから、処理を再開ないしキャンセルして終了させる仕様を作成中です。

MessageBoxを使用すれば、Loopは一時停止出来たのですが、MessageBoxだとDataGridView上の処理結果をマウスでコピーなど出来ません。

そこで、MessageBoxを使用せずに、以下のコマンドを書いてみたのですが、最初のStopFlag=Trueが効くだけで次のコマンドは一瞬で処理されLoopが続いてしまいま...続きを読む

Aベストアンサー

失礼、コルーチンを使うべきらしい。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=44349&forum=7

Q上班族の意味を教えて下さい

公司职员(会社員)

工薪族(サラリーマン)

上班族(?)

Aベストアンサー

「上班族」も「サラリーマン、会社員」のことですが、台湾起源らしいです。

「○○族」は、「公司职员」などの書面に記入する場合の身分を表わす語ではなく、ひとかたまりにして何かの対象にする場合の呼び名ですね。
自分や相手に対しても使いますが、職業欄には書きませんよね。

QVisual Basicプログラムのエラーについて

「Visual Basicでエンジョイプログラミング」(CQ出版社)
という本の11章VisualBasicで動かす自作装置の製作方法、
A-Dコンバータの製作と題してA-Dコンバータのプログラムが書いてあるのですが

<同じプログラムが掲載されているホームページ>http://mweb.jrscomware.com/tie/data/KyouzaiDB/bg/07/76aa45a7e4cc774b6976aad26a0709/_5051b778aae80343/b778768d0222/b778768d0222.htm

本に従ってプログラムを書いたのですが、実行しようとしたら
Public Const CLRDTR = 6
Public Const SETDTR = 5
Public Const CLRRTS = 4
Public Const SETRTS = 3
Public Const MS_CTS_ON = &H10&
Public Const MS_DSR_ON = &H20&

の部分が赤色の表示になって
「コンパイルエラー
定数、固定長文字列、配列、ユーザー定義型、
およびDeclareステートメントはオブジェクトモジュールのパブリックメンバとしては使用できません。」
と表示されたのですが、僕はまったくの初心者なので
ヘルプを見てもどのように修正すればいいのか良く分かりません。

何か知っている方がいらしゃいましたら教えてください。よろしくお願いします。

「Visual Basicでエンジョイプログラミング」(CQ出版社)
という本の11章VisualBasicで動かす自作装置の製作方法、
A-Dコンバータの製作と題してA-Dコンバータのプログラムが書いてあるのですが

<同じプログラムが掲載されているホームページ>http://mweb.jrscomware.com/tie/data/KyouzaiDB/bg/07/76aa45a7e4cc774b6976aad26a0709/_5051b778aae80343/b778768d0222/b778768d0222.htm

本に従ってプログラムを書いたのですが、実行しようとしたら
Public Const CLRDTR = 6
Public Const SETDTR = 5
...続きを読む

Aベストアンサー

No 1 の方のおっしゃるように、
(1) プロジェクトエクスプローラの
プロジェクト名を右クリック→追加→標準モジュール
としてそちらに記載するか、

(2) フォームを一つしか使わないのであれば、全部Publicを省いて記述しても大丈夫だと思います。

Q一時停止はどこで

交差点手前に横断歩道があり、そこに一時停止線と一時停止の標識がある交差点での出来事ですが、停止線で一時停止し、安全確認をした後、交差点に徐行で進入し左折した所で左方向で待機していたおまわりさんに一時停止をしていなかったと注意を受けました。おまわりさんの位置からは一時停止線は死角で見通せる位置ではなく、交差点進入時に停止しなかったのを見て停止していないと判断された様です。この場所は変則交差点で、右方向の見通しは良いですが左側は建物が死角となり見通しは悪くなっています。停止した事を告げると、一時停止箇所と交差点進入時にもう一度停止する必要があると注意を受けました。停止線は歩道の手前にのみで歩道の先には停止線はありません。おまわりさんの言う様に、2度停止しなければならないのでしょうか?(注意のみで切符は切られませんでした)どうかよろしくお願いします。

Aベストアンサー

こんにちは

交差点での停止位置についてですが
1 停止線があれば停止線の直前
2 停止線がなければ交差点の直前(横断歩道や自転車横断帯があればその直前)
となっています。

>2度停止しなければならないのでしょうか?
2度停止しなくても、違反にはなりません。
2度停止しなければならない場所はありませんが、2度停止する場合はあります。

>交差点手前に横断歩道があり、そこに一時停止線と一時停止の標識がある交差点
ここの交差点の場所を見てみないと分からないのですが、
横断歩道が交差点に入るのか入らないかで変わります。

A 横断歩道が交差点に入る場合(横断歩道の停止線に「止まれ」の標示がある場合を含む)
今回の行動で間違いありませんよ。もちろん、優先車が接近していたら停止する場合がありますね。

B 横断歩道が交差点に入らない場合
この場合の停止線は横断歩行者が渡っているまたは渡ろうとしている場合に停止線の直前で停止します。さらに、交差点の直前でもう一度、一時停止します。
横断歩行者がいない場合は、交差点の直前で停止します。

法令的には2度停止はありませんが、場所によっては2度停止した方が安全な交差点が数多くあります。
私の場合は、事故を起こさないためにも2段階の停止も心がけています。

こんにちは

交差点での停止位置についてですが
1 停止線があれば停止線の直前
2 停止線がなければ交差点の直前(横断歩道や自転車横断帯があればその直前)
となっています。

>2度停止しなければならないのでしょうか?
2度停止しなくても、違反にはなりません。
2度停止しなければならない場所はありませんが、2度停止する場合はあります。

>交差点手前に横断歩道があり、そこに一時停止線と一時停止の標識がある交差点
ここの交差点の場所を見てみないと分からないのですが、
横断歩...続きを読む

QactiveX を 使った Visual Basicのプログラム

IteractiveBrokersという株のbrokerのサイトでサンプル プログラムを使いたいのですがよくわかりません。使用方法を下記します
Use the Visual Basic VBClient Sample Program

You can access the server through the ActiveX interface using the Visual Basic sample application.
To run the sample you must:
Install the API sample programs <-インストール完了
Configure the application to support the API components
ー>configure済み
Have MS Visual Studio (Visual Basic 6.0 or higher) installed on your PC. ー>visual studio 2005あり

The VBClient program is a sample program that shows you how to use the TWS ActiveX control to connect to the server from a Visual Basic application.

To use the VBClient program
1.From MS Visual Basic, open the project file VB_API_sample.vbp.
ー>open済み
2.On the Projects menu, select Components.
ー>VB2005で「はコンポーネントの追加」をクリック
3.In the Components dialog box, select TWS ActiveXControl module and click OK.ー>ダイアログにはTWS activeXControlがない

Press Ctrl + F5 to compile and run the project.

3.のTWS というのはこの会社の株取引用のツールです。
普通何もしないでダイアログにTWS ActiveXControlがあるはずがないとは思うのですが、何かが抜けているのか、やり方が悪いのか、またはテンプレート中のどれかをクリックして,TWSActiveControlという名前をつければよいのか、おわかりの方がおられたら教えてください。
直接聞けばよいのですが、英語の質問は苦手なもので、またAPIプログラムはサポートしないとあったものですから・・・・。
よろしくお願いします。

IteractiveBrokersという株のbrokerのサイトでサンプル プログラムを使いたいのですがよくわかりません。使用方法を下記します
Use the Visual Basic VBClient Sample Program

You can access the server through the ActiveX interface using the Visual Basic sample application.
To run the sample you must:
Install the API sample programs <-インストール完了
Configure the application to support the API components
ー>configure済み
Have MS Visual Studio (Visual Basic 6.0 or high...続きを読む

Aベストアンサー

VB.NETですと コンポーネントの追加で 『COM』タグあると思います
ここを 選択して『TWS ActiveX Control』を探してみましょう ...

Q電車の停止位置について

停止位置、10
停止位置、12
停止位置、共通
停止位置、併合

これの意味がわかりません。どういう意味ですか?

Aベストアンサー

こんにちは。

私が良く利用する線区は、普通列車だけでも4両・6両・8両・10両・12両の編成パターンがあります。
ホームへの階段やエレベーター、改札の位置にもよりますが、さすがに4両編成と12両編成の先頭車両が同じ位置に停車するわけにもいかないですよね。

というわけでご質問の内容は、列車が何両編成によって停止位置目標を分けていることに由来するものです。

停止位置目標が12だと12両編成以下の列車、10だと10両編成以下の列車、4だと4両編成以下の列車の先頭車両をその位置に合わせて停めるようにします。

また共通位置は、最も編成数が長い列車に対しての停止位置目標である場合や、編成両数に関係無く停車位置を固定さたい場合に設置されるものです。

併合についても、既に回答が出ている通りですね。

参考URL:http://kobe.cool.ne.jp/tarumi/T0531_01.html

関西地区のJR線の事例が中心ですが、このURLも参考になります。

QVisual BASIC から外部プログラムが起動できません。

東京デバイセズより発売されているリレーボードを入手し、リレー制御のプログラム iwt303ctl をダウンロードしてディスクトップに配置し、OSのコマンドプロンプトからコマンドを入力することにより、リレーを制御することは確認できたのですが

https://tokyodevices.jp/items/149


Microsoft Visual Studio 2015 のVisual BASICにて下記コードを記載して走らせますとエラーとなりリレーを制御することが出来ません。

System.Diagnostics.Process.Start("C:\Users\RD\Desktop\iwt303ctl set ANY 1")

エラーコードは以下の内容になります。

スレッド 0x124c はコード 0 (0x0) で終了しました。
'test1.vshost.exe' (CLR v4.0.30319: test1.vshost.exe): 'C:\Users\RD\Documents\Visual Studio 2015\Projects\リレー制御\test1\bin\Debug\test1.exe' が読み込まれました。シンボルが読み込まれました。
'test1.vshost.exe' (CLR v4.0.30319: test1.vshost.exe): 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Remoting\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Remoting.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。
例外がスローされました: 'System.ComponentModel.Win32Exception' (System.dll の中)
型 'System.ComponentModel.Win32Exception' のハンドルされていない例外が System.dll で発生しました
追加情報:指定されたファイルが見つかりません。

プログラム '[8076] test1.vshost.exe' はコード -1 (0xffffffff) で終了しました。

---------------------------------------

Visual BASIC にて以下のようにコードを記載すると

System.Diagnostics.Process.Start("notepad.exe")

外部プログラムであるnotepadは問題なく起動できるのですが。

どこに問題があるのでしょうか。

ご教授のほどよろしくお願いいたします。

東京デバイセズより発売されているリレーボードを入手し、リレー制御のプログラム iwt303ctl をダウンロードしてディスクトップに配置し、OSのコマンドプロンプトからコマンドを入力することにより、リレーを制御することは確認できたのですが

https://tokyodevices.jp/items/149


Microsoft Visual Studio 2015 のVisual BASICにて下記コードを記載して走らせますとエラーとなりリレーを制御することが出来ません。

System.Diagnostics.Process.Start("C:\Users\RD\Desktop\iwt303ctl set ANY 1")
...続きを読む

Aベストアンサー

VB使いではありませんけど……

https://msdn.microsoft.com/ja-jp/library/53ezey2s(v=vs.110).aspx
ということで、
>System.Diagnostics.Process.Start("C:\Users\RD\Desktop\iwt303ctl set ANY 1")
は、
デスクトップにある"iwt303ctl set ANY 1.exe"を起動しようとしています。
そんな実行ファイルはないので、
>追加情報:指定されたファイルが見つかりません。
となるのでしょう。

https://msdn.microsoft.com/ja-jp/library/h6ak8zt5(v=vs.110).aspx
こちらを使用するべきなんじゃないですか?

System.Diagnostics.Process.Start("C:\Users\RD\Desktop\iwt303ctl", "set ANY 1")
ですかね。

Q一時停止の停止位置について

一時停止の標識がある交差点で横断歩道がある場合は、横断者がいる場合は横断歩道の手前(停止線がある時はその手前)で一時停止しなければならないと思うのですが、横断者がいないことが明かな場合はどこで停止すればよいのでしょうか?
横断歩道の手前(停止線がある時はその手前)で一時停止して、それからもう一度交差点の手前で停止する、ということになるのでしょうか?
すいませんがどうかよろしくお願いします。

Aベストアンサー

ちょびっと訂正
>横断者がいる場合は横断歩道の手前(停止線がある時はその手前)
>で一時停止しなければならない
正しくは、一時停止して歩行者の横断を妨げてはならない(歩行者優先)
歩行者がいない場合は、停止線(一時停止の方)で停止して・・・・ですね。
最初に質問文を読んだ時に、"車~一時停止~横断歩道~交差点"の順番なのかと思いました。
"車~横断歩道~一時停止~交差点"の順の場合ですよね。
ならば歩行者がいない場合は、停止線(一時停止の方)で停止して・・・・で良いと思います。

QVisual Basicで作成したプログラムをExcelに出力したいです

Visual Basic. NET 2003を使っています。
「N期間(年間)と利子率(%)を入力し、1年目からN年目までの元金の価値の倍率のリストを作成するプログラムを作成し、出力データをMS-Excelのカッマ区切り形式(ファイル名.csv)に保存すること」を、授業の課題として出されました。大学の授業って大変ですね。。。

貯金した元金の価値の倍率は以下の式で表されます。
N年後の価値の倍率=(1+利子率)二乗 N期間

自分でここまではやってみました。
Dim principal As Integer
Dim period As Integer
Dim interest As Double
Dim value As Double

'Input
principal = Val(TextBox1.Text)
period = Val(TextBox2.Text)
interest = Val(TextBox3.Text) / 100

'Calculation
value = principal * ((1 + interest) ^ period)

'Insurt data
Const filename As String = "value.csv"

FileOpen(1, filename, OpenMode.Output)
WriteLine(1, period, interest, value)
FileClose(1)

お昼からずっと格闘しています。。。そろそろお腹がすいてきました(笑)もう困り果ててしまったので、ここに質問させていただきます!!
どなたか回答してくださればうれしいです♪
よろしくお願いします!!

Visual Basic. NET 2003を使っています。
「N期間(年間)と利子率(%)を入力し、1年目からN年目までの元金の価値の倍率のリストを作成するプログラムを作成し、出力データをMS-Excelのカッマ区切り形式(ファイル名.csv)に保存すること」を、授業の課題として出されました。大学の授業って大変ですね。。。

貯金した元金の価値の倍率は以下の式で表されます。
N年後の価値の倍率=(1+利子率)二乗 N期間

自分でここまではやってみました。
Dim principal As Integer
Dim period As Integer
Di...続きを読む

Aベストアンサー

for を使って繰り返し処理ができるようにします


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング