不懂VB, 没有帮助,敬请解答:
一窗体中的过程:
procedure  progrshow(Optional position As Variant);
Begin
    Screen.MousePointer = 11
    #If progress = 1 Then
        If IsMissing(position) Then position = 0
        frmeuroprot.Tag = position
        frmprogress.Show vbModeless
        frmprogress.ZOrder
        frmprogress.Refresh
    #End If
End;问题:
1.Optional是什么作用?
2.#if和#end与一般的if和end的区别
3.frmprogress是个窗体, frmprogress.show vbModeless是非模态显示吗?
  最好详细解释一下show及其参数.另外: 定义 dim frmList() As New TMyForm 后的使用方法.(TMyForm为窗体类名).谢谢!

解决方案 »

  1.   

    1.Optional 为关键字,表示该参数为可选参数
    2.条件编译,如果条件满足,则编译条件块内代码
    3.vbModal 模式窗体,如果显示非模式窗体,则可以省略dim frmList() as New TMyForm 后,可以直接用:frmList.show 来显示
      

  2.   

    1.加上 Optional 关键字表示该参数可以省略.2.
    条件编译已选择的 Visual Basic 代码块。语法#If expression Then
    statements
    [#ElseIf expression-n Then
    [elseifstatements]]
    [#Else
    [elsestatements]]
    #End If#If...Then...#Else 指令的语法具有以下几个部分:部分 描述
    expression 必要。包含一个或多个条件编译常数、文字与运算符的任何表达式,其值为 True 或 False。
    statements 必要。Visual Basic 程序行或编译指令,如果关联的表达式为 True,则运行它们。
    expression-n 可选。由一或多个条件编译常数、文字和运算符组成的任何一个表达式,其值为 True 或 False。
    elseifstatements 可选。一个或多个程序行或编译命令,如果 expression-n 为 True,则运行它们。
    elsestatements 可选。一个或多个程序行或编译命令,如果以前的expression 或 expression-n 中没有一个为 True,则运行它们。
    说明#If...Then...#Else 指令的作用与 If...Then...Else 语句相同,其差异在于 #If、#Else、#ElseIf,及 #End If 指令没有单独成行的形式,也就是说,在指令所在的那一行,不能有其他代码出现。条件编译通常用来编译不同平台上的同一个程序。也可以用来避免调试程序代码出现在可执行程序中。条件编译时被排除的程序代码在最后的可执行文件中被完全略去,所以不会对程序的大小或功能有任何影响。无论结果如何,都要计算所有表达式。所以,在表达式中用到的所有常数都必须加以定义— 任何未定义的常数都会被当作 Empty 来计算取值。注意   Option Compare 语句不会影响 #If 及 #ElseIf 语句中的表达式。条件编译指令中的表达式总是用 Option Compare Text 计算值。3.是非模式显示, 第一个参参数表示是以模式还是非模式显示窗口 ;vbModal 表示模式
    第二个参数是该窗口的父窗口,表示显示的窗口是参数窗口的子窗口.
      

  3.   

    还有一个问题:是不是VB的窗体都不用使用Create或者new来显式创建, 只要定义了这个窗体类,比如窗体类名MyForm, 就可以使用MyForm.Show来把它显示出来, 而不需要考虑其它的?
    谢谢! 有分!
      

  4.   

    用New 会创建一个新的窗体实例,一般情况下,只要你在工程中添加了一个窗体,就可以在任何地方用 MyForm.Show 来显示