vb6控件 ProgressBar
- 格式:docx
- 大小:18.26 KB
- 文档页数:3
VB6如何在托盘中写入应用程序图标1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False2、菜单:工程--添加模块按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas3、在Module1中写下如下代码:4、在Form1的Load事件中写下如下代码:5、在Form1的QueryUnload事件中写入如下代码:6、在Form1的MouseMove事件中写下如下代码:7、现在将程序保存起来运行看看系统托盘处是否增加了一个本工程的图标。
单击此图标,Form1就自动弹出来了。
将个性化进行到底VB中打造个性进度条2005-03-26 13:28作者:伍学慧出处:天极网责任编辑:方舟控件下载简介VB的第三方控件ccrpProgressBar是一个进度条的控件,可以有多种形态供选择。
比起VB 中自带的进度条控件ProgressBar更有个性。
使用实例:用ccrpProgressBar制作各式各样的进度条在VB中自带了一个进度条控件ProgressBar,但功能简单。
我向大家推荐一个VB的第三方进度条控件ccrpProgressBar。
该控件功能强大,有多种形态供选择,而且只需要简单的设置控件的属性就能实现,非常的好用。
下面通过一个例子向大家介绍该控件的用法。
(1)加载控件启动Visual Basic 6.0,创建一个工程并保存为"工程1.vbp",同时产生一个名为"Form1"的窗口。
在工具箱的空白处单击鼠标右键,从弹出的快捷菜单中启动"部件"窗口,如图1所示。
图1点击"浏览"按钮,从存放ccrpProgressBar控件的文件夹中找到ccrpprg.ocx文件。
点击"应用"后ccrpProgressBar控件就添加到工具箱中。
如图2。
图2(2)设计窗体和控件向窗体中添加9个ccrpProgressBar控件和一个Timer控件。
progressbar的用法ProgressBar 是 Android 平台中常用的一个视图控件,它用于显示一个表示进度的动态条,可以用于展示下载、上传、转换等操作的进度。
ProgressBar 支持多种样式,如水平进度条、圆形进度条等,而且还可以自定义样式,非常灵活和实用。
本文将介绍 ProgressBar 控件的用法和实例。
一、ProgressBar 控件的属性ProgressBar 控件最常用的属性如下表所示:| 属性名称 | 描述 | | --- | --- | | android:id | 控件的唯一 id | | android:layout_width | 控件的宽度 | | android:layout_height | 控件的高度 | | android:layout_margin | 控件的外边距 | |android:max | 进度条的最大值 | | android:progress | 进度条的当前值 | | android:progressDrawable | 进度条的背景 | | android:secondaryProgress | 二级进度的当前值 | | android:indeterminate | 是否在不知道进度时显示一个不确定的进度条 | |android:indeterminateDrawable | 不确定进度条的图象资源 | | android:indeterminateDuration | 不确定进度条的动画时长 | | android:minWidth | 进度条的最小宽度 | | android:minHeight | 进度条的最小高度 | | android:visibility | 控件的可见性 |ProgressBar 的属性可用于配置进度条的样式和行为,下面将介绍其中一些重要的属性。
1. max 和 progressmax 属性用于设置进度条的最大值,progress 属性用于设置进度条的当前进度值。
一个用VB编写ActiveX自定义控件的例子——进度条控件设计方法:1.在UserControl中添加一个Label控件Label1,将它设为平面,用来做外框。
添加两个PictureBox控件PictureBox1做为进度指示,PictureBox2控件做为控件背景。
2.加入以下代码Option Explicit''定义私有变量用于存储属性值Private mvarMax As LongPrivate mvarMin As LongPrivate mvarValue As LongPrivate Rate As StringPrivate Sub UserControl_Initialize()''初始化Picture2.BackColor = vbBlueEnd SubPublic Property Get BackColor() As OLE_COLOR''读取BackColor属性BackColor = Picture1.BackColorEnd PropertyPublic Property Let BackColor(ByVal vNewValue As OLE_COLOR)''设置BackColor属性Picture1.BackColor = vNewValueEnd PropertyPrivate Sub UserControl_InitProperties()''初始化属性Max = 100Min = 0Value = 0End SubPrivate Sub UserControl_ReadProperties(PropBag As PropertyBag)''读取从属性窗体中设置的属性值mvarMax = PropBag.ReadProperty("Max", 100)mvarMin = PropBag.R eadProperty("Min", 0)''Value属性值这里未提供,主要是模仿VB自带的进度条控件''mvarValue = PropBag.R eadProperty("Value", 0)End SubPrivate Sub UserControl_WriteProperties(PropBag As PropertyBag)''保存从属性窗体中设置的属性值PropBag.WriteProperty "Max", mvarMax, 100PropBag.WriteProperty "Min", mvarMin, 0''PropBag.WriteProperty "Value", mvarValue, 0End SubPrivate Sub UserControl_Resize()''R esize事件Label1.Move 0, 0, UserControl.Width / Screen.TwipsPerPixelX, UserControl.Height / Screen.TwipsPerPixel YPicture1.Move 1, 1, UserControl.Width / Screen.TwipsPerPixelX - 2, UserControl.Height / Screen.TwipsPerPixel Y - 2Picture2.Move 1, 1, 1, UserControl.Height / Screen.TwipsPerPixelY - 2End SubPublic Property Get Max() As Long''读取Max属性Max = mvarMaxEnd PropertyPublic Property Let Max(ByVal vNewValue As Long)''设置Max属性mvarMax = vNewValueIf vNewValue < Min Then Err.Raise "1001", , "Max必须大于Min"End PropertyPublic Property Get Min() As Long''读取Min属性Min = mvarMinEnd PropertyPublic Property Let Min(ByVal vNewValue As Long)''设置Min属性If vNewValue > Max Then Err.Raise "1000", , "Min必须小于Max"mvarMin = vNewValueEnd PropertyPublic Property Get Value() As Long''读取Value属性Value = mvarValueEnd PropertyPublic Property Let Value(ByVal vNewValue As Long)''设置Value属性''原理就是在两个PictureBox中以不同颜色打印百分比进度Dim DX As Long, DY As LongIf vNewValue > Max Then Err.Raise "1002", , "Value不能大于Max"mvarValue = vNewValuePicture2.Width = Value / (Max - Min) * (UserControl.Width / Screen.TwipsPerPixelX - 2) Rate = Int(Value / (Max - Min) * 100) & "%"DX = (Picture1.Width - Picture1.TextWidth(Rate)) / 2DY = (Picture1.Height - Picture1.TextHeight(Rate)) / 2Picture1.ForeColor = vbBlackPicture2.ForeColor = vbWhi t eIf DX < Picture2.Width ThenPicture2.ClsPicture2.CurrentX = DXPicture2.CurrentY = DYPicture2.Print RateElsePicture1.ClsPicture1.CurrentX = DXPicture1.CurrentY = DYPicture1.Print RateEnd IfEnd Property3.新建另一个测试工程,加入一个自己的进度条控件和一个系统的进度条控件,加入以下代码:Option ExplicitPrivate Sub Command1_Click()Unload MeEnd SubPrivate Sub Timer1_Timer()myProgressBar1.Value = myProgressBar1.Value + 2ProgressBar1.Value = ProgressBar1.Value + 2If myProgressBar1.Value = myProgressBar1.Max Then Timer1.Enabled = FalseEnd Sub。
android控件之progressbar进度条From: 毁灭2012/salam/archive/2010/10/06/1844703.ht ml#2717174 随笔- 125 文章- 0 评论- 442ProgressBar是Android的进度条。
体验效果源码下载下面详细介绍ProgressBar一、说明在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度。
一个进度条也可不确定其进度。
在不确定模式下,进度条显示循环动画。
这种模式常用于应用程序使用任务的长度是未知的。
二、XML重要属性android:progressBarStyle:默认进度条样式android:progressBarStyleHorizontal:水平样式三、重要方法getMax():返回这个进度条的范围的上限getProgress():返回进度getSecondaryProgress():返回次要进度incrementProgressBy(int diff):指定增加的进度isIndeterminate():指示进度条是否在不确定模式下setIndeterminate(boolean indeterminate):设置不确定模式下setVisibility(int v):设置该进度条是否可视四、重要事件onSizeChanged(int w, int h, int oldw, int oldh):当进度值改变时引发此事件五、实例1.布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content"><ProgressBar android:id="@+id/progress_horizontal"style="?android:attr/progressBarStyleHorizontal"android:layout_width="200dip"android:max="100"android:progress="50"android:secondaryProgress="75" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="默认进度条" /><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"><Button android:id="@+id/decrease"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="减少" /><Button android:id="@+id/increase"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="增加" /></LinearLayout><TextViewandroid:layout_height="wrap_content"android:text="自定义进度条" /><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"><Button android:id="@+id/decrease_secondary"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="第二减少" /><Button android:id="@+id/increase_secondary"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="第二增加" /></LinearLayout></LinearLayout>2.Java代码package wjq.WidgetDemo;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.Window;import android.widget.Button;import android.widget.ProgressBar;public class ProgressBarDemo extends Activity {/* (non-Javadoc)* @see android.app.Activity#onCreate(android.os.Bundle)*/@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_PROGRESS);setContentView(yout.probarpage);setProgressBarVisibility(true);final ProgressBar progressHorizontal = (ProgressBar) findViewById(R.id.progress_horizontal);setProgress(progressHorizontal.getProgress() * 100); setSecondaryProgress(progressHorizontal.getSecondaryProgress() * 100);Button button = (Button)findViewById(R.id.increase);button.setOnClickListener(newButton.OnClickListener() {public void onClick(View v) {progressHorizontal.incrementProgressBy(1);// Title progress is in range 0..10000setProgress(100 * progressHorizontal.getProgress());}});button = (Button) findViewById(R.id.decrease);button.setOnClickListener(newButton.OnClickListener() {public void onClick(View v) {progressHorizontal.incrementProgressBy(-1);// Title progress is in range 0..10000setProgress(100 *progressHorizontal.getProgress());}});button = (Button)findViewById(R.id.increase_secondary);button.setOnClickListener(newButton.OnClickListener() {public void onClick(View v) {progressHorizontal.incrementSecondaryProgressBy(1);// Title progress is in range 0..10000setSecondaryProgress(100 * progressHorizontal.getSecondaryProgress());}});button = (Button)findViewById(R.id.decrease_secondary);button.setOnClickListener(newButton.OnClickListener() {public void onClick(View v) { progressHorizontal.incrementSecondaryProgressBy(-1);// Title progress is in range 0..10000setSecondaryProgress(100 * progressHorizontal.getSecondaryProgress());}});}}评论补充(常见错误案例):发表评论#1楼2011-10-07 17:08 | 风月瑾hi,你好!我在学习控件ProgressBar时出现了一个很奇怪的问题,程序运行到最后突然就出错了。
如果说上次我发的那个直接调用R0函数的是鸡肋的话,这次这个就是有很好的实际应用的东西。
大家都知道COM接口,COM就是一个虚函数表指针,VB6虽然支持COM的thiscall调用,可必需通过引用,而如果一些COM接口没有给基于VB6的引用,那VB6就残了,比如IStream之类的,这次的ITaskbarList3也是一样。
我们先看看看一个COM接口在内存中的结构,这里我用VB6的方式写,大家理解起来会很简单。
如果我们声明一个变量,这个变量是一个COM对象,然后调用xx函数真正初始化了这个对象,COM指针就指向一个虚函数表,此时COM在Win32内存中是这样的,伪代码如下:Type ComType IUnknownQueryInterface + 0AddRef + 4Release + 8End TypeFunction1 + 12Function2 + 16Function3 + 20···End Type恩,可以理解为COM指针就是一个表的内存区域,然后这个内存区域里面就是这样一张虚函数表,调用时,编译器根据索引*4取得需要调用的虚函数的地址,然后进行调用。
我们再追寻下一个COM对象的诞生过程:声明COM对象变量(x86下这是一个4字节的指针)调用**函数初始化这个变量,**函数进行一个new class操作,IUnknown引用+1,初始化class内的各种此对象需要内部变量之类的等等,这就是为什么call这个COM成员函数时需要压入COM指针,因为那就是一个伪class指针,记录了一些这个class需要使用的数据。
此时一个新的class数据被分配出来,建立虚函数表,把class的基地址写入4字节的程序内变量。
程序调用class的某个成员函数,根据虚函数表取到函数地址,压入class基地址,函数代码内从这个class提取相关变量等,执行代码。
我们再来看看一个COM函数的原形:void test(int a,int b);真正的原形是:void test(this,int a,int b);this即为class指针,这是对程序员不可见的。
VB进度条制作方法VB ProgressBar控件进度条:Private Sub Command1_Click()Dim counter As IntegerDim workarea(25000) As StringProgressBar1.Min = LBound(workarea)ProgressBar1.Max = UBound(workarea)ProgressBar1.Visible = TrueProgressBar1.Value = ProgressBar1.MinFor counter = LBound(workarea) To UBound(workarea)workarea(counter) = "initial value" & counterProgressBar1.Value = counterNext counterEnd Sub各位看官,直接看下面:TEXT控件进度条:Option ExplicitDim i As IntegerPrivate Sub Form_Load()Timer1.Enabled = TrueText2.Width = (Form1.Width / 100)End SubPrivate Sub Timer1_Timer()'进度条设置Text2.Width = Text2.Width + (Form1.Width / 100)If (Text2.Width / Form1.Width) > 1 ThenForm2.Show '载入主画面Unload MeEnd IfEnd SubLmage控件进度条:Option ExplicitDim i As IntegerPrivate Sub Form_Load()JDT.Top = Lab.TopJDT.Width = (Lab.Width / 100)End SubPrivate Sub Timer1_Timer()'进度条设置JDT.Width = JDT.Width + (Lab.Width / 100)If (JDT.Width / Lab.Width) > 1 ThenForm1.Show '载入主画面Unload MeEnd IfEnd SubPicture控件进度条:'例子需以下控件: 'Command1、Command2、Picture1:都采用默认属性设置Dim ctEsc As BooleanPrivate Sub Form_Load()'初始化控件Picture1.AutoRedraw = TrueCommand1.Caption = "滚动条例子": Command2.Caption = "取消"End SubPrivate Sub Command1_Click()Dim I As Long, S As LongctEsc = FalseS = 1000For I = 1 To SMe.Cls: Me.Print "显示:" & IJinDuTiao I / S, "0.0" '显示进度条:进度,显示格式(即小数数位)DoEventsIf ctEsc Then Me.Print "已取消": Exit SubNextMe.Print "完毕"End SubPrivate Sub Command2_Click()ctEsc = TrueEnd SubPrivate Sub JinDuTiao(Bi As Single, Optional nFormt As String = "0")Dim W As Long, H As Long, nStr As StringStatic UpBi As StringnStr = Format(Bi * 100, nFormt)If Val(nStr) >= "100" Then nStr = 100If UpBi = nStr Then Exit SubUpBi = nStrW = Picture1.ScaleWidth: H = Picture1.ScaleHeightPicture1.ClsPicture1.DrawMode = 13nStr = nStr & " %"Picture1.CurrentX = (W - Picture1.TextWidth(nStr)) * 0.5Picture1.CurrentY = (H - Picture1.TextHeight(nStr)) * 0.5Picture1.Print nStrPicture1.DrawMode = 14Picture1.Line (0, 0)-(W * Bi, H), &HFF0000, BFPicture1.RefreshEnd SubShape控件进度条:需要用到的控件: 'Command1、Command2、Label1、Label2、Shape1Dim ctEsc As BooleanPrivate Sub Form_Load()'初始化控件Command1.Caption = "滚动条例子": Command2.Caption = "取消"Label1.BorderStyle = 1: Label1.Caption = "0%"Label1.Alignment = 2: Label1.Height = Me.TextHeight("A") * 1.5Shape1.FillStyle = 0: Shape1.FillColor = &HFF0000: Shape1.DrawMode = 14Shape1.Move Label1.Left, Label1.Top, 30, Label1.Height - Screen.TwipsPerPixelY * 2Shape1.ZOrderEnd SubPrivate Sub Command1_Click()Dim I As Long, S As LongctEsc = FalseS = 1000For I = 1 To SMe.Cls: Me.Print "显示:" & IJinDuTiao I / S, "0.0" '显示进度条:进度,显示格式(即小数数位)DoEventsIf ctEsc Then Me.Print "已取消": Exit SubNextMe.Print "完毕"End SubPrivate Sub Command2_Click()ctEsc = TrueEnd SubPrivate Sub JinDuTiao(Bi As Single, Optional nFormt As String = "0")Label1.Caption = Int(Bi * 100) & "%"Shape1.Width = Bi * Label1.WidthEnd Sub。
简介UpsUpsVB的第三方控件ccrpProgressBar是一个进度条的控件,可以有多种形态供选择。
比起VB 中自带的进度条控件ProgressBar更有个性。
UpsUps使用实例:UpsUps用ccrpProgressBar制作各式各样的进度条UpsUps在VB中自带了一个进度条控件ProgressBar,但功能简单。
我向大家推荐一个VB的第三方进度条控件ccrpProgressBar。
该控件功能强大,有多种形态供选择,而且只需要简单的设置控件的属性就能实现,非常的好用。
下面通过一个例子向大家介绍该控件的用法。
UpsUps(1)加载控件UpsUps启动Visual Basic 6.0,创建一个工程并保存为"工程1.vbp",同时产生一个名为"Form1"的窗口。
在工具箱的空白处单击鼠标右键,从弹出的快捷菜单中启动"部件"窗口,如图1所示。
UpsUpsUps图1Ups点击"浏览"按钮,从存放ccrpProgressBar控件的文件夹中找到ccrpprg.o cx文件。
UpsUps点击"应用"后ccrpProgressBar控件就添加到工具箱中。
如图2。
Ups UpsUps图2Ups(2)设计窗体和控件UpsUps向窗体中添加9个ccrpProgressBar控件和一个Timer控件。
如图3。
Ups UpsUps图3Timer控件属性页的设置如图4所示。
Interval的值设置为100,与ccrpP rogressBar控件的默认值一致。
Enabled设置为False。
UpsUpsUps图4Ups(3) ccrpProgressBar控件的主要属性UpsUps·Max:最大值。
默认100。
Ups·Min:最小值。
默认0。
Ups·Value:进度条的当前值。
Ups·Alig nment:显示表示进度的文字的位置。
vb6的垂直滚动条用法VB6是一种广泛使用的编程语言,其中的垂直滚动条是一种常见的用户界面控件。
垂直滚动条的主要作用是在容器控件中显示大量内容时,让用户能够方便地滚动浏览。
在VB6中,使用垂直滚动条十分简单。
以下是使用垂直滚动条的步骤:1. 首先,在VB6的窗体中添加一个容器控件,例如一个文本框或一个列表框。
这将作为垂直滚动条的内容区域。
2. 在工具箱中选择垂直滚动条控件,并将其拖放到容器控件旁边的适当位置。
3. 右键单击垂直滚动条,并选择“属性”选项。
在属性窗口中,可以对垂直滚动条的各种属性进行设置。
4. 设置垂直滚动条的最小值和最大值。
这定义了用户可以滚动的范围。
例如,如果容器控件中的内容有50行,那么最小值可以设置为1,最大值可以设置为50。
5. 设置垂直滚动条的初始值。
这将定义滚动条在初始状态下的位置。
例如,如果希望刚打开窗体时滚动条在顶部位置,可以将初始值设置为最小值。
6. 编写垂直滚动条的滚动事件处理程序。
当用户拖动滚动条时,可以使用滚动事件来处理滚动条的位置变化,并相应地更新内容区域的显示位置。
7. 在滚动事件处理程序中,可以使用垂直滚动条的Value属性来获取当前滚动条的位置。
根据这个值,可以计算出内容区域需要显示的部分,并相应地更新容器控件的内容。
使用VB6的垂直滚动条可以让用户更方便地浏览大量内容,提高用户界面的易用性和交互性。
通过正确地设置滚动条的属性和编写相应的事件处理程序,可以实现灵活而高效的滚动体验。
VB6的垂直滚动条用法包括添加容器控件、添加垂直滚动条控件、设置滚动条的属性、编写滚动事件处理程序等步骤。
正确使用垂直滚动条可以提升用户界面的交互性和易用性,让用户更方便地浏览内容。
C#ProgressBar的简单使⽤ProgressBar控件(进度条)⽤于在win窗体中显⽰进度,由于它的值会不断更新,为了不让界⾯假死,⼀般都是采⽤多线程的⽅式对进度条进⾏管理。
有关ProgressBar的理论基础跟详细知识我在这⾥不多说,都可以查阅参考。
这篇随笔我就是简单演⽰⼀下对ProgressBar控件的简单使⽤。
先展⽰⼀下窗⼝界⾯:左上⾓是两个ProgressBar,右上⾓按钮负责控制ProgressBar进度的开启。
右下⾓的四个按钮看起来很熟悉是吧,因为这是在的基础上继续往后做的。
⼀、⾸先定义⼀个控制ProgressBar进度的委托⽅法,为什么要⽤委托呢?因为ProgressBar控件是由主线程创建的,⽽对ProgressBar的操作是放在⼀个⼦线程中的,这在后⾯的跨线程操作控件中需要⽤到委托⽅法。
代码如下:1private delegate void DelSetPro(int pro, ProgressBar proBar);//设置进度条进度的委托⽅法⼆、定义⼀个共通的⽅法,⽤于设置进度条的进度,代码如下:1///<summary>2///设置ProgressBar的进度。
3///</summary>4///<param name="pro"></param>5///<param name="proBar"></param>6private void SetProgressMessage(int pro, ProgressBar proBar)7 {8//如果当前调⽤⽅不是创建控件的⼀⽅,则需要使⽤this.Invoke()9//在这⾥,ProgressBar控件是由主线程创建的,所以⼦线程要对该控件进⾏操作10//必须执⾏this.InvokeRequired进⾏判断。
ProgressBar进度条和ProgressDialog进度框的展⽰DEMO 在做⼿机开发时,经常碰到⼀些⽐较耗时的操作,这个时候进度条就开始派上⽤场了。
这个demo展⽰了ProgressBar进度条和ProgressDialog进度框。
⼀、ProgressDialog进度框,效果如图所⽰:代码如下:1//进度对话框按钮监听2class ProssButtonListener implements OnClickListener {3 @Override4public void onClick(View v) {5 myDialog = ProgressDialog.show(ProgressbarDemo.this, "进度条标题",6 "进度条内容", true);78new Thread() {9public void run() {10try {11/* 在这⾥写上要背景运⾏的程序⽚段 */12/* 为了明显看见效果,以暂停3秒作为⽰范 */13 sleep(3000);14 } catch (Exception e) {15 e.printStackTrace();16 } finally {17// 卸载所创建的myDialog对象。
18 myDialog.dismiss();19 }20 }21 }.start(); /* 开始运⾏运⾏线程 */22 }23 }⼆、进度条对话框,这⾥⽤两种情况来动态显⽰进度条刻度1、handle⽅法效果图如下:代码如下:1//进度条handle按钮监听2class ProssBarHandleButtonListener implements OnClickListener {3 @Override4public void onClick(View v) {5 progressBarHandle.setVisibility(View.VISIBLE);6 myProssBarhandleText.setVisibility(View.VISIBLE);7 progressBarHandle.setMax(1000);8new Thread() {9public void run() {10for(int i=0;i<=1000;){11try {12/* 在这⾥写上运⾏的进度条 */13 Message msg = new Message();14 msg.what = 1;15 msg.getData().putInt("size", i);16 handler.sendMessage(msg);//handle发送消息17/* 为了明显看见效果,以暂停1秒作为⽰范 */18 sleep(100);19 i+=10;20 } catch (Exception e) {21 handler.obtainMessage(-1).sendToTarget();22 e.printStackTrace();23 }24 }25 }26 }.start(); /* 开始运⾏运⾏线程 */27 }28 }2930//handle接收消息31private Handler handler = new Handler(){3233 @Override34public void handleMessage(Message msg) {35switch (msg.what) {36case 1:37 progressBarHandle.setProgress(msg.getData().getInt("size"));38float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax();39int result = (int)(num*100);40 System.out.println("progressBarHandle.getProgress()======="+progressBarHandle.getProgress());41 myProssBarhandleText.setText(result+ "%");42if(progressBarHandle.getProgress()==progressBarHandle.getMax()){43 Toast.makeText(ProgressbarDemo.this, "下载成功", 1).show();44 progressBarHandle.setVisibility(View.GONE);45 myProssBarhandleText.setVisibility(View.GONE);46 }47break;4849case -1:50 Toast.makeText(ProgressbarDemo.this,"下载失败", 1).show();51break;52 }53 }54 };2、使⽤AsyncTask⽅法,效果图与handle效果⼀样具体代码如下:1//进度条synctask按钮监听2class ProssBarSyncButtonListener implements OnClickListener {3 @Override4public void onClick(View v) {5new AsyncLoader().execute((Void)null);6 }7 }8910//AsyncTask 任务执⾏11class AsyncLoader extends AsyncTask<Void, Integer, Integer> {12 @Override13// 在doInBackground⽅法执⾏前执⾏14protected void onPreExecute(){15 progressBarHandle.setVisibility(View.VISIBLE);16 myProssBarhandleText.setVisibility(View.VISIBLE);17 progressBarHandle.setMax(100000);18 }1920// 做具体的耗时操作21protected Integer doInBackground(Void... params) {22//这⾥以1万的进度条刻度来显⽰23int totalSize = 100000;24for (int i = 0; i < 100000; ) {25 publishProgress(i); //通过推送消息传递数据给onProgressUpdate⽅法执⾏26 i+=10;27 }28return totalSize;29 }30// 在doInBackground⽅法执⾏过程中执⾏31protected void onProgressUpdate(Integer... progress) {32 progressBarHandle.setProgress(progress[0]);33float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax(); 34int result = (int)(num*100);35 myProssBarhandleText.setText(result+ "%");36 }3738// 在doInBackground⽅法结束后执⾏39protected void onPostExecute(Integer result) {40 Toast.makeText(ProgressbarDemo.this, "下载成功,下载了"+result, 1).show();41 myProssBarhandleText.setVisibility(View.GONE);42 progressBarHandle.setVisibility(View.GONE);43 }44 }DEMO 代码下载地址:。
ProgressBar-进度条
ProgressBar控件通过从左到右用一些方块填充矩形来表示一个较长操作的进度。
语法
ProgressBar
说明
ProgressBar控件监视操作完成的进度。
ProgressBar控件有一个行程和一个当前位置。
行程代表该操作的整个持续时间。
当前位置则代表应用程序在完成该操作过程时的进度。
Max 和Min 属性设置了行程的界限。
Value 属性则指明了在行程范围内的当前位置。
由于使用方块来填充控件,因此所填充的数量只能是接近于Value 属性的当前设置值。
基于控件的大小,Value 属性决定何时显示下一个方块。
ProgressBar控件的Height 属性和Width 属性决定所填充控件的方块的数量和大小。
方块数量越多,控件就越能精确地描述操作进度。
为了增加显示方块的数量,需要减少控件的Height 或者增加其Width。
BorderStyle属性的设置值同样影响方块的数量和大小。
为了适应边框要求,方块的大小要更小一点。
可以用ProgressBar控件的Align 属性把它自动定位在窗体的顶部或底部。
提示缩小方块的大小直到其所表示的进度增加量与实际进度值达到最接近的匹配程度,应使ProgressBar控件的宽度至少是其长度的13 倍。
下面的示例说明如何用一个名为ProgressBar1 的ProgressBar控件,来表示对一个大数组冗长的操作进度。
把一个CommandButton控件和一个ProgressBar控件放在同一窗体里。
示例代码中的Align 属性把ProgressBar控件定位在沿着窗体的底部。
该ProgressBar不显示任何文本。
Private Sub Command1_Click()
Dim Counter As Integer
Dim Workarea(250) As String
ProgressBar1.Min = LBound(Workarea)
ProgressBar1.Max = UBound(Workarea)
ProgressBar1.Visible = True
'设置进度的值为Min。
ProgressBar1.Value = ProgressBar1.Min
'在整个数组中循环。
For Counter = LBound(Workarea) To UBound(Workarea)
'设置数组中每项的初始值。
Workarea(Counter) = "Initial value" & Counter
ProgressBar1.Value = Counter
Next Counter
ProgressBar1.Visible = False
ProgressBar1.Value = ProgressBar1.Min
End Sub
Private Sub Form_Load()
ProgressBar1.Align = vbAlignBottom
ProgressBar1.Visible = False
Command1.Caption = "Initialize array"
End Sub
在text上随便输入一个数字窗体上安插一个进度条控件当点击command1以后text里面的数字开始每一秒减一进度条开始增加,当数字为0 进度条为百分之100.
安插一个command2控件当程序禁止的时候手动点击command2 数字减一进度条移动,当点击到数字为0 进度条为百分之100.
添加控件textbox一个,progressbar一个,按钮2个,timer一个,复制以下代码即可:
Option Explicit
Dim n As Integer
Private Sub Command1_Click()
Timer1.Enabled = True
Timer1.Interval = 1000
End Sub
Private Sub Command2_Click()
If Val(Text1) <= 0 Then Exit Sub
Text1 = Val(Text1) - 1
ProgressBar1.Value = n - Val(Text1)
End Sub
Private Sub Text1_LostFocus()
n = Val(Text1)
If n <= 0 Then MsgBox "text1不能为0": Exit Sub
ProgressBar1.Max = Val(Text1)
End Sub
Private Sub Timer1_Timer()
Text1.Text = Val(Text1) - 1
ProgressBar1.Value = n - Val(Text1)
If Val(Text1) <= 0 Then Timer1.Enabled = False
End Sub
Val 函数
返回包含于字符串内的数字,字符串中是一个适当类型的数值。
语法
Val(string)
必要的string 参数可以是任何有效的字符串表达式.
说明
Val 函数,在它不能识别为数字的第一个字符上,停止读入字符串。
那些被认为是数值的一部分的符号和字符,例如美圆号与逗号,都不能被识别。
但是函数可以识别进位制符号&O (八进制)和&H(十六进制)。
空白、制表符和换行符都从参数中被去掉。
下面的返回值为1615198:
Val(" 1615 198th Street N.E.")
在下面的代码中,Val 为所示的十六进制数值返回十进制数值-1。
Val("&HFFFF")
注意Val 函数只会将句点(.)当成一个可用的小数点分隔符。
当使用不同的小数点分隔符时,如在国际版应用程序中,代之以CDbl来把字符串转换为数字。
'=====================================
Val 函数示例
本示例使用Val 函数返回字符串中所含的数值。
Dim MyValue
MyValue = Val("2457") ' 返回2457。
MyValue = Val(" 2 45 7") ' 返回2457。
MyValue = Val("24 and 57") ' 返回24。