ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:464.94KB ,
资源ID:4570444      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4570444.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第二章Visual Basic 60中的基本概念与操作.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第二章Visual Basic 60中的基本概念与操作.docx

1、第二章Visual Basic 60中的基本概念与操作第二章Visual Basic 6.0中的基本概念与操作2.1.1 属性属性是指对象的各种性质,如对象的位置、颜色、大小等。不同的对象所具有的属性有的是相同的,有的是不同的口例如,收音机有个音量属性,水杯就没有音量属性,但它有个容量属性,而收音机却没有。此外,收音机和水杯都有个颜色属性。 1.设置属性的值。 改变对象的属性就可改变对象的特性。例如,改变收音机音量属性的值就可调节收音机音量的大小。可以通过两种方法来设置对象的属性: 在设计阶段,通过【属性】窗口设置对象属性的值。对不同的属性,设置方式有所差异,在第4章中,将结合窗体属性的设置来

2、详细介绍。 在运行阶段,在程序中由代码设置对象属性的值。其一般形式为;对象名。属性名一属性值 例如,假定收音机的音量值可设置在010之间。如果能够通过Visual Basic控制收音机,则可在程序代码中使用下列语句将收音机的音量调节到中等音量: Radio.Volume=5 提示:在代码中使用的属性名称与在【属性】窗口中列出的属性名称是相同的,但Font属性例外。在【属性】窗口中,通过Font属性可以同时设置对象上所显示文本的字体、字号以及下划线等属性。在代码中,字体、字号等属性分别对应一个属性名。在本节的最后将详细介绍。 上述两种属性设置方法的特点是: 在设计阶段,通过【属性】窗口设置对象的

3、属性值,不需要编写任何代码,且对于对象的一些外观属性,在【属性】窗口设置了相应的位后,在【窗体设计】窗口中即可预览到设置的效果口【属性】窗口主要用来设置对象属性的初始值和一些在整个程序运行过程中不改变的属性。 在运行阶段,在程序中由代码设置对象属性的值,可以在程序运行时随时改变对象属性的值。例如,在程序运行时,用户调整收音机音量的大小,其实就是通过在代码中重新设置音量属性的值来实现的。此外,有的属性在设计时是不可用的,因此,这些属性只有通过代码在运行时设置。 在VB中,每个对象的各个属性都有一个默认值,在实际应用中,大多数属性都采用系统提供的默认值。因此。用户一般不必一一设置对象各属性的值,只

4、有在默认值不满足要求时,才需要用户指定所需的值。2.读取属性的值 在代码中不仅能设置属性的值,还能读取属性的值。在运行时可以设置并可获得其值的属性叫做读写属性;在运行时只能读取的属性叫做只读属性。 有时,要在执行某操作之前得知对象的状态,这时就要读取属性值。例如,想要将收音机的音量增大一点,在执行该操作前就需要得到当前音量的大小,以确定将音量属性的值设置为多少。 在大多数情况下可以用以下语法读取属性的值: 变量=对象。属性。 例如,下列语句就是将当前音量的值赋给变量Col: Col=Radio.Volume. 属性值也可以作为较复杂的表达式的一部分,而不必将属性值赋予变量。下面的代码是将收音机

5、的音量在原来的基础上调大一点: Radio.Volume=Radio.Volume+1.3.常用的属性。 在使用VB创建一个应用程序时,很重要的一步就是设置窗体以及控件等对象的属性,表2.1中列出了几个常用的属性,这些属性也是大多数对象所共有的。2.1.2 方法除了属性以外,对象还有方法,属性是指对象的特性,而方法则是对象要执行的动作。不同的对象所具有的方法也是不同的。以拨号打电话为例,可以说电话(Phone)对象有一个拨号(Dial)方法,拨一个7位电话号码的语法就是: Phone.Dial 5551111. 在代码中使用方法时如何书写语句,取决于该方法要求多少参数,以及是否返同一个值,如果

6、方法不要求参数,则用以下语法编写代码: 对象名。方法名。 例如,窗体对象有一个Cls,方法,该方法的功能是清除窗体上显示的文本或图形等内容。调用该方法的语句如下: 窗体名。Cls. 有些方法还带有参数,参数是对方法所执行动作的进一步描述。在调用这类方法时要在方法名的后面写上参数。如电话的拨号方法就有一个参数,该参数用来说明拨什么号。如果方法有多个参数,就用逗号将它们分开。 例如,窗体对象的Circle方法就有多个参数,该方法的功能是在窗体上画圆。 使用该方法需要指定圆的位置、半径和颜色等参数: Forml.Circle (1600, 1800), 1200.vbBlue有的方法还有返回值,如果

7、要保存方法的返回值,就必须把参数用括号括起来:例如,剪贴板的GetData方法是返回一张图片: Picture=Clipboard.GetData (vbCfBitmap). 如果没有返回值,则参数不出现在括号中。 使用对象的方法与属性的语法格式有些类似,属性和方法与它们的拥有者一一对象都是以一个点来连结。在实际操作中,可以通过词性来判断是属性还是方法。属性名一般是名词(如Appearance, Caption, Width等),方法名一般是动词。 另外,在程序代码中,对象名。方法名可以是一个完整的语句,但对象名。属性名不是一个完整的语句。在代码中,涉及到对象属性的语句总是一个赋值语句,要么是

8、给对象的属性赋值,要么是将对象的属性值返回给一个变量。2.1.3 事件事件是指由系统事先设定的、能被对象识别和响应的动作。例如,在应用程序中单击一个按钮,则程序会执行相应的操作。在VB中,就称按钮响应了鼠标的单击事件。 传统的高级语言程序由一个主程序和若千个过程和函数组成,程序运行时总是从主程序开始,由主程序调用各过程和函数。程序设计者在编写程序时必须将整个程序的执行顺序十分精确地设计好。程序运行后,将按指定的过程执行,用户不能改变程序的执行顺序。因此,这种语言称为面向过程的语言。 VB程序没有传统意义上的主程序,在VB中,子程序称为过程。VB中有两类过程:事件过程和通用过程。程序的运行并不要

9、求从主程序开始,每个事件过程也不是由所谓的主程序来调用,而是由相应的事件触发执行,通用过程则是由各事件过程来调用。例如,单击鼠标按钮,系统将跟踪指针所指的对象,如果对象是一个按钮控件,则用户的单击动作就触发了按钮的Click事件,该事件过程中的代码就会被执行。执行结束后,又把控制权交给系统,等待下一个事件发生。各事件的发生顺序完全由用户的操作决定,这样就使编程序的工作变得比较简单了,人们不再需要考虑程序的执行顺序,只需针对对象的事件编写出相应的事件过程即可。我们称这些应用程序为事件驱动应用程序。 在事件驱动应用程序中,由对象来识别事件。事件可以由一个用户动作产生,如单击鼠标或按下一个键:也可以

10、由程序代码或系统产生,如计时器。使用、由创建应用程序,其实就是为每个对象,如窗体、控件、菜单等编写事件代码。因此,VB是面向对象的编程语言。 触发对象事件的最常见的方式是通过鼠标或键盘的操作。我们将通过鼠标触发的事件称为鼠标事件,将通过键盘触发的事件称为键盘事件。1.鼠标事件。 现在,多数应用程序是通过鼠标来操作的,如单击按钮、选择菜单等。鼠标的操作有单击、双击、移动等几种,它们分别能触发一个事件,表2.2中列出了鼠标的操作及其所触发的事件。从表中可以看出,鼠标的单击操作实际上会触发3个事件。当按下左键后,触发MouseDown事件,释放左键后,触发MouseUp事件,同时又触发了Click事

11、件。 2.链盘事件。 有些用户则更习惯使用键盘来操作,表2.3中列出了鼠标的操作及其所触发的事件。同样,键盘的按键操作实际上也会触发3个事件。当按下某键后,触发KeyDown事件,键被弹起后,触发KeyUp事件,同时又触发了KeyPress事件。 每一种对象所能识别的事件是不同的。例如,窗体能响应Click(单击)和DBClick(双击)事件,而命令按钮能响应Click却不能响应DBClick事件。每-种对象所能响应的事件在设计阶段可以从该对象的【代码】窗口右边过程框中的下拉列表中看出(参见第1章).一个对象通常能响应多个事件,但没有必要编写每一个事件过程(或为每一个事件编写代码).例如,按钮

12、控件可以响应Click,MouseMove(鼠标移动)等事件,但通常只编写Click事件过程。因此,在多数应用程序中,单击按钮,则程序会做出相应的操作,而在按钮上移动鼠标,则程序不会有任何反应。 VB的事件过程的一般形式为: Private:对象名_事件名( ) End sub 其中Private Sub对象名_事件名()是事件过程的开头,End Sub是事件过程的结尾。对象名就是用户在【属性】窗口中为对象的名称属性设置的值,事件名则是该对象所能响应的事件的名称。2.2.1 在窗体中布置控件设计应用程序界面的最重要的一项内容就是在窗体中布置控件。向窗体中添加控件的方法很简单,首先,在工具箱中一

13、单击所要添加的控件,然后,移动鼠标到窗体上,光标的形状变为十字形,在要放置控件的位置处按下鼠标左键并拖动鼠标,就出现一个短形象区域,拖动到一定大小后释放鼠标,则所选控件就被放置在窗体上指定的位置。鼠标拖动出的方框的大小决定了控件的大小。如图2.1所示是在窗体中添加了两个文本框和两个按钮控件。 还可以随时改变放置在窗体中的控件的大小和位置。单击窗体中的某控件,则在控件的周围会出现8个小方块,如图2.2所示,这表明该对象被选定。将鼠标指针移动到某个小方块上,则指针形状变成双向箭头状,拖动鼠标,则会出现一个黑色的方框随鼠标一起移动,拖动到合适的大小后释放鼠标,控件的大小就被改变了。将鼠标移动到控件上

14、,拖动鼠标,就出现一个和控件一样大小的黑色方框随着鼠标一起移动,到合适的位置后释放鼠标,控件就被移动到了新的位置。双击工具箱中的控件,也可以将它添加到窗体中。并且控件总是以特定的大小添加到窗体的中心位置。 窗体中的网格是为方便布置控件而提供的参考线,在程序运行时窗体上并不显示这些网格。用户也可以自行设置有关网格的显示形状。 单击【工具】菜单,执行【选项】命令,弹出【选项】对话框,单击该对话框中的【通用】选项卡,弹出如图2.3所示的对话框。该对话框的【窗体网格设置】设置区用来设置有关网格的各种选项。不选中【显示网格】复选框,则在设计时窗体中将不出现网格。【宽度】与【高度】文本框用来设置网格的大小

15、。在默认情况下,控件总是与网格对齐的,如果不选中【对齐控件到网格】复选框,则网格将不再限制控件的大小与位置。为了创建出友好的用户界面,往往要求各控件的大小完全相等、各控件严格对齐或等间距分布。用户除了可以借助网格通过手动调整来达到上述要求之外,还可以使用【格式】菜单中提供的各种命令来实现。 在使用【格式】菜单中命令时要事先选定要执行操作的控件。按住Shift键,然后依次单击要选定的控件,则这些控件就会被同时选定。在所有被选定的控件中,只有一个控件周围的小方块是实心的,其他都是空心的,如图2.4所示。在使用【格式】菜单中的命令操作这些控件时,将以周围是实心方块的控件为基准。例如,执行【格式】菜单

16、中的统一尺寸操作,则所有选中控件的大小都将与周围是实心方块的控件的大小相同。在控件的大小以及位置调整完成后,为了避免遭到以后操作的破坏,可以通过执行【格式】菜单中的【锁定控件】命令将所有的控件锁定。 选定控件后,按Delete键即可将所选的控件删除。也可以执行【编辑】菜单中的【剪切】与【删除】命令来删除控件。2.2.2 设置对象属性的方式单击工具栏中的【属性】按钮打开【属性】窗口,在属性窗口中显示的是当前选中对象的属性。要使属性窗口中显示某一对象(窗体或控件)的属性,只需选中该对象就可以了。 在通过【属性】窗口设置窗体或控件的属性时,设置方式大致可分为如下3种情况: 直接输入属性的值。有些属性

17、,当使用鼠标单击它的值时,则插入点就出现在文本框中,即可在其中输入属性的值。按回车键或选择其他属性,表明对新属性值的输入结束与确认。如Caption, Height. Width等属性就属于这种类型。在前面我们曾以这种方式设置过Caption属性的值。 在下拉列表中选择属性的值。有些属性,当使用鼠标单击它时,则在右边出现一个下三角形按钮,单击该按钮则出现一个包含可选属性值的下拉列表,用户可从该列表中选择所要的值。 在对话框中选择属性的值。还有一些属性,当使用鼠标单击它时,则在右边出现一个省略号按钮,单击该按钮,会出现一个对话框,如图2.6所示。用户可从该对话框中选择属性的值。如Picture、

18、Font属性就属于这种类型。2.2.3 编写对象的事件过程将控件放置在窗体上,并且在【属性】窗口中设置了它们的属性后,单击【运行】按钮,就会出现这个设计好的用户界面。用户可以对其执行一些操作,如在文本框中输入内容、单击按钮等。但这个用户界面仅是一个外壳,它不会响应用户的任何操作。 用户的操作,对对象(窗体或控件)来讲就是触发它的某个事件。如用户单击一个按钮,就激发了这个按钮的Click事件。因此,要使对象能够响应用户的操作,就必须编写控件的事件过程。 编写对象事件过程的流程如下: (1)打开对象所在窗体的【代码】窗口。 (2)选择对象的事件。 (3)为事件添加代码。 双击窗体或窗体上的控件打开

19、【代码】窗口后,窗口的代码编辑区中会自动出现与用户双击对象相对应的某一事件过程的框架。例如,双击窗体,则打开的代码窗口如图2.7所示,其中显示有窗体对象的Load(装载)事件过程。再次双击窗体上的其他控件,则窗口的代码编辑区又会出现双击对象的某一事件过程的框架。图2.8所示的是在双击窗体后,又双击窗体中按钮控件后的【代码】窗口。 如果【代码】窗口中所出现事件过程不是用户所要编写的事件过程,用户还可以在【代码】窗口中自行选择所要编写的事件过程,操作步骤如下: (1)单击【代码】窗口的对象框,在对象列表中选择要编写事件过程的对象。 (2)单击【代码】窗口的事件框,在事件列表中为对象选择所要响应的事

20、件。 选择完毕后,在【代码】窗口的编辑区中就出现了一个事件过程。如图2.9所示的【代码】窗口是选择了Form对象和Click事件后的情形;用户只需向该事件过程中添加代码即可,省去了输入过程框架的麻烦。 对于一些出现在代码窗口中但不使用的事件过程,建议用用户将其删除,避免由于它们的存在而使程序代码显得杂乱。2.3 焦点概述焦点是对象接收用户鼠标或键盘操作的能力。当对象具有焦点时,才可接收用户的操作。例如,在有几个文本框的窗体中,只有具有焦点的文本框才能接受用户的输入。 下列方法可以将焦点赋给对象: 运行时选择对象。 运行时用快捷键选择对象。 在代码中使用SetFocus方法。 焦点只会出现在活动

21、窗口中,并且,在活动窗口中每一时刻只能有一个对象具有焦点。有些对象,它是否具有焦点是可以看出来的。例如,当按钮具有焦点时,按钮标题周围的边框将突出显示,如图2.10所示。当文本框具有焦点时,文本框中将显示闪动的插入点。 并非所有的对象都能接受焦点。例如,标签、框架、定时器等控件就不能接受焦点。对于可以接受焦点的对象,只有当对象的Enabled和Visible属性为True时,它才能接收焦点。Enabled属性允许对象响应由用户产生的事件,如键盘和鼠标事件。Visible属性决定了对象在屏幕上是否可见。对于窗体来讲,只有窗体中不包含任何可接收焦点的控件,它才能接收焦点。当对象得到或失去焦点时,会

22、产生GotFocus或LostFocus事件。窗体和多数控件能响应这些事件。GotFocus事件在对象得到焦点时发生;LostFocus事件在对象失去焦点时发生。 使用鼠标来使对象具有焦点有时很不方便。例如,若窗体中有多个文本框,在输入数据时,如果每次总是使用鼠标来切换文本框的焦点,是一件很烦人的事。人们通常习惯使用Tab键来使对象按指定的顺序获得焦点,这就是所谓的Tab键顺序。 在使用VB创建程序时,可以使用Tablndex和TabStop两个属性来指定对象的Tab键顺序。通常情况下,Tab键顺序与窗体所安放对象的顺序相一致。 1. TabIndex属性。 该属性用来设置对象的Tab键顺序。

23、在默认情况下,第一个被安放的控件,其TabIndex取值为0;第二个被安放的控件,其TabIndex取值为1,依次类推。在程序运行时,焦点默认位于TabIndex取值最小的控件上。当按Tab时,焦点按对象TabIndex属性的值顺序切换。 如果需要改变某个控件的TabIndex取值或在窗体上插入、删除控件时,VB会自动地将其他控件的Tab键顺序重新编号,以反映变化了的情况。 2.TabStop属性。 该属性的作用是决定用户是否可以使用Tab键来使对象具有焦点。当一个对象的TabStop属性取值为Ttue(默认)时,使用Tab键可以使该对象具有焦点:若它取值为False,则Tab操作时将跳过该对

24、象,即不能使用Tab键使该对象具有焦点。 实例2.1 Tab键顺序 在窗体中放置4个文本框控件和两个按钮控件,如图2.11所示。控件上所显示的标号是控件的放置顺序。例如,显示有1的文本框是第一个放置到窗体中的,显示有6的按钮是最后一个放置到窗体中的。运行该程序,可见,默认时文本框1具有焦点,按Tab键,则焦点按控件的放置顺序切换,即l23456. 停止程序的运行,返回到设计界面中,设置各控件的TabIndex属性如表2.4所示。 再次运行程序,可见,默认时按钮5具有焦点,按Tab键,则焦点的切换顺序为561324.如图2.12所示。 如果将文本框2的TabStop属性设置为False,则按Ta

25、b键时,焦点不会在文本框2上停留,焦点的切换顺序为56134。2.4 第一个VB应用程序在前面己经详细介绍了Visual Basic 6.0的集成开发环境以及一些基本的概念,在本节中,我们以一个实例来进一步理解对象的有关概念,尽管我们还没有学习VB语言的语法规则,相信读者通过创建这一个简单的程序,会对使用VB编程有一个总的认识,同时也会领略到VB的简单易用。 这里创建的是这样一个程序,该程序只有一个窗体,在窗体中有一个文本框和一个按钮,在程序运行后,文本框中显示第一次接触VB几个字,如图2.13所示。单击按钮,则文本框中的内容变成VB原来如此简单易学,如图2.14所示。 在VB中创建程序首先是

26、设计程序的用户界面,然后是编写事件过程。该应用程序的用户界面很简单,只有一个文本框和一个按钮,可以将工具箱中的相应控件直接添加到窗体上。该程序中只有按钮响应用户的一个操作,即鼠标的单击。因此,只需编写按钮的C1ick事件过程即可。 创建该应用程序的步骤如下: (1)首先,启动Visual Basic 6.0,在【新建工程】对话框中选择创建的工程类型为标准EXE,单击【打开】按钮。则出现一个名称为工程1的设计窗口。在这个窗口中只有一个名称为Forml的窗体。 (2)单击工具箱中的文本框控件,将鼠标移动到窗体Forml,从窗体某位置开始拖动鼠标,绘制出一个大小合适的方框后释放鼠标,则窗体上就出现了

27、一个文本框。 (3)再单击工具箱中的按钮控件,以同样的方法在该窗体上放置一个按钮控件,如图2.15所示。 (4)单击工具栏中的【属性窗口】按钮打开属性】窗口。 (5)在窗体上单击文本框控件,则文本框的四周出现了一些小蓝点,这表明文本框已被选中。此时,在【属性】窗口中所列出的就是该文本框的属性,如图2.16所示。(6)文本框的Text属性决定文本框中显示的内容,在默认情况下,Text属性的值为Textl.单击Textl所在的区域,则在该区域中就会出现一个插入点,这时,就可以重新编辑其中的内容了。在其中输入第一次接触VB几个字。在输入的同时,窗体上文本框中的内容也随着改变。 (7)同理,在窗体中选

28、中按钮控件,在【属性】窗口中设置Caption属性的值为欢 迎. (8)再选中窗体,在【属性】窗口中设置Caption属性的值为第一个VB程序.自此,程序的用户界面设计完毕,如图2.17所示。可见,通过设置对象的属性,改变了对象的外观。 (9)双击按钮控件,打开【代码】窗口,在代码窗口中自动出现了按钮Click事件过程的框架,如图2.18所示,用户只需为该过程添加代码即可。 (10)将下列代码添加到Command1_Click事件过程中 Private Sub Commandl_Click() Text1.Text=VB原来如此简单易学 End Sub 在Command1_Click事件过程中

29、只有一行语句,该语句的含义是将文本框的Text属性的值设置为VB原来如此简单易学.在【属性】窗口中,我们曾将文本框的Text属性的值设置为第一次接触VB,在程序启动后,文本框中将显示第一次接触VB,而不会显示VB原来如此简单易学.只有当用户单击按钮后,Commandl_Click事件过程被触发,过程中的语句才会被执行,执行的结果是文本框中的内容被替换为VB原来如此简单易学. 自此,一个简单的应用程序就创建完毕了。单击工具栏中的【运行】按钮来运行该程序,则出现如图2.13所示的窗体,单击【欢迎】按钮,则窗体如图2.14所示。上述小程序是在VB环境中运行的,为使程序能脱离VB环境而独立运行,还需要

30、将它编译成可执行的EXE文件。VB中提供了专门用于生成可执行文件的命令,打开【文件】菜单,执行【生成EXE】命令,则弹出如图2.19所示的【生成工程】对话框,选择要保存文件的位置,输入可执行文件的文件名,然后单击【确定】按钮即可生成程序的可执行文件。 通过我的电脑或资源管理器在硬盘中找到生成了的可执行文件,双击该文件,即可启动应用程序了,而不再需要VB环境的支持。 从上述的一个简单应用程序的创建过程中,可以得出使用V$创建应用程序的基本步骤如下: 设计用户界面。 设置对象属性。 编写代码。 保存程序。 调试并运行程序。 发布应用程序。2.5 工程的管理使用Visual Basic 6.0可以创建标准的Windows应用程序、ActveX与Active文档等,在设计阶段,VB通称它们为一个工程。上面所创建的简单应用程序,就是一个工程,该工程只包含一个窗体。但对于一些较复杂的应用程序,工程中一般都包括一个或若干个窗体、模块等文件。这就涉及到工程与文件的新建、保存、移除等多种操作。这些操作贯穿到创建应用程序的整个过程。2.5.1 工程资源管理器工程资源管理器是用来管理工程的,它的功能就像Windows中的资源管理器一样口执行【视图】菜单中【工程资源管理器】命令或单击工具栏中的【工程资源管理器】按钮均可打开工程资源管理器。 在工程资源管理器中,列

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2