版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1添加外部控件以添加“日历”控件为例,在菜单栏上选择“工程→部件…”选项,在弹出的“部件”对话框中选择“控件”选项卡,拉动滚动条,选择“Microsoft日历控件11.0”选项,如图4-1所示,单击“确定”按钮,日历控件将添加到“工具箱”中。在“工具箱”中将看到新添加的控件图标。123
图4-1添加日历控件外部控件的使用方法与一般控件相同。在图4-1的“定位:”位置可以看到,该控件包含在文件MSCAL.OCX中,而选中的项目名是“Microsoft日历控件11.0”,该项目名为中文,容易查找到;如何知道需要的控件包含在哪个项目中?表4-1列出了项目对应包含的外部控件,需要时可以对照查找。表4-1控件项对应的文件名及包含的控件项名文件名包含的控件MicrosoftADODataControl6.0MSADODC.OCXADODataControlMicrosoftCommControl6.0MSCOMM32.OCXMSCommMicrosoftCommonDialogControl6.0COMDLG32.OCXCommonDialogMicrosoftDataRepeaterControl6.0MSDATREP.OCXDataRepeaterMicrosoftDataGridControl6.0MSDATGRD.OCXDataGridMicrosoftFlexGridControl6.0MSFLXGRD.OCXMSFlexGridMicrosoftGridControlGRID32.OCXGridMicrosoftHierarchicalFlexGridControl6.0MSHFLXGD.OCXMSHFlexGridMicrosoftInternetTransferControl6.0MSINET.OCXInternetTransfercontrolMicrosoftMaskedEditControl6.0MSMASK32.OCXMaskedEditMicrosoftMultimediaControl6.0MCI32.OCXMultimediaMCIMicrosoftRichTextBoxControl6.0RICHTX32.OCXRichTextBoxMicrosoftSysInfoControl6.0SYSINFO.OCXSysInfoMicrosoftTabbedDialogControl6.0TABCTL32.OCXMicrosoftTabControlMicrosoftWindowsCommonControls6.0MSCOMCTL.OCXTabStrip,Toolbar,StatusBar,ProgressBar,TreeView,ListView,ImageList,Slider,ImageComboMicrosoftWindowsCommonControls26.0MSCOMCT2.OCXAnimation,UpDown,MonthView,DTPicker,FlatScrollbarMicrosoftWinsockControl6.0MSWINSCK.OCXWinSock4.2进度条控件进度条控件用于指示当前处理任务的进度。要使用进度条控件,需要按照上节的操作步骤,添加部件。添加之后,可以看到“工具箱”中多了一系列外部控件,其中包含进度条控件,如图4-2所示。进度条ProgressBar图4-2进度条控件[例4-1]使用进度条模拟当前处理的任务进度,运行效果如图4-3所示图4-3进度条的使用[分析]进度条与滚动条类似,也具有最大值Max、最小值Min和当前值Value的属性,只要设置了Max和Min属性,则设置Value属性就是设置当前进度条的进度指示位置。[建立工程]新建工程,按默认名称保存工程为“工程1”,窗体名称保存为Form1。界面布局如图4-4所示。Command1Command2ProgressBar1Timer1图4-4界面布局[程序代码]1 '初始化控件状态2 PrivateSubForm_Load()3 ProgressBar1.Max=1004 ProgressBar1.Min=05 ProgressBar1.Value=06 7 Command1.Enabled=True8 Command2.Enabled=False9 10 Timer1.Enabled=False'暂时不可用11 Timer1.Interval=100012 13 EndSub14 15 '开始按钮16 PrivateSubCommand1_Click()17 Command1.Enabled=False18 Command2.Enabled=True19 Timer1.Enabled=True20 EndSub21 22 '结束按钮23 PrivateSubCommand2_Click()24 Command1.Enabled=True25 Command2.Enabled=False26 27 Timer1.Enabled=False28 ProgressBar1.Value=029 EndSub30 31 '显示进度32 PrivateSubTimer1_Timer()33 IfProgressBar1.Value+1<ProgressBar1.MaxThen34 ProgressBar1.Value=ProgressBar1.Value+135 EndIf36 EndSub[代码说明]行3~5:设置进度条的初始值行7~8:“开始”和“结束”按钮的初始状态。行10:Timer控件的Enabled属性默认有效,如果要控制Timer控件的启动,在设置其Interval值之前,需要设置Enabled属性为False,以后可以通过Enabled属性控制Timer控件的启动和停止。行16~20:“启动”按钮的操作逻辑。行23~29:“结束”按钮的操作逻辑,停止定时器,同时恢复进度条初始值。行33:在进度条开始进度(加1)前,需要判断移动(加1)后是否会超过其最大值,否则将出现异常。此外,还可以设置进度条显示滚动样式属性Scrolling,如图4-5所示。图4-5Scrolling属性效果4.3日期选择控件和动画控件4.3.1日期选择控件日期选择控件主要供用户选择日期,避免用户错误输入不符格式的日期数据。(1)主要属性Value属性:日期控件的显示的(选择的)当前日期,可以设置或获取日期值。(2)主要事件Change事件:日期选择发生改变是触发。如果要使用日期选择控件,需要添加部件。添加后,将看到工具箱中多了一组控件,如图4-6所示。[例4-2]检测用户选择的日期。[分析]日期控件主要的目的是不需要用户从键盘输入日期数据,直接在控件中选择日期并获取日期值。[建立工程]新建工程,按默认名称保存工程为“工程1”,窗体名称保存为Form1。双击DTPicker控件,将控件添加到窗体,按图4-7添加两个Label控件。图4-6日期控件DTPicker
图4-7界面布局
[程序代码]1 PrivateSubForm_Load()2 DTPicker1.Value=Date3 Label2.Caption="你选择的日期是:"&DTPicker1.Value4 EndSub5 6 PrivateSubDTPicker1_Change()7 Label2.Caption="你选择的日期是:"&DTPicker1.Value8 EndSub[代码说明]行2:Date为取得当前日期的函数,并初始化DTPicker1的值为当前日期。行3:取得日期控件的值,并显示在Label2控件中。行6~8:当在日期控件改变了选择时,取得改变的日期值并更新显示。[运行结果]在日期控件中单击下拉箭头选择日期时,将看到界面变化如图4-8所示。也可以将光标定位在年、月或日的数字上,通过上下箭头键选择。[总结与提高]还可以通过设置MaxDate和MinDate设置日期控件的日期范围值。如果界面空间足够大,也可以选择月历控件,其界面如图4-8所示意。属性Value可以检测或设置当前日期。4.3.2动画控件动画控件Animation与日期控件DTPicker是同一组的控件,主要用于播放AVI动画,以增强程序的动感效果;或在一个比较耗时的过程中,以动态的过程表示操作正在进行,例如Windows拷贝文件过程。动画控件Animation如图4-10所示。图4-10Animation控件(1)主要属性AutoPlay属性:是否自动播放。如果值为true,则打开avi文件后,将自动进行播放。(2)主要方法:Open:打开AVI文件Play:播放AVI文件Stop:停止播放AVI文件[例4-3]播放当前目录下的Login.Avi文件[分析]要使用Animation控件播放avi动画文件,必须首先打开文件,然后执行播放操作,也可以随时取消播放。[建立工程]新建工程,按默认名称保存工程为“工程1”,窗体名称保存为Form1。界面布局如图4-11所示。图4-11界面布局
图4-12运行结果
[程序代码]PrivateSubForm_Load()Animation1.OpenApp.Path&"\login.avi"EndSubPrivateSubCommand1_Click()Animation1.PlayEndSubPrivateSubCommand2_Click()Animation1.StopEndSub[代码说明]App为VB的内置对象,其属性Path可以取得当前程序运行位置。本例子在程序运行位置必须存在文件"login.avi",否则将出现找不到文件的异常。4.4通用对话框通用对话框控件如图4-13所示。通用对话框控件可以向应用程序提供系统现有的“打开文件”、“保存文件”、“颜色”和“字体”对话框。要使用通用对话框,需要添加部件。该部件只包含一个控件CommonDialog。图4-13通用对话框使用指定的方法,CommonDialog控件能显示表4-2中列出的对话框。表4-2CommonDialog控件能显示的对话框方法所显示的对话框ShowOpen显示“打开”对话框ShowSave显示“另存为”对话框ShowColor显示“颜色”对话框ShowFont显示“字体”对话框ShowPrinter显示“打印”或“打印选项”对话框ShowHelp调用Windows帮助引擎4.4.1打开文件对话框以系统的打开文件对话框为例,说明”打开文件”对话框的使用,”打开文件”对话框主要属性如图4-14所标示。[例4-4]使用通用对话框,将选择的图片文件显示在Picture控件中。[建立工程]新建工程,按默认名称保存工程为“工程1”,窗体名称保存为Form1。按图4-15添加控件并调整布局。[程序代码]PrivateSubCommand1_Click()CommonDialog1.DialogTitle="请选择文件"CommonDialog1.Filter="JPG文件|*.jpg|BMP文件|*.bmp"CommonDialog1.InitDir=App.PathCommonDialog1.ShowOpen
IfCommonDialog1.FileName<>""ThenPicture1.Picture=LoadPicture(CommonDialog1.FileName)EndIfEndSubDialogTitle属性对话框标题InitDir属性初始位置Filter属性选择的文件类型图4-14“打开文件”对话框CommonDialog1Picture1Command1图4-15界面布局[代码说明](1)Filter属性表示“打开文件”对话框中,筛选的文件类型,格式为:说明部分|实际文件扩展名(2)如果多个文件扩展名选择,也必须以|号分隔。如:文本文件(*.txt)|*.txt|所有文件(*.*)|*.*(3)要显示“打开文件”对话框,必须调用ShowOpen方法。(4)如果在对话框中选择了文件,则FileName属性代表选择的文件。如果单击了“取消”按钮,则FileName属性值将是空字符串。此外,“保存文件”对话框的使用与“打开文件”对话框用类似,不再赘述。4.4.2系统颜色对话框系统颜色对话框向用户提供系统的颜色。1.主要属性Color属性:用户在对话框中选的颜色值2.主要方法ShowColor:打开颜色对话框[例4-5]使用颜色对话框,将选择的颜色作为标签控件Label1的背景色。运行效果如图4-16所示。图4-16运行效果[建立工程]新建工程,按默认名称保存工程为“工程1”,窗体名称保存为Form1。添加一个命令按钮控件Command、一个Label控件和一个CommonDialog控件,名称默认。[程序代码]PrivateSubCommand1_Click()CommonDialog1.Color=Label1.BackColorCommonDialog1.ShowColor
IfCommonDialog1.Color<>Label1.BackColorThenLabel1.BackColor=CommonDialog1.ColorEndIfEndSub[代码说明]首先将Label1的背景色设置为对话框的默认颜色值,如果在对话框中选择了其他颜色值,必然和原来的颜色不同;如果在对话框选择了“取消”按钮,由于无法判断取消的动作,因此,通过对话框初始设置的Color属性值判断是否和Label1的背景色一致,从而判断是否用户作出了选择。4.4.3字体对话框字体对话框供用户选择系统已安装的字体,可以同时选择字号、字形和效果(效果指下划线和删除线以及颜色)1.主要属性(1)Flags属性:使用字体对话框前必须设置的属性。可以选择cdlCFEffects或cdlCFBoth值,否则将出现打开对话框错误。对于完整的字体对话框,该属性值为cdlCFEffects或cdlCFBoth。(2)FontName属性:字体名称。(3)FontBold属性:是否粗体。(4)FontItalic属性:是否斜体。(5)Color属性:选择的颜色值。(6)FontUnderline属性:是否加下划线。[例4-6]实现图4-17所示字体选择和改变效果。图4-17“字体”对话框[建立工程]新建工程,按默认名称保存工程为“工程1”,窗体名称保存为Form1。在窗体上添加一个命令按钮Command、一个标签Label和一个通用对话框控件,如图4-18所示。图4-18界面布局[程序代码]PrivateSubCommand1_Click()CommonDialog1.Flags=cdlCFEffectsOrcdlCFBothCommonDialog1.FontName=Label1.Font.NameCommonDialog1.FontBold=Label1.Font.BoldCommonDialog1.FontUnderline=Label1.Font.UnderlineCommonDialog1.Color=Label1.ForeColorCommonDialog1.ShowFontLabel1.Font.Name=CommonDialog1.FontNameLabel1.Font.Bold=CommonDialog1.FontBoldLabel1.Font.Underline=CommonDialog1.FontUnderlineLabel1.ForeColor=CommonDialog1.ColorEndSub[代码说明]使用ShowFont方法前,必须先设置CommonDialog控件的Flags属性为以下三个常数或值之一:cdlCFBoth或&H3,cdlCFPrinterFonts或&H2,,以及cdlCFScreenFonts或&H1。如果不置Flags,将会显示一个信息框,提示“没有安装的字体”,并产生一个运行错误。其他部分代码与前面对话框的代码类似,请读者自己分析。4.5表格控件在外部控件中,有多种类型的数据表格控件可以选择使用。本节介绍常用的MSFlexGrid表格控件的使用。表格控件通常用来显示大量的数据,这些数据一般来自数据文件,如数据库表中的内容。要使用MSFlexGrid表格控件,需要添加部件。其在“工具箱”中的图标为。1.MSFlexGrid控件的主要属性:Rows属性:设置或取得表格的行数;而Row为当前单元格的行的位置。Cols属性:设置或取得表格的列数;而Col为当前单元的列的位置。TextMatrix(i,j)属性:第i行第j列的单元格的文本内容,如TextMatrix(0,0)为第1个单元格的内容。ColWidth(i)属性:第i列的宽度。RowHeight(i)属性:第i行的高度。ColAlignment(i)属性:第i列的单元格对齐方式2.MSFlexGrid控件的主要事件:Click事件:鼠标单击表格时触发。[例4-7]在MSFlexGrid表格控件中显示99乘法表,程序运行效果如图4-19所示。图4-19在MSFlexGrid表格控件中显示99乘法表[建立工程]新建工程,按默认名称保存工程为“工程1”,窗体名称保存为Form1。在窗体上添加MSFlexGrid控件,默认名称为MSFlexGrid1,如图4-20所示。MSFlexGrid1图4-20界面布局[程序代码]1 PrivateSubForm_Load()2 '初始化行数和列数3 MSFlexGrid1.Rows=104 MSFlexGrid1.Cols=105 6 '设置每行的第一个单元格显示的内容和高度7 Fori=1To98 MSFlexGrid1.TextMatrix(i,0)="第"&i&"行"9 MSFlexGrid1.RowHeight(i)=30010 Next11 12 '设置每列的第一个单元格显示的内容和宽度单元格的对齐方式13 Forj=1To914 MSFlexGrid1.TextMatrix(0,j)="第"&j&"列"15 MSFlexGrid1.ColWidth(j)=64016 MSFlexGrid1.ColAlignment(j)=017 Next18 19 '除首行和首列外,每个单元格显示的内容20 Fori=1To921 Forj=1To922 MSFlexGrid1.TextMatrix(i,j)=i&"*"&j&"="&i*j23 Next24 Next25 EndSub26 27 '当窗体尺寸发生变化时,MSFlexGrid1控件跟随变化,并填满整个窗体内部28 PrivateSubForm_Resize()29 MSFlexGrid1.Left=030 MSFlexGrid1.Top=031 MSFlexGrid1.Width=Me.ScaleWidth32 MSFlexGrid1.Height=Me.ScaleHeight33 EndSub[代码说明]行3~4:初始化行数和列数,产生10*10的表格。行7~10:设置第1列的标题及每一行的高度值。高度值根据实际运行时调整。行13~17:设置第1行的单元格内容、每一列的宽度和每一列单元格内容的对齐方式。ColAlignment属性值可以选择0~9范围,见表4-3。表4-3ColAlignment属性值常数值描述flexAlignLeftTop0单元格的内容左、顶部对齐。flexAlignLeftCenter1字符串的缺省对齐方式。单元格的内容左、居中对齐。flexAlignLeftBottom2单元格的内容左、底部对齐。flexAlignCenterTop3单元格的内容居中、顶部对齐。flexAlignCenterCenter4单元格的内容居中、居中对齐。flexAlignCenterBottom5单元格的内容居中、底部对齐。flexAlignRightTop6单元格的内容右、顶部对齐。flexAlignRightCenter7数值的缺省对齐方式。单元格的内容右、居中对齐。flexAlignRightBottom8单元格的内容右、底部对齐。flexAlignGeneral9单元格的内容按一般方式进行对齐。字符串按“左、居中”显示,数字按“右、居中”显示。行20~25:从表格的第2行和第2列开始,显示99乘法表的计算结果。行28~33:当鼠标调整窗体尺寸时,将触发窗体的Resize事件,让MSFlexGrid1的宽度和高度跟随变化,本例填满整个窗体内部。[例4-8]在MSFlexGrid表格控件中显示文字和图片,如图4-21所示。图4-21在MSFlexGrid单元格中显示图片和文本[建立工程]新建工程,按默认名称保存工程为“工程1”,窗体名称保存为Form1。添加两个Image控件Image1和image2,选择合适的图片。单元格中的图片来自这两个控件(也可以使用LoadPicture函数动态加载图片),在运行时不显示该控件。因此,设置其Visible属性为False;添加一个MSFlexGrid控件,如图4-22所示。图4-22界面布局[程序代码]1 PrivateSubForm_Load()2 '初始化行数和列数3 MSFlexGrid1.Rows=34 MSFlexGrid1.Cols=35 6 '可以调整行列宽度和高度8 MSFlexGrid1.AllowUserResizing=flexResizeBoth9 10 '初始化宽度和文本对齐方式11 MSFlexGrid1.ColWidth(0)=20012 MSFlexGrid1.ColWidth(1)=130013 MSFlexGrid1.ColWidth(2)=130014 MSFlexGrid1.ColAlignment(0)=flexAlignCenterCenter15 MSFlexGrid1.ColAlignment(1)=flexAlignCenterCenter16 MSFlexGrid1.ColAlignment(2)=flexAlignCenterCenter17 18 '初始化高度19 MSFlexGrid1.RowHeight(0)=10020 MSFlexGrid1.RowHeight(1)=130021 MSFlexGrid1.RowHeight(2)=130022 23 '除首行和首列外,每个单元格显示的内容24 Fori=1ToMSFlexGrid1.Rows-125 Forj=1ToMSFlexGrid1.Cols-126 '设置当前单元格准备显示图片27 MSFlexGrid1.Row=i28 MSFlexGrid1.Col=j29 '图片对齐方式30 MSFlexGrid1.CellPictureAlignment=flexAlignCenterTop31 32 '设置单元格图片33 IfiMod2=0Then34 SetMSFlexGrid1.CellPicture=Image1.Picture35 MSFlexGrid1.TextMatrix(i,j)="不在线"36 Else37 SetMSFlexGrid1.CellPicture=Image2.Picture38 MSFlexGrid1.TextMatrix(i,j)="在线"39 EndIf40 41 Next42 Next43 EndSub[代码说明]行8:AllowUserResizing属性指是否可以调整行高列宽,其取值和含义见表4-3。表4-3AllowUserResizing属性值常数值描述flexResizeNone0(缺省的)不允许。用户不能用鼠标来重新调整大小。flexResizeColumns1列。用户可以用鼠标来重新调整列的大小。flexResizeRows2行。用户可以用鼠标来重新调整行的大小。flexResizeBoth3行和列。用户可以用鼠标来重新调整行和列的大小。行27~28:指定单元格显示图片时,需要指定当前单元格的位置属性:Row和Col。行29:CellPictureAlignment属性为单元格中图片的对齐方式,取值与列对齐方式一致,见表4-2。行33:如果是单行,则显示“不在线”文字,同时设置单元格的图片为Image1的图片。注意,设置对象必须使用Set关键字。如果是双行,则显示Image2中的图片和“在线”文字。4.6典型例题[建立工程]新建工程,按默认名称保存工程为“工程1”,窗体名称保存为Form1。由于要在窗体中画图,不需要放置其它控件。[程序代码]窗体事件过程代码如下:PrivateSubForm_Click()DimCX,CY,F,F1,F2,IScaleMode=3CX=ScaleWidth/2CY=ScaleHeight/2DrawWidth=8ForI=50To0Step-2F=I/50F1=1-F:F2=1+FForeColor=QBColor(IMod15)Line(CX*F1,CY*F1)-(CX*F2,CY*F2),,BFNextIIfCY>CXThenDrawWidth=ScaleWidth/25ElseDrawWidth=ScaleHeight/25EndIfForI=0To50Step2F=I/50F1=1-F:F2=1+FLine(CX*F1,CY)-(CX,CY*F1)Line-(CX*F2,CY)Line-(CX,CY*F2)Line-(CX*F1,CY)ForeColor=QBColor(IMod15)NextIEndSub[例4-10]进程条的设计许多应用软件在安装过程中,或在程序执行过程中,当需要等待较长时间时,常常显示一个进程条,以显示程序运行的进展情况。进程条显示的是一个动态的过程,实际上是一个动画的设计,如图4-24所示。[分析]在菜单栏上选择“工程→部件”选项,弹出“部件”对话框,在“控件”选项卡中选择“MicrosoftWindowsCommonControls6.0”选项,单击“确定”按钮后,将在工具箱中增加一个进程条(ProgressBar)控件。[建立工程]为了设计进程条,需要在窗体中放置计时器、进程条和标签控件和命令按钮,并在窗体放置、调整各控件,如图4-25所示。各控件的名称和属性设置如表4-4所示。图4-24运行应用程序的进程条示例
图4-25进程条程序窗体示意图
表4-4控件的设计对象名称属性属性值frmProgCaption程序安装进度Timer1Interval100ProgressBar1Max100Lbl1Caption0%Lbl2Caption已完成:cmdOKCaption确定[程序代码]计时事件过程如下(每经过一个计时间隔执行一次计时事件过程):PrivateSubTimer1_Timer()IfProgressBar1.Value<100ThenProgressBar1.Value=ProgressBar1.Value+1Lbl1.Caption=ProgressBar1.ValueElseMsgBox"系统安装完成,按确定退出"Timer1.Interval=0EndIfEndSub[运行结果]如图4-24所示。[总结与提高]这是一个最简单的动画程序,其动画效果不是用具有细微差别的图片来实现的。通过运行程序可以看到,进程条的显示是一个动态地向前进行的过程,程序不断地修改进程条经过计时间隔后的Value属性值并显示。计时器事件是一个反复进行计时的事件,在设计过程时要注意不能再使用循环。[例4-11]动画设计----飞行的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校消防安全管理制度
- 莎车县伊什库力乡2026年阔依其(17)村农村道路建设以工代赈项目水土保持报告表
- 泥江口镇竹产业园配套锅炉房集中供热项目环境影响报告表
- 中职《精神病学(人卫 第8版)》同步课件 第16章 睡眠 觉醒障碍
- 2026佛教招聘面试题及答案
- 2026干细胞技术员面试题及答案
- 2026安顺社工面试题及答案解析
- 中考作文九大主题-情景开头结尾45例
- 第十课 翻新老照片-照片处理之修复技术教学设计初中信息技术(信息科技)八年级上浙教版(广西、宁波)
- 第4课 春夏的色彩教学设计小学美术赣美版二年级下册-赣美版
- 2026年湖北省科技信息专业技术职务水平能力测试仿真试题及答案
- 广东省深圳市南山区南二外2026年初三二模数学试卷附答案
- 湖北省武汉市2026届高三年级五月供题地理+答案
- 2026天津交通数字科技有限公司社会招聘18人笔试历年参考题库附带答案详解
- 2026年广东省汕头市龙湖区中考一模考试地理试题(含答案)
- 抗凝剂皮下注射技术临床实践指南
- 施工工地围蔽施工方案(3篇)
- 2026年南开大学项目管理概论习题题库试题参考答案详解
- 隧道二衬安全培训
- 产品设计制图与图纸标准化手册
- DL-T5440-2020重覆冰架空输电线路设计技术规程
评论
0/150
提交评论