ProgressBarでどすれば?

解決


マグ  2005-04-18 01:28:46  No: 121022

WindowsXPを立ち上げたときにロゴ画面に
表示される進行状況がProgressBar?みたいなものと
同じ動作をさせるにはどうすればよろしいのでしょうか?

探したのですが、見つかりません。


マグ  2005-04-18 01:41:52  No: 121023

環境を書き忘れていました。
VB.NETです。

ソースはこのような感じですが・・・・・
ProgressBarが動いてくれません(TT)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        With Label1
            .Text = ""
            .Top = ProgressBar1.Top
            .Left = ProgressBar1.Left
            .Height = ProgressBar1.Height
            .Width = 0
        End With
        With ProgressBar1
            .Maximum = 100
            .Minimum = 0
            .Step = 10
            .Value = 0
        End With
        With Timer1
            .Interval = 100
        End With
        Timer1.Start()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        With ProgressBar1
            If .Maximum >= .Value Then
                .Value = 0
            Else
                .Value += 10
            End If
            If .Value <= 30 Then
                Label1.Width = 0
            Else
                Label1.Width = .Width / (.Maximum / 10) * ((.Value - 30) / 10)
            End If
        End With
    End Sub

    Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        Timer1.Stop()
    End Sub


やおきな  2005-04-18 04:01:45  No: 121024

DoEvents() してみたらどうでしょう。


マグ  2005-04-18 04:33:31  No: 121025

無限ループではなく、タイマーイベントで処理しているため、
CPUが100%を超えないため、DoEvents()しても変わりません。
試してみましたが、だめでした。


マグ  2005-04-18 05:43:44  No: 121026

原因が分かりました。

単純にミスしていました。
If .Maximum >= .Value Then
の不等号が逆でした。

それと、XPのProgressBarは緑色でメータには上から下に向かって
グラデーションになっています。
これと、同じようにメータの中にグラーデーションをかけたいのですが、
どうすれば、よろしいのでしょうか?


じゃんぬねっと  URL  2005-04-18 18:46:22  No: 121027

XP 視覚テーマについて勉強しましょう。
XP だからといって、常にそういうわけではありませんが。
(MSSTYLES ファイルで変わりますので)

http://dobon.net/vb/dotnet/control/xpstyle.html


マグ  2005-04-18 19:11:24  No: 121028

>XP 視覚テーマについて勉強しましょう。
>XP だからといって、常にそういうわけではありませんが。
>(MSSTYLES ファイルで変わりますので)

マニフェストファイルのことは知っています。
XPの場合はマニフェストの埋め込みで何とかなるのですが、
2000のPCでも、XP同様、緑のグラデーションにしたいのですが、
可能でしょうか?


つーか  2005-04-18 21:40:57  No: 121029

つーか、あんたがはじめにXPって言ってるんじゃん。
自分の質問の仕方が悪いのに、何をいってんだ?


匿名  2005-04-19 00:44:09  No: 121030

「XPのロゴ画面と同じような動作」
と言っただけで自分の開発環境がXPだとは言ってないのでは?
といっても、2000だとも言ってないので
XPだと思われても仕方ないかもしれません。
OSもちゃんと書きましょうね。


マグ  2005-04-19 01:36:37  No: 121031

>「XPのロゴ画面と同じような動作」
>と言っただけで自分の開発環境がXPだとは言ってないのでは?
>といっても、2000だとも言ってないので
>XPだと思われても仕方ないかもしれません。
>OSもちゃんと書きましょうね。

そうです。まだ、開発環境を言ってません。
「XPのロゴ画面と同じような動作」と同じようなレイアウトと動作を
Windows 2000で行なわせるにはどうすればいいでしょうか?

ということを聞いているんですが・・・・・
誤解を招くような質問でしたか?

OSの環境はXPですが、ソフトを作る過程でどうしても、2000でも、そのように
表示させたいので、質問しました。


いな  2005-04-19 03:08:10  No: 121032

確かに、環境は事前に説明ありきが大前提ですな。
そうすることで不毛なやり取りをせずにすみます。

ということで、まだ書いていない環境を提示してください。


マグ  2005-04-19 03:38:09  No: 121033

>ということで、まだ書いていない環境を提示してください。

環境を新たに記載します。
環境:VB.NET + WindowsXPです。

>「XPのロゴ画面と同じような動作」と同じようなレイアウトと動作を
>Windows 2000で行なわせるにはどうすればいいでしょうか?

動作は出来ているのですが、レイアウトがProgressBarのメータの中を
緑のグラーデーションにしたいのですが、Windows2000でそのように
表示させたいのですが、可能でしょうか?


いな  2005-04-19 04:25:56  No: 121034

開発環境はVB.NET + WindowsXPだけど
動作環境はVB.NET + WindowsXPではなく、
VB.NET + Windows2000ということね。
↑ここ重要!


マグ  2005-04-19 05:00:42  No: 121035

>開発環境はVB.NET + WindowsXPだけど
>動作環境はVB.NET + WindowsXPではなく、
>VB.NET + Windows2000ということね。
>↑ここ重要!

今まで、開発環境=動作環境だと思っていました。
開発環境と動作環境って意味違ったのですか。
知りませんでした。
親切に教えてくださって、ありがとうございました。


で、結論は  2005-04-19 05:02:27  No: 121036

自分で作るしかないのではないでしょうか?
苦労のわりに報われない気がしますが・・・


特攻隊長まるるう  2005-04-19 19:54:10  No: 121037

でもまぁ、フォームにお絵描きする要領で完全に自分の制御下の
ProgressBar を作れば、例えば Bitmap でも利用してやって
花柄の…とかw。面白いものはできそうですけどね。画像ファイルを
プロパティで設定可能にして、たてよこ変更可能とか…作り込めば、
Tips として欲しい人はいると思います。


マグ  2005-04-20 00:00:47  No: 121038

全て自作するしかないのでしょうか。
ProgressBarのコントロールを調べましたが、
ProgressBar1_Paintのイベントハンドラーが見つからない上、
e.Graphicsもエラーが出てしまい、描画できませんでした。

PictureBoxでProgressBarを自作してしまえば、いいと思うのですが、
あまり、CPUに負荷をかけたくありません。

理由は
フォームのインスタンスを渡し、プラグインを読み込むときに
時間がかかります。
まだ、2つですが、20個とかなると、
時間がかなり、かかります。
それを防ぐため、スプラッシュウィンドウを表示して、
フリーズしたかどうかをユーザに伝えるため、
ProgressBarを使いWindowsXPのようなデザインと動きにさせたかったんですが、
ProgressBarを自作となれば、おそらく、描画でかなりCPUを使用してしまうため、
それができないんです。
無理なようなのでWindows2000に対してはAPIでProgressBarのBackColorとForeColor
を変更するようにします。
やおきなさん、じゃんぬねっとさん、匿名さん、いなさん、
特攻隊長まるるうさん、ありがとうございました。


マグ  2005-05-04 01:27:10  No: 121039

暇だったので、ProgressBarのコントロールを自作しました。

ソースが長すぎるので
http://www.geocities.jp/dfgkthug/TipsFolder/kizi/VB/ProgressBarXP.html
自分のホームページにアップしました。
ところで、これって、本当に欲しがる方っているのでしょうか?


PN  2005-05-10 00:41:13  No: 121040

以前にも、マグさんがらみで、ちょっとあったと思いますが、
質問するときに最低限するマナーがあるのでは、ないのでしょうか?

あいかわずという気がしてしょうがありません。


マグ  2005-05-10 01:39:14  No: 121041

>質問するときに最低限するマナーがあるのでは、ないのでしょうか?

あると思っています。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加