首页 > 工作范文 > 范文大全 >

2024年gridcontrol添加按钮5篇

网友发表时间 1973388

【请您参阅】下面供您参考的“2024年gridcontrol添加按钮5篇”是由阿拉网友精心整理分享的,供您阅读参考之用,希望此例范文对您有所帮助,喜欢就复制下载支持一下小编了!

gridcontrol添加按钮篇1

开县教育委员会文件

开教办„2007‟32号

开县教育委员会

关于进一步加强全县中小学幼儿园校车安全管理工作的

通 知

各教育管理中心、中小学、幼儿园:

根据市教委市交管局市安监局《转发教育部等部门关于加强农村中小学幼儿园上下学乘车安全工作的通知》(渝教办[2007]71号)、市交管局市教委《关于进一步加强和规范全市校车管理工作的通知》(渝公交[2007]279号)和县交警大队县教委关于转发《市公安局交通管理局市教育委员会关于进一步规范和加强全市校车管理工作的通知的通知》(开公交[2007]字第101号)要求及县政府近期安全工作部署,进一步加强和规范全县中小学、幼儿园校车安全管理工作,消除校车安全隐患,预防重特大交通安全事故发生,切实保障广大学生生命安全,现将有关要求通知如下:

一、校车安全管理严格“四个统一”

(一)统一申报审批。凡学校购买接送学生的车辆,必须首先 向县教委提交包括用途、车型、准坐人数、购车金额和驾驶员资质及其有关证件的书面申请,教委审核批准同意后,方可购买。

(二)统一资格管理。各校要严把校车及驾驶员资格准入关,一是校车必须是安全技术状况符合国家标准、相关设施齐全有效,并按规定领取了“校车专用通行证”的车辆。二是校车驾驶员必须符合客运驾驶员的标准,必须具备相应准驾车型三年以上安全驾驶经历,最近三年内任一计分周期没有计满12分记录,无致人伤亡的交通事故的人员。

(三)统一档案管理。各校要建立校车及校车驾驶员安全管理专门档案,对校车的安全检测、维护保养、每日出行、驾驶员状况等做好记录记载,建立台帐,并落实专人保管。

(四)统一出行条件。切实做到 “人况、路况、车况”不明不出车,客车不能去的地方校车不能去,路、桥损毁严重的路段校车不能去,下暴雨、下大雪等恶劣天气造成路况不明的情况下校车不能去。驾驶员要经常做好校车的自查、自检和维护保养工作,发现问题应立即向分管领导报告,及时进行维修,彻底排除隐患。严禁疲劳驾车、酒后驾车,严禁超速、超载行驶,严禁违规违章超车、会车,严禁驾车时与车内人员聊天或使用通讯工具。

二、校车安全管理严格“四定措施”

(一)定车辆。接送学生的车辆必须专车专用,学校因教育教学管理租用、借用的车辆不能作为接送学生的校车而参与接送学生。

(二)定时间。学校要结合实际,相对集中学生返家返校时间,对校车早、中、晚上学、放学接送学生的时间相应作出统一安排,督促校车驾驶员只能在规定的时间接送学生,其余时间校车必须停放在学校指定地点,严禁校车参与其他营运。

(三)定路线。校车只能按照交警部门核定的行驶路线安全有序地接送学生,严禁跨区域搭载运送学生。

(四)定人员。校车接送学生时,每辆校车必须落实1名教师跟车管理,督促驾驶员安全驾车,严禁校车超速、超载,管理学生乘车秩序,指挥学生安全上下车。

三、建立校车安全管理工作长效机制

1、建立联席会议制度。县教委与公安、交警、交通等部门和单位配合定期召开联席会议,分析、研究、总结、上报校车安全管理工作情况。联席会议原则上每月召开一次。

2、加强信息报送工作。为准确掌握全县校车安全管理状况,凡有校车的学校,必须认真做好校车安全信息报送工作,并确定1名交通安全信息员(由学校分管领导兼任),每月25日前向县教委书面汇报一次校车安全出行情况(材料交县教委安全保卫科)。县教委对学校校车安全管理工作中的经验和典型及需要整改的问题及时进行通报。

3、认真做好摸排登记工作。校车摸底调查工作,由教管中心牵头,会同乡镇(街道)安办对公、民办校车及暂未批准的学前班、幼儿园等各类学校用于接送学生的车辆进行摸排登记,建立台帐,并报县教委、县交警大队备案。督促学校按规定办理“接送学生校车专用通行证”。

4、加强安全培训工作。摸底调查结束后,县教委、县交警大队将联合对全县有校车学校的校长、分管领导及校车驾驶员进行交通 安全法律法规和业务知识培训。有校车的学校要经常性地对驾驶员进行思想教育和职业道德教育,增强服务学生和安全出行的意识。

5、深入开展交通安全宣传教育工作。各校要充分利用各种集会、例会、班团对会,采取校园广播、网络、板报、专题讲座、知识竞赛等多种形式,加强对学生进行交通安全法律法规及安全常识教育,教育学生主动拒乘两轮、三轮摩托车和农用车等非客运车辆,养成自觉遵守交通规则、爱护交通设施的良好习惯,切实增强师生交通法规意识,严防各种交通事故发生。

6、加强督查督办工作。县教委、县交警部门将定期和不定期对重点区域、重点线路、重点学校交通安全管理工作进行督查,查各校是否认真落实学生路途护送制度,是否严格执行校车安全管理制度(开教办[2005]4号)和校车是否办理“专用校车通行证”,是否做到交通安全宣传教育与日常监管相结合。并将督查结果作为乡镇(街道)教育工作、学校工作考核的重要内容,对督查中发现的问题,将予以通报,责令责任单位限期整改。因学校对校车安全管理不到位、整改不落实、责任不落实而引发重大交通事故,要严肃追究校长(或民办学校负责人)及相关责任人的责任,对民办学校取消办学资格。

二00七年十一月二十九日

主题词:学校 安全 校车 管理 通知 抄送:市教委安稳办,县政府办、县公安局、县安监局

本文地址:http:///zuowen/

gridcontrol添加按钮篇2

由于近期要使用gridcontrol控件,整理出来,以便以后参考:

ress控件组中的gridcontrol控件不能使横向滚动条有效。现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容。

解决:

autowidth属性是true,即各列的宽度自动调整,你把它设成false,就会出现了。

2.使单元格不可编辑。

gridcontrol-->gridview-->optionsbehavior-->editable=false

3.没有下拉滚动条事件怎么办?现象:因为需要加载大数据量数据,所以不能一次把所有数据读入datatable进行绑定,所以决定在用户进一步浏览数据时进行数据的实时加载工作,就是每当用户拉动滚动条时,多加载一些数据进入datatable.没有找到合适的滚动条事件,于是用这个事件代替了,changed事件.4.获取选定行,指定列单元格的内容

private string getselectoid()

{

int[] prows = ectedrows();

if(gth(0)> 0)

return cellvalue(prows[0], moidfiledname).tostring();

else

return null;

}

//moidfiledname为要获取列的列名

5.去除“drag a column header here to group by that column”

属性gridview->option view->show group panel=false,就好了

6.在gridcontrol中添加checkbox复选框

gridview->run designer->columns->选择要变成复选框的那一列->column edit->new(在这里可以选择很多类型)

加载checkbox数据时,费了一点时间,checkbox的复选框怎么点击,一失去焦点是,选择的操作就无效了,问题就出在datatable的绑定上了,一定要绑定一个布尔的类型.代码是这样滴!

private void frmcreatelegend_load(object sender, eventargs e)

{

ifeaturelayer pfeaturelayer;

idataset pdataset;

string pname;

datatable pdatatable = new datatable();

(“图层名称”, e(“”));(“选择”, e(“n”));

datarow pdatarow;

object[] rowarray = new object[2];

for(int i = 0;i < ;i++)

{

pdatarow = ();

pfeaturelayer = mfeaturelayers[i] as ifeaturelayer;

rowarray[0] = ;

rowarray[1] = false;

ray = rowarray;

(pdatarow);

}

urce = pdatatable;

h();

}

注意:创建的datatable的列名一定要和gridview中的列的fieldname属性值是一个名字,不然,你会发现添加了和你绑定的datatalbe一样多的行,可是行里面却没有内容的.7.多选

gridcontrol->gridview->属性->optinosselecttion->multiselect

8.不显示子表信息

当我们对datatable建立父子关系后,将父表绑定在grid上,会造成关系列上有加号显示,并且可以展开.如果你觉得展开的信息对你没有意义的话,是可以关掉的.这是需要修改属性 属性gridview->option view->showdetailbuttons=false

s[1].width =

lumnbestwidth(s[1])+ 5;

s[2].width =

lumnbestwidth(s[2])+ 5;

s[3].width =

lumnbestwidth(s[3])+ 5;

s[0].width

lumnbestwidth(s[0])+ 5;=

gridcontrol添加按钮篇3

mfc控件关联变量总结

通常在要绑定变量的编辑框控件上右键添加变量就可以。

绑定变量分value和control两种,value是赋值用的,control是控制用的。对于编辑框的赋值,共分几种方法 1.不用绑定变量的方法

getdlgitem(idc_edit1)->getwindowtext(变量); 如果是数组->getwindowtext(数组名,长度)getdlgitem(idc_edit1)->setwindowtext(变量); 2.绑的是value型变量 一共3处

<1处> : 头文件 class cproject1dlg : public cdialog { // 构造 public: cproject1dlg(cwnd* pparent = null);// 标准构造函数

// 对话框数据

enum { idd = idd_project1_dialog };protected: virtual void dodataexchange(cdataexchange* pdx);// ddx/ddv 支持

// 实现 protected: hicon m_hicon;// 生成的消息映射函数 virtual bool oninitdialog();afx_msg void onsyscommand(uint nid, lparam lparam);afx_msg void onpaint();afx_msg hcursor onquerydragicon();declare_message_map()public: afx_msg void onbnclickedok();cstring edit1;//定义了该变量 cstring edit2;cedit edit3;cedit edit4;cstring edit5;};<2处> : 实现文件

cproject1dlg::cproject1dlg(cwnd* pparent): cdialog(cproject1dlg::idd, pparent), edit1(_t(“")), edit2(_t(”“)), edit5(_t(”")){ m_hicon = afxgetapp()->loadicon(idr_mainframe);}

参数列表跟了edit1 <3处> : 实现文件

void cproject1dlg::dodataexchange(cdataexchange* pdx){ cdialog::dodataexchange(pdx);ddx_text(pdx, idc_edit1, edit1);ddx_text(pdx, idc_edit2, edit2);ddx_control(pdx, idc_edit3, edit3);ddx_control(pdx, idc_edit4, edit4);ddx_text(pdx, idc_edit5, edit5);}

ddx_text(pdx, idc_edit1, edit1);变量与控件关联

通过调用 updatedata(true)updatedata(false)将控件数据取到变量或将变量数据显到控件 如果 变量赋值语句写在对话框构造函数里,则updatedata(false)可省略,会被自动调用

3.绑的是control型变量 代码与上方一样,看edit3 但只有两处涉及 cedit edit3;ddx_control(pdx, idc_edit3, edit3);程序里只需要 dowtext(变量);dowtext(变量);就可以用了

除了赋值,还能干很多事情.

gridcontrol添加按钮篇4

from 属性:

zebox:是否显示最小化按钮。zebox:是否显示最大化按钮。

rderstyle:窗口样式,如fixedsingle:固定大小。osition:初始显示的位置,centerscreen:中心。

事件:

treelist: 属性:

1.隐藏列头:设置optionsview中的showcolumns改为false 2.隐藏每行最左边的指示箭头:设置optionsview中的showindicator改为false 3.隐藏父节点的指示箭头:设置optionsview中的showroot改为false imagelist:给treelist绑定imagecollection rtlines:是否显示网格线(竖直的)rzlines:是否显示网格线(水平的)

appearancefocusedcell:选中单元格,是否改变该单元格外观(选中后该单元格有边线或不显示边线)

appearancefocusedrow:选中行。是否改变该行的外观(选中后该行底色是否变化)

eckboxes:是否在每一行前显示勾选框。

事件:

dnodechanged:焦点改变后触发

st_enter:第一次点击是触发,初始化控件时候,焦点会在第一行,此时就触发。nodecelledit:鼠标选中某个cell时触发,可以实现动态的设定cell绑定的控件类型 oubleclick:双击节点触发

dcolumnchanged:选中列改变时触发,即前后点击的列不一样时触发(即使前后选中列不在一行,只要选中列改变就会触发,与行无关。若前后选中列中某列的readonly = ture则不会触发该事件)

oubleclick:鼠标双击节点时触发。p:鼠标点击节点弹起时触发。(可以得到曾按下的是哪个按钮)imageclick:点击selectimage触发 mageclick:点击stateimage触发 expand:节点展开之前 focusnode:焦点选中之前

ormatcondition styleformatcondition = new ormatcondition();lor = ay;ecolor = true;orow = true;ion = sion;sion = “[style]”;(styleformatcondition);

treelistcolumn:treelist中添加的列

属性:

1.表示这一列为只读:optionscolumn中的readonly = true 2.固定列的宽度不变:optionscolumn中的fixedwidth = true 3.表示这一列不可编辑(无法实现复制):optionscolumn中的allowedit = false ame: dtype:

der:列表中的项排序,sortorder =descending,递减排序。sortorder = ascending,递增排序。

node();//添加节点(treelistnode)

treelistnode:(treelist中的节点)

属性: ndex:正常情况下节点前面显示的图片的索引

imageindex:选中节点时节点前边显示的图片的索引

mageindex:节点开头显示的图片索引(在selectimageindex之后):节点的级别(0:根节点、1:一级节点···)imagecollection 属性:

:在imagecollection中添加图片

imagecomboboxedit comboboxedit 属性:

1.调整下拉菜单直观显示出来的行数(即不用滚动条就可以看的到的行数):dropdownrows :绑定数据源

itstyle:standard(可输入,可选),hidetexteditor(只能通过下拉菜单选择,选中后不在界面上显示),disabletexteditor(只能通过下拉菜单选择并且选中后在界面上显示)

p:

edindex:选择的item的索引(get,set)

事件:

1:editvaluechanged:只要是值改变就会触发 2:selectedindexchanged:(值改变触发)selectedindex改变触发。3:selectedvaluechanged:(值改变触发)selectedvalue改变触发。

4:drawitem:光标在下拉菜单上移动的时候触发,即光标在选择项上来回移动时触发

combobox(win)

属性:

ddown:设置/获取下拉菜单是否展开。

ionstart:设置光标的位置(输入文本时用,可以保证光标在最后一个字符的后面,避免将前边的字符覆盖掉)。事件:

date:输入的值时(text属性值改变时)触发。(在textchanged事件之前)anged:输入的值时(text属性值改变时)触发。(在textupdate事件之后)own:鼠标在控件上按下时触发。

labelcontrol:

属性: 事件:

notepane:

属性:

:设置notepane最大显示行数

textedit:单行文本输入

事件:

luechanged:textedit值改变时候触发

ting:焦点离开textedit时触发,验证有效性(有效性的标准通过自己在事件里面的代码来写,若设置了editmask,进入该事件会先自动根据editmask为标准来验证有效性,完成之后执行事件里面的代码)ss:键盘按下某一个键触发。

属性:

sk:可以规定输入的格式,类似正则表达式

pe:指定可填写的文本类型(如:数字、字符串或者是根据正则表达式(regex)来约束···editmask与masktype配合使用,若masktype= regex,editmas = 某正则表达式,当masktype是datetime,numeric时,editmask为指定的相应类型)gth:可填的最大字符长度,仅当masktype = none时有效

error:当用户输入不满足edimask要求时,是否发beep声。tempasswordchar: true –密码框(输入的内容在界面上是 ****)6.实现水印文字:lueprompt = “输入密码”

luepromptshowforemptyvalue = true;

memoedit:多行文本输入

属性: 事件:

checkedit:

属性:

d:是否选中

事件:

dchanged:勾选状态改变时触发(选中变不选中,不选中变选中)

checkedlistboxcontrol:(实现多选框)

属性: 事件:

em:光标在选择菜单上移动的时候触发,即光标在选择项上来回移动时触发(与comboboxedit的drawitem事件相似)eck:勾选或取消勾选item时触发。(:点击的item的索引,:改变的状态)3.方法: kall();//全部不选 ll();//全选中

popupcontaineredit:

属性:

1. ontrol:(popupcontaineredit和popupcontainercontrol组合,实现下拉组合框) = ontainercontrol1;

事件:

luechanged esultvalue popupcontainercontrol:

属性: 事件:

splitcontainercontrol: barmanager: popupmenu:

lookupedit:

属性:

urce:绑定数据(可以直接将list<>赋值给它)。

itstyle:standard(可输入),hidetexteditor(只能通过下拉菜单选择,选中后不在界面上显示),disabletexteditor(只能通过下拉菜单选择并且选中后在界面上显示)3.事件:

panelcontrol:

属性:

style(边框风格):noborder–无边框,事件:

wizardcontrol:

属性:

1.headerimage:右上角图片。2.canceltext:3.finishtext:4.nexttext:5.previoustext:

当在最后一页时中间按钮变为“结束”

事件:

1.cancelclick:点击“取消”触发。2.finishclick:最后一页点击结束触发。3.selectedpagechanging:切换页面时触发。(ion:判断是向前翻页还是向后翻页,:新页)

4.selectedpagechanged:切换页面后触发。(ge:旧页)

wizardpage:(wizardcontrol中的每一页)

属性:

1. descriptiontext:2. text:

事件:

lidating:验证事件。(ion:判断是向前翻页还是向后翻页, = false;翻不过去)button:

属性:

1.事件: buttonedit:

属性: 事件:

dropdownbutton: 属性:

wncontrol:(dropdownbutton控件实现下拉框)

增加2个控件barmanager1。

dropdownbutton 的dropdowncontrol属性选择popupmenu1。popupmenu1的manager属性选择事件:

radiogroup:

属性: 事件:

spinedit:

属性:

ment:输入的文本的位置,如:near,近前边。,靠事件:

gridcontrol 事件: oubleclick:双击某一行。

gridview

属性:

le:是否可用

vgridcontrol 属性:

le:是否可用

headerpanel:是否可以拖拽改变每一行的高度 rowheaders:是否可以拖拽改变每一列的宽度。layoutstyle:布局风格

alebands:当layoutstyle为singlerecordviewbandsview,设置该属性为true,列宽自动填充 bcontrol 属性:

agebuttonshowmode:如何显示每个tabpage上的关闭按钮。

如:inactivetabpageheader:当tabpage为当前选中时显示关闭按钮。location:标签位置(上下左右)bheader:是否显示标签

orientation:标签方向(horizontal:水平,vertical竖直)buttons:当tabpage过多,需要翻页时,设置翻页按钮如何组合。如

ewidth:统设标签宽度。

事件:

uttonclick:点击标签上的x按钮事件

xtratabpage:

属性:

osebutton:是否显示关闭按钮。ewidth:这一页的标签宽度。

gridcontrol添加按钮篇5

activex控件是基于组件对象模型com--components object modem的可重用软件组件,旨在用于普通的activex控件容器和internet上的网页,这里介绍用mfc创建activex控件。一个典型的activex控件,具有方法、属性、事件这三种特性。

二、activex控件的测试与注册

1、使用activex控件测试容器对控件进行测试

对于,即可使用。

而vs2010中的tstcon(activex control test container)工具非自动安装,而是作为一个例程提供。所以应找到该例程,并编译: 如vs2010安装在默认路径则

1, 进入:c:program filesmicrosoft visual studio ,文件,2, 将其解决到同一个文件夹,解压后将出现一个c++子文件夹。

3, tstcon例程在:c:program filesmicrosoft visual studio ++mfcoletstcon,文件启动工程,直接编译,4, 文件,将其复制到:c:program filesmicrosoft visual studio 文件夹。

5, 在vs2010中的tools菜单点击“external tools...”,出现如下对话框,点击“add”添加一项工具。6, 新工具项的“title”为:activex control test container,“command” 为:c:program filesmicrosoft visual studio 。

7, 确认退出对话框,tools菜单将出现“activex control test container”菜单项。visual c++ 2010 mfc activex 控件小结captain栋蝈 打开控件测试容器初始界面如下图

visual c++ 2010 mfc activex 控件小结captain栋蝈 edit→insert new control→选择要测试的控件→ok

2、activex控件的注册与删除

所有的activex控件必须在注册之后才能使用,实际上在vs2010开发环境中生成控件程序时,就已经通过regsvr32程序注册了该控件;如果要删除activex控件的注册信息,利用regsvr32程序的/u选项来完成。通常可以选择“开始”→“运行”命令,然后输入“regsvr32/u”,再在其后输入要删除的activex控件的完整路径。tips:在“运行”中先输入regsvr32/u,然后拖动要删除的控件到“regsvr32/u”之后,即可获取其完整路径。

文件拷贝至windowssystem下,然后regsvr 即注册;regsvr32/u 即删除。

三、activex控件开发完整过程 经典clock控件案例~~

1、创建工程

创建mfc activex control类项目,命名为clock,mfc activex control wizard全选默认,finish。

2、时钟控件的实现

获取当前系统时间,cclockctrl类的ondraw函数中 ctime time=ctime::getcurrenttime();cstring str=(“%h:%m:%s”);pdc->textout(0,0,str);动态显示时间,cclockctrl类添加wm_create和wm_timer消息及处理函数 设置定时器settimer(1,);定时器相应函数invalidatecontrol();//其实就是调用ondraw函数

编译并运行activex控件,然后打开activex控件容器中插入该控件,可以看到动态显示的时间

3、属性 标准属性

以背景色和前景色为例,类视图中展开lib结尾的选项,右键“_dclock”→“添加”→“属性”,然后添加标准属性,及选中“stock”,在propertyname中选则backcolor,其余选中默认,单击完成。同理添加前景色forecolor。

为属性对话框添加“颜色”选项卡,中的属性页映射宏proppageid(clsid_ccolorproppage);切记计数参数要增加1: // 属性页

// todo: 按需要添加更多属性页。请记住增加计数!begin_proppageids(cclockctrl, 2)

proppageid(ctimeproppage::guid)

proppageid(clsid_ccolorproppage);end_proppageids(cclockctrl)然后在修改ondraw函数使控件颜色根据颜色选项卡的选则而变化:

cbrush brush(translatecolor(getbackcolor()));

pdc->fillrect(rcbounds,&brush);

pdc->setbkmode(transparent);

pdc->settextcolor(translatecolor(getforecolor()));自定义属性

添加一个自定义属性:时间间隔(updateinterval),用于设置更新时间的间隔。

与标准属性添加相同,在添加属性向导中,在propertyname中输入updateinterval,类型设置为short。可以看到向导自动添加了通知函数onupdateintervalchange(),单击finish完成添加。void cclockctrl::onupdateintervalchanged(void){

afx_manage_state(afxgetstaticmodulestate());

// todo: 在此添加属性处理程序代码

if(m_updateinterval<1000 || m_updateinterval>6000)

{

//解决输入值不合要求的问题

m_updateinterval=1000;

}

else

{

//解决输入值不是整数的问题

m_updateinterval=m_updateinterval/1000*1000;

}

killtimer(1);

settimer(1,m_updateinterval,null);

setmodifiedflag();} 关联某控件变量,需要手动添加:

ddp_text(pdx, idc_edit1, m_updateinterval,_t(“interval”));ddx_text(pdx, idc_edit1, m_updateinterval);ddp_postprocessing(pdx);ddp、ddx、postprocessing,顺序不可以调整

为测试自定义属性,在edit→insert new control→选择要测试的控件后,选择control→invoke methods,如果想要获取,某个属性值,则选择propget;如果设置,则选propput。这里选择后者,然后输入2000,单击setvalue,在单击invoke按钮,发现控件时间每个2s更新一次。

4、方法

与添加属性一样,_dclock右键......选择“方法”,这里添加一个简单的“hello” 代码:

void cclockctrl::hello(void){

afx_manage_state(afxgetstaticmodulestate());

// todo: 在此添加调度处理程序代码

messagebox(_t(“hello world”));} 测试时control→invoke methods,选择“hello”

5、事件

添加标准事件

右键cclockctrl类(类视图cxxxctrl上点击右键才能添加事件,而在_dxxxevents接口上点击右键则没有添加事件),添加“事件”,显示添加事件向导对话框,“event name”下拉列表框中选择”click“,单击finish。添加自定义事件

添加一个newminute事件,实现新的一分钟时有提示 event name中输入newminute,然后finish。在indraw函数中获取系统时间代码后添加 if(ond()==0)

{

newminute();//判断是否过了一分钟,是则触发newminute事件

}

6、调用activex控件

新建一个名为clocktest的对话框,在对话框上右键,选择”insert activex control“,找到clock控件添加即可。

或者是,”工具“→”选择工具箱选项“→”com components“,选择要插入的控件,单击ok。

相关推荐

热门文档

48 1973388