60个PB数据窗口技巧

60个PB数据窗口技巧
60个PB数据窗口技巧

60个数据窗口技巧

1.如何让存储文件目录的列,显示图片? 答:选择对应的column的display as picture属性为true

2、如何复制grid类型的所选择的行的数据到系统剪切板?

答:string ls_selected

ls_selected=dw_1.Object.DataWindow.Selected.Data

clipboard(ls_selected)

3、如何复制graph风格的datawindow中的图形到剪切板?

答:dw_1.clipbord("gr_1")

4、如何设置的DW底色?

在DW的editsource中改变color的值

5、如何将Grid风格改成自由格式?

在DW的editsource中将processing=1的1改为0

6、要新建一个表A但风格和现有表格B风格一样,怎么将A表快速设置成表B风格?

复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可

7、如何实现gird风格的datawindow的多栏表头?

答:添加 text到header带区,并设置band属性为foreground保存,edit source 修改text的x和width 属性表达式如下:

x="100~t integer(describe('firstcol.x')" width="100~tinteger(describe('lastcol.x')) -

integer(describe('firstcol.x')) +integer(describe('lastcol.width'))

8、如何过滤dddw编辑风格的显示值为指定值的记录?

答:dw_1.setfilter("lookupdisplay('column_name')='"+ls_display_value_your+"'")

dw_1.filter()

9、如何设置datawindow的某一列为空?

答:string ls_temp[]

setnull(ls_temp)

dw_1. O B J E C T.columnname.primary.current=ls_temp

10、如何设置datawindow的单双行不同颜色间隔?

答:在detail带区的color属性表达式中写上if(mod(getrow(),2)=1 ,rgb(255,0,0),rgb(0,255,0)),如果是当前行以第三种颜色表示,表达式如下:

if(getrow()=current(),rgb(255,0,0),if(mod(getrow(),2)=1 ,rgb(0,0,255),rgb(0,255,0)))

11、如何获取指定名称的datawindow O B J E C T?

答:DWObject ldwo_use,ldwo_abc

ldwo_use = dw_1.Object

ldwo_abc = ldwo_use.__get_attribute("t_1",FALSE)//t_1为datawindow中text对象的名称

注﹕不是版本的问题,是你没找对位置。在PB的browser中,展开任意放置了datawindow控件的窗口,然后展开datawindow出现dwobject,右边的函数部分就可以看到这几个函数。因为它的参数从字面上无法猜测出其含义,而帮助上没讲,所以有此一问。

你从哪儿找到这些函数的?我只知道__get_attribute()。

pb7.0以前的版本这些函数的形式为get_attribute(),没有前面的两个横线。

dwobject ldwo_object,ldwo_object_item

ldwo_object = dw_1.object

ldwo_object_item= ldwo_object.__get_attribute('objectname',false)

参数中的objectname是datawindow中对象的名字,如列名等。这样可以根据列名得到该列对应的dwo,就跟在datawindow的click事件中的dwo参数一样。

12、如何使用datawindow的查询模式?

答:dw_1.Object.DataWindow.QueryMode='yes'将datawindow改变为查询模式后,接收用户的输入,再使用一下代码获取结果:

dw_1.accepttext()

dw_1.retrieve()

13、如何缩放datawindow的打印大小?

答:dw_1. O B J E C T.datawindow.zoom=150 or dw_1. O B J E C T.datawindow.zoom=75

14、如何在已过滤后的数据基础上对datawindow进行过滤?

答:dw_1.setfilter(dw_1.describe("datawindow.table.filter")+your_join+your_new_filter)

dw_1.filter()

15、如何在datawindow中显示动态时间?

答:建立一个计算域,表达式为string(datetime(today(),now()),'yyyy年mm月dd日 hh点mm分ss秒'),同时设置datawindow的属性dw_1.Object.DataWindow.Timer_Interval=500

16、如何让带用title bar的datawindow控件的标题栏诚活动窗口的颜色?

答:外部函数定义:

function long SetActiveWindow(long hwnd ) Library "user32.dll"

datawindow控件的clicked事件代码:

setactivewindow(handle(this))

17、如何设置datawindow的当前行指示图标?

答:在datawindow中建立一个计算列,expression为'',并将该计算列移动为datawindow的第一个列,在datawindow控件的

rowfocuschanged事件中写入代码:

SetRowFocusIndicator(hand!)或setrowfucsindicator(p_1)//p_1为窗口上的picture控件名

18、如何通过代码打开dddw?

答:定义外部函数引用声明

SUBROUTINE keybd_event( int bVk, int bScan, int dwFlags, int dwExtraInfo) LIBRARY "user32.dll" 代码如下:

[constant integer VK_F4 = 115

dw_1.SetFocus()

dw_1.SetColumn( "dept_head_id" ) //设置当前dddw

keybd_event( VK_F4,0,0,0 ) // 按下F4键

keybd_event( VK_F4,0,2,0 ) // 释放F4键

19、如何打印datawindow的内容到文件中?

答: dw_1. O B J E C T.datawindow.print.fileName ="c:\temp.prn"

dw_1.print()

20、如何设置dddw的初始值?

答:dw_1. O B J E C T.columnname.Initial="your_initial_value"

21、如何只显示不同的数据?

答:dw_1.filter("isnull(columnname[-1]) and columnname<>columnname[-1]")

dw_1.filter()

22、如何让带有title bar的datawindow不可以移动?

答:在datawindow的自定义事件ue_nchittest(pbm_nchittest)中写入如下代码:

return 1

23、如何在N-UP显示风格中建立基于第N栏中的列的计算列?

答:如column有两列,number和price ,并显示为两栏,则第一栏的cost计算列的expression为number*price,第二栏的cost_1计算列的expression为number[1]*price[1]

24、如何清空ddlb或edit.codetable中项目?

答:dw_1.Object.columnname.Values=""

25、如何实现指定的column的字体旋转90度?

答:dw_1. O B J E C T.columnname.font.Escapement ="900"

26、如何获取datawindow的sql代码?

答:可以通过以下四种方法获取sql代码:

string szselect

szselect=dw_1.describe("datawindow.table.select")

szselect=dw_1.describe("datawindow.table.sqlselect")

szselect=dw_1.describe("datawindow.table.select.attribute")

szselect=dw_1.getsqlselect()

27、如何获取datawindow对象占有的虚拟存储的容量?

答:使用datawindow.storage属性

举例:在datawindow控件的retrieverow事件中,写如如下代码:

long lstorage

lstorage=long(dw_1. O B J E C T.datawindow.storage)

if lstorage>50000 then dbcancel()

28、如何控制打印横向:

dw_control. O B J E C T.datawindow.print.orientation= 1

29、如何进行预览:

dw_control. O B J E C T.datawindow.print.preview = "yes"

30、如何连续在同一张纸打印两个数据窗口?

答:dw_1. O B J E C T.datawindow.print.filename="temp.prn"

dw_2. O B J E C T.datawindow.print.filename="temp.prn"

dw_1.print()

dw_2.print()

31、如何将pb9.0 的datawindow转化为pb 8.0版本的datawindow?

答:edit source 将release 9;改为release 8;

并删除以下内容:

print.printername=""

print.canusedefaultprinter=yes

print.cliptext=no print.overrideprintjob=no

hidegrayline=no

encodeselflinkargs="1"

export.xml(headgroups="1" includewhitespace="0" metadatatype=0 savemetadata=0 )

import.xml()

export.pdf(method=0 distill.custompostscript="0" xslfop.print="0" )

32、如何设置datawindow分组后每个分组中的记录号?

答:建立一个计算列,expression为 getrow() - first(getrow() for group 1)+1

33、如何实现在datawindow中只有新增的行,才可以编辑?

答:在所有的column的protect属性表达式中写入以下表达式:

if(isrownew(),'0','1')

34、保存datawindow数据到excel中

// ... Init docname

// ... GetFileOpenName or any other method

if dw_1.SaveAs(docname, HTMLTable!, True) = -1 then

MessageBox("Warning", "Unable to export data. Error writing to file!", Exclamation!)

return

end if

// Convert HTML file to Excel native format

OLEObject excel

excel = CREATE OLEObject

if excel.ConnectToObject(docname) = 0 then

excel.application.DisplayAlerts = FALSE

excel.application.workbooks(1).Parent.Windows(excel.application.workbooks(1).Name).Visible = True

excel.application.workbooks(1).saveas(docname, 39)

excel.application.workbooks(1).close()

end if

DESTROY excel

// done

35、除了循环以外,有没有更好的方法统计数据窗口中处于选中状态的行数?

一般习惯于使用循环来统计数据窗口中处于选中状态的行数,有没有更好的方法?

其实此问题在应用上用处不大,讨论一下,活跃一下思维还是有好处的。

方法一:

long ll_Selected

ll_Selected = long(dw_1.describe("evaluate('sum( if(IsSelected(), 1, 0) for all)',1)")) 方法二:

long ll_Selected

ll_Selected = long(dw_1.describe("evaluate('count(IsSelected() for all)',1)"))

方法三:

upperbound(dw_1.Object.Data.Selected)

36、问:怎么让PB只打印当前记录,是用Free格式制作的数据窗口!

答:

DataStore ldt_temp

long ll_Row , ll_Rows

ll_Rows = dw_XX.Rowcount()

If ll_Rows = 0 Then GoTo the_end

If ll_Rows = 1 Then

dw_XX.Print()

GoTo the_end

End if

dw_XX.SetRedraw(False)

ldt_temp = Create DataStore

ldt_temp.DataObject = dw_XX.DataObject

ll_Row = dw_XX.GetRow()

dw_XX.RowsMove(1 , ll_Rows , Primary! , ldt_temp , 1 , Primary!)

ldt_temp.RowsMove(ll_Row , ll_Row , Primary! , dw_XX , 1 , Primary!)

dw_XX.Print()

dw_XX.RowsMove(1 , 1 , Primary! , ldt_temp , ll_Row , Primary!)

ldt_temp.RowsMove(1 , ll_Rows , Primary! , dw_XX , 1 , Primary!)

Destroy ldt_temp

dw_XX.SetRedraw(True)

the_end:

//只用将上述脚本拷入到打印部分即可,dw_XX为被打印的free型数据窗口,该方法可保证dw_XX中的数据在打印前后包括sort等属性均不发生任何改变,但效率较低,不宜用在数据量太大的数据窗口中,当然,考虑到打印本身速度就比较慢,所以3000行数据是可以采用这种方法并让用户接受的。若在同一窗口上存在与dw_XX

共享的grid数据窗口并且与dw_XX同时显示,则需要与dw_one一起SetRedraw()

37、怎样将数据窗口(free格式)中的内容转成word文档

答:给你两个函数:

(1)、辅助函数

$PBExportHeader$f_cncharnum.srf

$PBExportComments$得到字符串中汉字或者双字节的个数

global type f_cncharnum from function_ O B J E C T

end type

forward prototypes

global function integer f_cncharnum (string aString)

end prototypes

global function integer f_cncharnum (string aString);

//函数名: f_cncharnum

//用途: 返回一个字符串中汉字的个数

//输入: aString - string, 给定的字符串

//返回值: li_num - Integer, 给定的字符串中汉字的个数

//注意: 1. 此方法基于汉字的国标汉字库区位编码的有效性,不符合此编码的系统此函数无效!// 2. 若汉字串含有非汉字字符,如图形符号或ASCII码,则这些非汉字字符将保持不变.

//例如: li_ret = f_cncharnum("摆渡人ferryman") li_ret = 3

string ls_ch //临时单元

string ls_SecondSecTable //存放所有国标二级汉字读音

integer li_num = 0 //返回值

integer i,j

For i = 1 to Len(aString)

ls_ch = Mid(aString,i,1)

If Asc(ls_ch) >= 128 then //是汉字

li_num++

i = i+1

End if

Next

Return li_num

end function

---------------------------------------------------------------

(2)、转到WORD

$PBExportHeader$f_outputtoword_new.srf

global type f_outputtoword_new from function_ O B J E C T

end type

forward prototypes

global function integer f_outputtoword_new (datawindow adw)

end prototypes

global function integer f_outputtoword_new (datawindow adw);

//函数名:f_outputtoword_new

//输入: adw - datawindow,指定的数据窗口

//返回值: Integer

constant integer ppLayoutBlank = 12

OLEObject ole_ O B J E C T

ole_ O B J E C T = CREATE OLEObject

integer li_ret

li_ret = ole_ O B J E C T.ConnectToObject("","word.application")

IF li_ret <> 0 THEN

//如果Word还没有打开,则新建。

li_ret = ole_ O B J E C T.ConnectToNewObject("word.application")

if li_ret <> 0 then

MessageBox('OLE错误','OLE无法连接!错误号:' + string(li_ret))

return 0

end if

ole_ O B J E C T.Visible = True

END IF

long ll_colnum,ll_rownum

constant long wdWord9TableBehavior = 1

constant long wdAutoFitFixed = 0

constant long wdCell = 12

string ls_value

pointer oldpointer

oldpointer = SetPointer(HourGlass!)

string ls_ O B J E C Ts,ls_obj,ls_objs[],ls_objtag[]

long ll_pos,ll_len,ll_num = 0

ls_ O B J E C Ts = trim(adw.Describe('datawindow.Objects'))

do while (pos(ls_ O B J E C Ts,"~t") > 0)

ll_pos = pos(ls_ O B J E C Ts,"~t")

ll_len = ll_pos - 1

ls_obj = left(ls_ O B J E C Ts,ll_len)

if (adw.Describe(ls_obj + '.type') = 'column' or &

adw.Describe(ls_obj + '.type') = 'compute') and &

(adw.Describe(ls_obj + '.band') = 'detail') and (ls_obj <> "asd") then ll_num += 1

ls_objs[ll_num] = ls_obj

ls_objtag[ll_num] = adw.Describe(ls_obj + '.tag')

end if

ls_ O B J E C Ts = right(ls_ O B J E C Ts,len(ls_ O B J E C Ts) - ll_pos)

loop

//得到数据窗口数据的列数与行数(行数应该是数据行数 + 1)

ll_colnum = ll_num

ll_rownum = adw.rowcount() + 1

ole_ O B J E C T.Documents.Add()

ole_ O B J E C T.ActiveDocument.Tables.Add(ole_ O B J E C T.Selection.Range, ll_rownum, ll_colnum) string ls_colname

integer i,j,k

for i = 1 to ll_colnum

//得到标题头的名字

ls_value = ls_objtag

ole_ O B J E C T.Selection.TypeText(ls_value)

for k = 1 to f_cncharnum(ls_value)

ole_ O B J E C T.Selection.TypeBackspace()

next

ole_ O B J E C T.Selection.MoveRight(wdCell)

next

adw.setredraw(false)

ole_ O B J E C T.Selection.MoveLeft(wdCell)

string column_name

for i = 2 to ll_rownum

for j = 1 to ll_colnum

column_name = ls_objs[j]

if adw.Describe(column_name + '.type') = 'column' then

ls_value = adw.Describe("Evaluate('LookupDisplay("+column_name+")',"+string(i - 1)+")")

end if

if adw.Describe(column_name + '.type') = 'compute' then

ls_value = adw.Describe("Evaluate('" + adw.Describe(column_name + '.expression') + "',"+string(i - 1)+")")

end if

ole_ O B J E C T.Selection.MoveRight(wdCell)

ole_ O B J E C T.Selection.TypeText(ls_value)

//for k = 1 to f_cncharnum(ls_value)

//ole_ O B J E C T.Selection.TypeBackspace()

//next

next

next

adw.setredraw(true)

constant long wdFormatDocument = 0

SetPointer(oldpointer)

//保存新建的文档

if messagebox("保存","文档已经成功完成,是否保存?",Question!,YesNo!) = 1 then

string docname, named

integer value

value = GetFileSaveName("选择文件",docname, named, "DOC","Doc Files (*.DOC), *.DOC") IF value = 1 THEN

ole_ O B J E C T.ActiveDocument.SaveAs(docname, 0,False,"",True,"",False,False,False, False,False)

end if

end if

//断开OLE连接

Ole_Object.DisConnectObject()

Destroy Ole_Object

return 1

end function

38、字段如何自动换行的同时且自动高度?

答:将数据窗口中相应列的auto horz scroll 为不选中,选中autosize height

将detail的autosize height选中。在数据窗口retrieve 后调用下面函数即可

uf_set_text(datawindow adw_content,string

as_columns,boolean,ab_ignoreblank)

/*************************************************************

describe: 在数据窗口adw_content中,在as_columns中包含的列中插入空格

args:

as_columns 要操作的多个列,列间用逗号隔开

*************************************************************/

if (not isvalid(adw_content)) or isnull(as_columns) or len(as_columns)<1 or

isnull(ab_ignoreblank) then return -1

n_cst_string lnv_string

string ls_column[] , ls_width ,as_source,as_replaced ,ls_temp

int li_upperbound , li_width , li_column , li_fontWidth, li_counter

long ll_rowcount , ll_row , ll_totalstep

int li_yield

lnv_string.of_parsetoarray(as_columns,',',ls_column)

li_upperbound = upperbound(ls_column)

ll_rowcount = adw_content.rowcount()

if li_upperbound<1 or ll_rowcount<1 then return -1

openwithparm(w_waiting,this)

ib_cancel = false

iw_frame.enabled = false

ll_totalstep = ll_rowcount * li_upperbound

w_waiting.uf_register(ll_totalstep)

for li_column = 1 to li_upperbound

ls_width = adw_content.describe(ls_column[li_column]+".width")

li_width = integer(ls_width)

if ls_width='!' or ls_width='?' or li_width=0 then

continue

end if

//ls_temp = adw_content.describe(ls_column[li_column]+".Font.property { =

'width' }")

//messagebox(ls_column[li_column]+".Font.property { = 'width' }",ls_temp)

//return 1

li_fontwidth = 27

li_counter = li_width / li_fontWidth

for ll_row=1 to ll_rowcount

if ib_cancel then

iw_frame.enabled = true

return 0 //pressed cancel button

end if

as_source = adw_content.getitemstring(ll_row,ls_column[li_column])

as_replaced = uf_insertstring(as_source,li_counter,' ',false)

if as_replaced<>as_source then

adw_content.setitem(ll_row,ls_column[li_column],as_replaced) end if

w_waiting.uf_stepit()

next

next

close(w_waiting)

iw_frame.enabled = true

return 1

39、如何动态外部创建数据窗口?

答:首先制作一个自己想动态得到的数据窗口,然后将该数据窗口导出,看看语法,这样你就了解了这种数据窗口的生成语法了!

---------------------------------------------------------------

dw_1.create()

可以参考帮助以及 srd文件(数据窗口导出文件)

---------------------------------------------------------------

动态数据窗创建原理及实现

在实际应用中,经常需要根据用户需求来动态创建数据窗,一般方法是这样的。

在一个window中加入一个数据窗控件,如dw_new,但是该数据窗没有data O B J E C T,(空白的)

就可以用以下语法来创建:

dw_new.create(ls_syntax,ls_error) // 创建语法,错误信息

ls_syntax可以用以下三种方法来形成:

一、动态由sql语法创建:

// 连接到pb的example数据库

string ls_sql,ls_syntax,ls_error

ls_syntax = 'select * from department'

ls_syntax = sqlca.SyntaxFromSQL(ls_sql,'style(type=grid)',ls_error)

if len(ls_error) >0 then

messagebox('Error','SyntaxFromSQL Error:~r'+ls_error)

else

dw_new.create(ls_syntax,ls_error)

if len(ls_error) >0 then

MessageBox("Error", "Create have these errors: ~r" + ls_error) else

dw_new.settrans O B J E C T(sqlca)

dw_new.retrieve()

end if

end if

二、由另一个数据窗的syntax来创建

string ls_syntax,ls_error

ls_syntax = dw_test.describe('datawindow.syntax')

dw_new.create(ls_syntax,ls_error)

if ls_error <> '' then

messagebox('Create Error',ls_error)

else

dw_new.settrans O B J E C T(sqlca)

dw_new.retrieve()

end if

三、读取psr文件来创建

样例

string ls_syntax,ls_error,ls_ret

ls_ret = char(13)+char(10) //回车键

int li_fileNum

long li_length

li_FileNum = FileOpen("efef.psr",Streammode!, read!, shared!, Replace!)

// 以下是pb5的代码

if li_filenum >0 then

FileSeek(li_FileNum, 158, FromBeginning!)

li_length = fileRead(li_filenum,ls_syntax)

end if

fileclose(li_filenum)

if li_length = 0 then return

ls_syntax = "release 5;"+ls_ret+ls_syntax

//截掉ls_syntax中的数据部分,5.0以"sparse(names="dept_name?) "作为参考位置

//6.0以html(作为参考位置

long pos1,pos2

pos1 = pos(ls_syntax,'sparse(names="',1)

pos2 = pos(ls_syntax,'"',pos1 +16)

ls_syntax = left(ls_syntax,pos1) + mid(ls_syntax,pos1 +1,pos2 - pos1 +1)

dw_New.create(ls_syntax,ls_error)

if ls_error <> '' then

messagebox('Create Error',ls_error)

else

dw_new.settrans O B J E C T(sqlca)

dw_new.retrieve()

end if

global type f_createextenddw from function_ O B J E C T

end type

forward prototypes

global function string f_createextenddw (ref datawindow dw, string cols[])

end prototypes

global function string f_createextenddw (ref datawindow dw, string cols[]);string

sql_dw_general, sql_dw_columns_type, sql_dw_headers_conf, sql_dw_columns_conf, ls_errors int i

long ll_colcount

string ls_colnametype

string ls_colname,ls_coltype

long ll_pos

ll_colcount = upperbound(cols)

//generals

sql_dw_general = "release 8;" &

+ "datawindow(units=0 timer_interval=0 color=16777215 processing=0 print.documentname=" + char(34) + "" + char(34) + " print.orientation = 0 print.margin.left = 110

print.margin.right = 110 print.margin.top = 96 print.margin.bottom = 96

print.paper.source = 0 print.paper.size = 0 print.prompt=no print.buttons=no

print.preview.buttons=no )" &

+ "header(height=72 color=" + char(34) + "536870912" + char(34) + " )" &

+ "summary(height=0 color=" + char(34) + "536870912" + char(34) + " )" &

+ "footer(height=0 color=" + char(34) + "536870912" + char(34) + " )" &

+ "detail(height=84 color=" + char(34) + "536870912" + char(34) + " )"

//列及类型

sql_dw_columns_type = "table("

FOR I=1 to ll_colcount

ls_colnametype = trim(cols)

ls_colname = right(ls_colnametype,len(ls_colnametype) - 1)

ls_coltype = left(ls_colnametype,1)

choose case upper(ls_coltype)

case 'C'

ls_coltype = 'char(100)'

case 'D'

ls_coltype = 'date'

case 'N'

ls_coltype = 'decimal(6)'

case else

ls_coltype = 'char(100)' end choose

//ls_coltype = 'char(100)'

//列及类型

sql_dw_columns_type= sql_dw_columns_type + "column=(type=" +ls_coltype+" updatewhereclause=no name=" + ls_colname + " dbname=" + char(34) + ls_colname +

char(34) + " ) "

//列标题

sql_dw_headers_conf = sql_dw_headers_conf + "text(band=header alignment=" +

char(34) + "2" + char(34) + " text=" + char(34) + ls_colname + char(34) + "

border=" + char(34) + "6" + char(34) + " color=" + char(34) + "16711680" +

char(34) + " x=" + char(34) + string( ((i - 1) * 588) + 5) + char(34) + " y="

+ char(34) + "4" + char(34) + " height=" + char(34) + "64" + char(34) + "

width=" + char(34) + "574" + char(34) + " name=" + ls_colname + "_t

font.face=" + char(34) + "Arial" + char(34) + " font.height=" + char(34) + "-10" + char(34) + " font.weight=" + char(34) + "400" + char(34) + "

font.family=" + char(34) + "2" + char(34) + " font.pitch=" + char(34) + "2" +

char(34) + " font.charset=" + char(34) + "0" + char(34) + "

background.mode=" + char(34) + "2" + char(34) + " background.color=" + char(34) + "12632256" + char(34) + " )"

//列属性

sql_dw_columns_conf = sql_dw_columns_conf + "column(band=detail id=" +

string(i) + " alignment=" + char(34) + "1" + char(34) + " tabsequence=" + string(i)

+ "0 border=" + char(34) + "2" + char(34) + " color=" + char(34) + "0" +

char(34) + " x=" + char(34) + string( ((i - 1) * 588) + 5) + char(34) + " y="

+ char(34) + "4" + char(34) + " height=" + char(34) + "76" + char(34) + "

width=" + char(34) + "579" + char(34) + " format=" + char(34) + "[general]" +

char(34) + " name=" + ls_colname + " edit.limit=0 edit.case=any edit.autoselect=yes edit.autohscroll=yes font.face=" + char(34) + "Arial" + char(34) + " font.height="

+ char(34) + "-10" + char(34) + " font.weight=" + char(34) + "400" + char(34) +

" font.family=" + char(34) + "2" + char(34) + " font.pitch=" + char(34) + "2" + char(34) + " font.charset=" + char(34) + "0" + char(34) + " background.mode=" +

char(34) + "1" + char(34) + " background.color=" + char(34) + "536870912" + char(34)

+ " )"

NEXT

sql_dw_columns_type= sql_dw_columns_type + " )"

sql_dw_columns_conf = sql_dw_columns_conf + "htmltable(border=" + char(34) + "1" +

char(34) + " cellpadding=" + char(34) + "0" + char(34) + " cellspacing=" + char(34)

+ "0" + char(34) + " generatecss=" + char(34) + "no" + char(34) + " nowrap=" +

char(34) + "yes" + char(34) + ")"

//MESSAGEBOX('',sql_dw_general + sql_dw_columns_type + sql_dw_headers_conf +

sql_dw_columns_conf)

dw.Create(sql_dw_general + sql_dw_columns_type + sql_dw_headers_conf +

sql_dw_columns_conf , ls_errors)

return(ls_errors)

end function

40、如何让datawindow的heade带区r的内容只打印一次?

答:a、制作两个数据窗口,第一个有表头,第二个没有。

b、用第一个有表头的数据读取数据库中的数据

c、打印有表头的数据窗口中的第一页,记住结束行号

d、将从结束行号开始的所有数据复制到第二个数据窗口中

e、打印第二个数据窗口

41、交叉报表在retrieve后,其datawindow的宽度怎么获得啊?

答://=============================

// [PUBLIC] Function wf_settitle_length 在 w_search_report inherited from window //----------------------------

// 说明:设置表头长度

//----------------------------

// 参数1:[reference] datawindow adw_1

// 说明:报表DW

//--------------------------------------

// 返回: (INTEGER) 成功返回1,不成功返回0

//------------------------------------

// 作者: cwl 日期: 2001.12.15

//======================================

Long Row

String List

string token[]

String tag_1

Integer StartPos = 1, EndPos, Top, i = 1 , index = 0

//取出DW中所有的对象存入token[]中

list = adw_1.Describe("datawindow. O B J E C Ts")

EndPos = pos(list, '~t', StartPos)

Do while ( EndPos > 0 )

token = Mid(list, StartPos, EndPos - StartPos)

i ++

StartPos = EndPos + 1

EndPos = pos(list, '~t', StartPos)

LOOP

token = Mid(list, StartPos)

Top = UpperBound(token[])

//找出最后一列

string ls_lastcol

int li_lastpos=0,li_thispos

For i = 1 to Top

CHOOSE CASE UPPER(adw_1.Describe(token + '.type'))

CASE 'COLUMN', 'COMPUTE'

li_thispos = integer(adw_1.Describe(token + '.X'))

if li_thispos>=li_lastpos then //这是目前最后一列

li_lastpos=li_thispos

ls_lastcol=token

end if

end choose

NEXT

//设置表头长度

string ls_change

ls_change="800~tlong(describe('"+ls_lastcol+".x')) + long(describe('"+ls_lastcol +".width')) + 10"

//messagebox('',ls_change)

adw_1.modify('title.width="'+ls_change+'"')

return 1

42、如何在数据窗中得到自动高的列的高度?

答:desceibe("evaluate('RowHeight()',3)") //获得第三行的row的高度

42、如何使dw的列不可移动,不可调整列宽?

答:在datawindow的cilcked事件写

if row=0 then

return 1

end if

43.光标跳转到数据窗口的某一行某一列

dw_1.scrolltorow(ll_row)

dw_1.setcolumn(ll_column)

44 如何使光标指向每页第一行?

long ll_firstrowonpage=long(dw_1.describe("datawindow.firstrowonpage")) dw_1.scrolltorow

(ll_firstrowonpage) dw_1.setrow(ll_firstrowonpage) 45. Grid的窗口如何使第一列固定不动?

①选上data OBJECT的HSplitScroll属性

②在constructor事件中:

dw_1.Object.DataWindow.HorizontalScrollSplit=integer(dw_1.describe("#1.width")) //第一列的宽度

③在scrollhorizontal事件中:

int i if pane = 1 then i = integer(this.OBJECT.datawindow.horizontalscrollposition2) if i < 1 or isnull(i) then return if scrollpos > 0 then this.OBJECT.datawindow.horizontalScrollPosition = 0 end if else i = integer(this.Object.DataWindow.HorizontalScrollSplit) if i < 1 or isnull(i) then

return if i > scrollpos then this.OBJECT.datawindow.horizontalScrollPosition2 = i end if end if 46. 怎样取子数据窗口的总列数 ll_column_count=integer(dwc.describe("datawindow.column.count")) //dwc为子窗口

47.在数据窗口过滤以后,计算列值如何才能一起改变? dw_1.setfilter(filter_condition) dw_1.filter() dw_1.groupcalc()

48.怎么改变某一列的背景颜色?

dw_1.Modify("sno.background.mode=2" )

dw_1.Modify ( "sno.background.Color='255'" )

49.在数据窗口中如何delete选中的多行?

Long ll_rows , ll_row

ll_rows=DW_1.RowCount()

for ll_row = ll_rows to 1 step -1

if dw_1.isSelected(ll_row) then

dw_1.DeleteRow(ll_row)

end if

next

50.如何改变列的字体颜色,提醒用户此列已做修改

在列的Color属性中,输入如下表达式

IF (column_name < >column_name.Original, RGB(255, 0, 0), RGB(0, 0, 0))

51.数据窗口中限定某列不可编辑用DataWindow的clicked事件中的方法也可以实现列的保护。若

某列不可更改,则可置protect=0。即:

dw_1.modify("columnname.protect=0")

或dw_1.modify("#"+string(number)+".protect=0")

若要将该列改为可更改,则置protect=1,即:

dw_1.modify("columnname.protect=1")

或dw_1.modify("#"+string(number)+".protect=1")

此方法不影响Tab键的移动,用户可以随意拉动列,还可在应用过

程中自己决定哪一列可编辑,哪一列不可编辑。

52.怎样去掉上图中数据窗口中的黑影?

this.Modify ("DataWindow.selected.mouse=no")

this.Modify ("DataWindow.Grid.ColumnMove = false")

53 实现逐行增加求和

使用计算列:CumulativeSum(field for all),即可达到逐渐递增求和的功能

54 快速删除多行

方法是把要删除的行从主缓冲区中移到删除缓冲区中。例如,删除缓冲区中所有的行: dw_1.RowsMove(dw_1, 1, dw_1.RowCount, Primary!, dw_1, 1, Delete!)

58、在分组的header上加序号

答:建立计算域,expression:cumulativeSum( If (jlxm = jlxm[-1],0,1) for all)

59、为什么varchar字段类型的列只能保存255个字符?

答:设置事务处理对象的dbparm属性即可

示例:

SQLCA.dbParm = "DBTextLimit = '9999'"

60、点击grid类型数据窗口的header,自动排序。(图片自己做)

/*

*args: i_str_oldcol

*note:实例变量,纪录上次点击的列

*/

string i_str_oldcol

string str_ O B J E C Tname, str_curcol, str_addpic

integer int_pic_x

str_ O B J E C Tname =string (https://www.360docs.net/doc/e514325241.html,) //对象名称

if row = 0 and this.describe(str_ O B J E C Tname+".band") = "header" and this.describe(str_ O B J E C Tname+".text") <> "!" then //是否点击列对象

str_curcol = left(str_ O B J E C Tname,len(str_ O B J E C Tname) - 2) //当前列对象名称

if str_curcol <> i_str_oldcol then //点击的是不同列对象

this.modify("destroy p_sort") //不管有没有位图对象都删除

i_str_oldcol = str_curcol //保存上次点击的列对象

//画图

int_pic_x = integer(this.describe(str_ O B J E C Tname+".x")) + (integer(this.describe(str_ O B J E C Tname+".width")) - 70)

str_addpic = 'create bitmap(band = foreground filename= "..\pic\up.bmp" x=

"'+string(int_pic_x)+'" y= "24" height= "48" width= "48" border= "0" name= p_sort visible= "1")' this.modify(str_addpic) //动态画个图

this.setsort(str_curcol + " A") //头一次点击当然是升序了

this.sort()

else //当前列已经点过了

if this.describe("p_sort.filename") = "..\pic\up.bmp" then //上次是升序

this.modify("p_sort.filename = '..\pic\down.bmp'")

this.setsort(str_curcol + " D") //这次是降序

else

this.modify("p_sort.filename = '..\pic\up.bmp'")

this.setsort(str_curcol + " A")

end if

this.sort()

end if

end if

十个Word文档经典实用小技巧

1、Word表格玩自动填充 在Word表格里选中要填入相同内容的单元格,单击“格式→项目符号和编号”,进入“编号”选项卡,选择任意一种样式,单击“自定义”按钮,在“自定义编号列表”窗口中“编号格式”栏内输入要填充的内容,在“编号样式”栏内选择“无”,依次单击“确定”退出后即可。 2、Word中巧输星期 单击“格式→项目符号和编号”,进入“编号”选项卡,单击“自定义”按钮,在“编号样式”栏内选择“一、二、三”等样式,在“编号格式”栏内的“一”前输入“星期”即可。 3、粘贴网页内容 在Word中粘贴网页,只须在网页中复制内容,切换到Word中,单击“粘贴”按钮,网页中所有内容就会原样复制到Word中,这时在复制内容的右下角会出现一个“粘贴选项”按钮,单击按钮右侧的黑三角符号,弹出一个菜单,选择“仅保留文本”即可。 4、快速转换大写金额 在Word中输入12345,然后点击“插入→数字”命令,在弹出的“数字”对话框“数字类型”栏里选择中文数字版式“壹、贰、叁……”单击“确定”,则12345就变成中文数字“壹万贰仟叁佰肆拾伍”。 5、去掉自动编号功能

点击“工具→自动更正选项”,打开“自动更正”对话框,进入“键入时自动套用格式”选项卡,找到“键入时自动应用”组中的“自动编号列表”复选项,取消前面的钩即可。这样就可以去掉那些“烦心”的自动编号功能。同样也可去除“画布”,方法是:点击“工具→选项”,进入“常规”选项卡,去除“插入‘自选图形’时自动创建绘图画布”复选框上的钩即可。 6、画出不打折的直线 在Word中如果想画水平、垂直或“15、30、45、75”角的直线,只须在固定一个端点后,按住Shift键,上下拖动鼠标,将会出现上述几种直线选择,位置调整合适后松开Shift键即可。 7、加减乘除松输入 i和I在中文输入法智能ABC中有着特殊的意义,它们可以作为输入小写和大写中文数字的前导字符,还可以用来将数字运算符号变为相应的汉字,在i或I后面输入+、—、*、/,按回车键或空格键,即可得到与之对应的汉字加、减、乘、除。 8、部分加粗表格线 在Word中需要加粗某一条或几条表格线时,可以先在工具栏选项中点击“表格和边框”按钮,然后在“表格和边框”窗口选定“线型”与“线宽”,再点击“绘制表格”按钮,最后在欲加粗的表格线上从头到尾画上一笔即可。 9、打造整齐的Word公式

PowerBuilder数据窗口技巧

PB数据窗口技巧 1 使DataWindow列只能追加不能修改 如何使DataWindow中的数据只能追加新记录而不能修改,利用Column 的Protect 属性可以很方便的做到这一点,方法如下: 将每一列的Protect 属性设置为: If( IsRowNew(), 0, 1) ) 在PowerScript 中可以动态修改Protect 属性: dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'") 这样,DataWindow 中只有新追加的记录可修改,而其他记录是只读的。 2 如何在DataWindow中实现列的自动折行 我们在PowerBuilder应用程序的开发过程中, 使用DataWindow时, 经常会遇 到某列的数据太长, 不能同时全部显示的情况. 若采用自动水平滚动, 操作起 来又不够简便. 下面介绍一种方法, 实现列数据多行显示, 即实现列数据的自 动折行.具体步骤如下: 1) 在DataWindow Painter中打开此DataWindow. 2) 在需设定自动折行的列上双击鼠标, 弹开此列的属性窗口. 3) 选择Position标签, 选中Autosize Height 多选框. 4) 选择Edit标签, 不选中Auto Horz Scroll多选框. 5) 单击OK按钮, 保存所做的修改. 6) 点中Detail Band (即写有Detail的灰色长带), 单击鼠标右键, 选择 Properties... 菜单项. 7) 选中Autosize Height多选框. 8) 单击OK按钮, 保存所做的修改. 9) 保存此DataWindow. 注意: 连在一起的汉字(中间没有标点或空格分隔), 系统将认为是一个单词, 不 会自动进行折行.

个人总结的一些WORD使用小技巧

Word 使用技巧 1、使用插入数字功能插入大写数字。柒拾柒万壹仟壹佰肆拾壹 2、将姓名按笔划顺序排序王健王云平刘兴盛何平候喜强徐 冬 3、快速插入日期和时间 插入日期:ALT + SHIFT + D 插入 时间:ALT +SHIFT +T 2019-09-14。17:46:52 4、使日期和时间自动更新 按下CTRL +SHIFT +F9 后日期和时间变为文本,不再更新。2006-12-21 5:46:52 下午 5、使用矽以上数字。点击工具栏上带圈数字即可。 6、多次使用格式刷。其实只要双击“格式刷”按钮,用户可以将选定格式复制到多个位置。再次单击格式刷或按下“ Esc”即可关闭格式刷。 7、使用拖放方式复制网页内容。使用Windows 最常见的拖放功能,选中网页上的内容,按住鼠标左键不放,拖到Word 窗口,然后释放鼠标左键,网页的内容就被完整复制了。 8、使光标每次移动一个段落。在编辑Word 文档的时候,如果需要在段落之间移动,可以使用Word 提供的一个快捷键只需按住

Ctrl 键,然后再按下方向键中的向上或向下键,这样就可以使光标依次向上或向下移动一个段落。 9、巧用“选择性粘贴”中的“无格式文本。 10、快速显示文字格式。按下Shift+F1 组合键,然后 单击需要查询格式的文字。如果不需要文字格式的显示,可以按下Esc 键取消。 11、在Word 中用另类方法复制文本。选定需要复制的文字,按下Shift+F2 组合键,这时状态栏上会显示“复制到何处”的字样,然后将光标移动到目标处并按下回车键即可完成复制。 12、WORD 字体随身携带。要想即不在另一台电脑上安装该字体,又要正确打印出该文档,我们可以这样做:执行工具T选项”命令,打开选项”对话框,点击保存” 标签,选中“嵌入TrueType 字体”,这样就可以把创建此文档所用的TrueType 字体与文档保存在一起,当在另一台电脑上打开此文档时,仍可用这些字体来查看和打印文档。注意:①如果想实现此目的,必须对该文档使用一种新的样式;②你想嵌入的字体只能是True Type字体; ③这样的文档容量比较大,为了减小文档的体积,可同时选中“只嵌入所用字符”选项;④在另一台电脑上打开该文档时,不能对嵌入的字体文本进行修改,否则会使嵌入的字体丢失。 13、快速输入特定的短语。我们在用WORD2000/XP 进行文档

pb数据窗口技巧38个 收藏

pb数据窗口技巧38个收藏 1 使DataWindow列只能追加不能修改 如何使DataWindow中的数据只能追加新记录而不能修改,利用Column 的Protect 属性可以很方便的做到这一点,方法如下:将每一列的Protect 属性设置为: If( IsRowNew(), 0, 1) ) 在PowerScript 中可以动态修改Protect 属性: dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'") 这样,DataWindow 中只有新追加的记录可修改,而其他记录是只读的。 2 如何在DataWindow中实现列的自动折行 我们在PowerBuilder应用程序的开发过程中, 使用DataWindow时, 经常会遇 到某列的数据太长, 不能同时全部显示的情况. 若采用自动水平滚动, 操作起 来又不够简便. 下面介绍一种方法, 实现列数据多行显示, 即实现列数据的自 动折行.具体步骤如下: 1) 在DataWindow Painter中打开此DataWindow. 2) 在需设定自动折行的列上双击鼠标, 弹开此列的属性窗口. 3) 选择Position标签, 选中Autosize Height 多选框. 4) 选择Edit标签, 不选中Auto Horz Scroll多选框. 5) 单击OK按钮, 保存所做的修改. 6) 点中Detail Band (即写有Detail的灰色长带), 单击鼠标右键, 选择 Properties... 菜单项. 7) 选中Autosize Height多选框. 8) 单击OK按钮, 保存所做的修改.

WORD使用技巧大全(史上最强哦)

答:分节,每节可以设置不同的页眉。文件——页面设置——版式——页眉和页脚——首页不同 2.问:请问word中怎样让每一章用不同的页眉?怎么我现在只能用一个页眉,一改就全部改了?答:在插入分隔符里,选插入分节符,可以选连续的那个,然后下一页改页眉前,按一下“同前”钮,再做的改动就不影响前面的了。简言之,分节符使得它们独立了。这个工具栏上的“同前”按钮就显示在工具栏上,不过是图标的形式,把光标移到上面就显示出”同前“两个字来了 3.问:如何合并两个WORD文档,不同的页眉需要先写两个文件,然后合并,如何做?答:页眉设置中,选择奇偶页不同/与前不同等选项 4.问:WORD编辑页眉设置,如何实现奇偶页不同? 比如:单页浙江大学学位论文,这一个容易设;双页:(每章标题),这一个有什么技巧啊 ?答:插入节分隔符,与前节设置相同去掉,再设置奇偶页不同 5.问:怎样使WORD文档只有第一页没有页眉,页脚?答:页面设置-页眉和页脚,选首页不同,然后选中首页页眉中的小箭头,格式-边框和底纹,选择无,这个只要在“视图”——“页眉页脚”,其中的页面设置里,不要整个文档,就可以看到一个“同前”的标志,不选,前后的设置情况就不同了。 6.问:如何从第三页起设置页眉?答:在第二页末插入分节符,在第三页的页眉格式中去掉同前节,如果第一、二页还有页眉,把它设置成正文就可以了 ●在新建文档中,菜单—视图—页脚—插入页码—页码格式—起始页码为0,确定; ●菜单—文件—页面设置—版式—首页不同,确定;

●将光标放到第一页末,菜单—文件—页面设置—版式—首页不同—应用于插入点之后,确定。第2步与第三步差别在于第2步应用于整篇文档,第3步应用于插入点之后。这样,做两次首页不同以后,页码从第三页开始从1编号,完成。 7.问:WORD页眉自动出现一根直线,请问怎么处理?答:格式从“页眉”改为“清除格式”,就在“格式”快捷工具栏最左边;选中页眉文字和箭头,格式-边框和底纹-设置选无 8.问:页眉一般是---------,上面写上题目或者其它,想做的是把这根线变为双线,WORD中修改页眉的那根线怎么改成双线的?答:按以下步骤操作去做: ●选中页眉的文字,包括最后面的箭头 ●格式-边框和底纹 ●选线性为双线的 ●在预览里,点击左下小方块,预览的图形会出现双线 ●确定▲上面和下面自己可以设置,点击在预览周围的四个小方块,页眉线就可以在不同的位置 9.问:Word中的脚注如何删除?把正文相应的符号删除,内容可以删除,但最后那个格式还在,应该怎么办?答:步骤如下:1、切换到普通视图,菜单中“视图”——“脚注”,这时最下方出现了尾注的编辑栏。2、在尾注的下拉菜单中选择“尾注分隔符”,这时那条短横线出现了,选中它,删除。3、再在下拉菜单中选择“尾注延续分隔符”,这是那条长横线出现了,选中它,删除。4、切换回到页面视图,尾注和脚注应该都是一样的

PB 数据窗口高级( DataWindow)应用37个技巧

PB 数据窗口高级( DataWindow) 37个技巧 1. 使DataWindow列只能追加不能修改 如何使DataWindow中的数据只能追加新记录而不能修改,利用Column 的Protect 属性可以很方便的做到这一点,方法如下: 将每一列的Protect 属性设置为: If( IsRowNew(), 0, 1) ) 在PowerScript 中可以动态修改Protect 属性: dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'") 这样,DataWindow 中只有新追加的记录可修改,而其他记录是只读的。 2 .如何在DataWindow中实现列的自动折行 我们在PowerBuilder应用程序的开发过程中, 使用DataWindow时, 经常会遇 到某列的数据太长, 不能同时全部显示的情况. 若采用自动水平滚动, 操作起 来又不够简便. 下面介绍一种方法, 实现列数据多行显示, 即实现列数据的自 动折行.具体步骤如下: 1) 在DataWindow Painter中打开此DataWindow.

2) 在需设定自动折行的列上双击鼠标, 弹开此列的属性窗口. 3) 选择Position标签, 选中Autosize Height 多选框. 4) 选择Edit标签, 不选中Auto Horz Scroll多选框. 5) 单击OK按钮, 保存所做的修改. 6) 点中Detail Band (即写有Detail的灰色长带), 单击鼠标右键, 选择Properties... 菜单项. 7) 选中Autosize Height多选框. 8) 单击OK按钮, 保存所做的修改. 9) 保存此DataWindow. 注意: 连在一起的汉字(中间没有标点或空格分隔), 系统将认为是一个单词, 不 会自动进行折行. 3. 在数据窗口中实现动画 要实现动画,必须要有定时器,在数据窗口中已经有了一个定时器,双击数据窗口将弹出的对话框,在Timer Interval中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。比如要改变某字段的背景颜色,可设 ackgound.color=RGB(Integer(Right(string(now(),'hhmmssf'),1))*256/10,In teger(Right(string(now(),'hhmmssf'),1))*256/10,0) 当然,您不仅可以改变背景颜色,而且可以改变字体等等任何属

word使用技巧大全

1 常用快捷键 Ctrl+C 复制所选文本或对象 Ctrl+C连续2次调出剪切板 Ctrl+X 剪切所选文本或对象 Ctrl+V 粘贴文本或对象 Ctrl+] 逐磅增大字号 Ctrl+[ 逐磅减小字号 Shift+Enter 换行符 Ctrl+Enter 分页符 Ctrl+A 包含整篇文档 F1 显示当前程序或者winodws的帮助内容。 F2 选中一个文件“重命名” F3 在桌面时打开“查找:所有文件”对话框 ALT+TAB 切换当前程序 ALT+ESC 切换当前程序 PRINTSCREEN 将当前屏幕以图象方式拷贝到剪贴板ALT+PRINTSCREEN 将当前活动程序窗口以图象方式拷贝到剪贴板 winodws键或CTRL+ESC 打开开始菜单 Windows徽标键+TAB键在任务栏上的按钮间循环 Windows徽标键+E键启动“我的电脑” Windows徽标键+D键快速显示桌面 Windows徽标键+R键执行“运行”命令 Windows徽标键+F键搜索文件或者文件夹 Windows徽标键+F1键显示Windows帮助 Windows徽标+PRINTSCREEN 将屏幕复制到剪贴板(包括鼠标光标)Windows徽标+SCROLLLOCK 将屏幕复制到剪贴板(不包括鼠标光标)

2 图形技巧 2.1 绘制图形的技巧 2.1.1 画直线 画直线的同时按着Shift键,将可以画出15°、30°、45°、60°、75°等具有特殊角度的直线。按住Ctrl键可画出自中间向两侧延伸的直线,同时按住这两个键则可画出自中间向两侧延伸的具有特殊角度的直线。 2.1.2 画弧 按住Shift键的同时可画出45度圆弧(画圆弧方法:打开绘图工具栏,单击“自选图形/基本形状/弧形”),按住Ctrl键可画出自中间向两侧延伸的圆弧,同时按住这两个键则可画出自中间向两侧延伸的45°圆弧,按住Alt键可画出一端固定的圆弧,同时按住Ctrl和Alt键则可画出一端固定的45°圆弧。 2.1.3 画矩形 按住Shift键可绘制出一个特殊的矩形——正方形,按住Ctrl键可绘出自中间向四周延伸的矩形,同时按住这两个键则可画出自中间向四周延伸的正方形。画圆时与此类似。 由此可见结合键盘画图的奇妙效果。 2.2 选择图形的技巧 如果需要选择部分图形,则可在按住Shift键的同时依次进行选择或单击绘图工具栏上的“选择对象”按钮,然后用鼠标画出一个框将所需要的图形罩住即可。 如果是各图形层叠在一起的情况,则可以首先选中最上面的图形,然后按Tab键或“Shift+Tab”组合键依次选择即可。 小提示:如果你发现某图形选择起来很困难(鼠标变不成十字形状),这种情况常发生在多个图形混杂在一起的情况,同样点击“选择对象”按钮后你会发现选择很容易。

PB数据窗口使用绝对技巧与方法

原文地址:PB数据窗口绝对技巧作者:千人急 1、如何让存储文件目录的列,显示图片? 答:选择对应的column的display as picture属性为true 2、如何复制grid类型的所选择的行的数据到系统剪切板? 答:string ls_selected ls_selected=dw_1.Object.DataWindow.Selected.Data clipbord(ls_selected) 4、如何设置的DW底色? 在DW的editsource中改变color的值 5、如何将Grid风格改成自由格式? 在DW的editsource中将processing=1的1改为0 6、要新建一个表A但风格和现有表格B风格一样,怎么将A表快速设置成表B 风格? 复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可 7、如何实现gird风格的datawindow的多栏表头? 答:添加 text到header带区,并设置band属性为foreground保存,edit source 修改text的x和width属性表达式如下: x="100~t integer(describe('firstcol.x')" width="100~tinteger(describe('lastcol.x')) - integer(describe('firstcol.x')) +integer(describe('lastcol.width')) 8、如何过滤dddw编辑风格的显示值为指定值的记录? 答: dw_1.setfilter("lookupdisplay('column_name')='"+ls_display_value_your +"'") dw_1.filter() 9、如何设置datawindow的某一列为空?

WORD使用技巧大全(史上最强哦)

1.问:WORD里边怎样设置每页不同的页眉?如何使不同的章节显示的页眉不同? 答:分节,每节可以设置不同的页眉。文件——页面设置——版式——页眉和页脚——首页不同 2.问:请问word中怎样让每一章用不同的页眉?怎么我现在只能用一个页眉,一改就全部改了?答:在插入分隔符里,选插入分节符,可以选连续的那个,然后下一页改页眉前,按一下“同前”钮,再做的改动就不影响前面的了。简言之,分节符使得它们独立了。这个工具栏上的“同前”按钮就显示在工具栏上,不过是图标的形式,把光标移到上面就显示出”同前“两个字来了 3.问:如何合并两个WORD文档,不同的页眉需要先写两个文件,然后合并,如何做?答:页眉设置中,选择奇偶页不同/与前不同等选项 4.问:WORD编辑页眉设置,如何实现奇偶页不同? 比如:单页浙江大学学位论文,这一个容易设;双页:(每章标题),这一个有什么技巧啊?答:插入节分隔符,与前节设置相同去掉,再设置奇偶页不同 5.问:怎样使WORD文档只有第一页没有页眉,页脚?答:页面设置-页眉和页脚,选首页不同,然后选中首页页眉中的小箭头,格式-边框和底纹,选择无,这个只要在“视图”——“页眉页脚”,其中的页面设置里,不要整个文档,就可以看到一个“同前”的标志,不选,前后的设置情况就不同了。 6.问:如何从第三页起设置页眉?答:在第二页末插入分节符,在第三页的页眉格式中去掉同前节,如果第一、二页还有页眉,把它设置成正文就可以了

●在新建文档中,菜单—视图—页脚—插入页码—页码格式—起始页码为0,确定; ●菜单—文件—页面设置—版式—首页不同,确定; ●将光标放到第一页末,菜单—文件—页面设置—版式—首页不同—应用于插入点之后,确定。第2步与第三步差别在于第2步应用于整篇文档,第3步应用于插入点之后。这样,做两次首页不同以后,页码从第三页开始从1编号,完成。 7.问:WORD页眉自动出现一根直线,请问怎么处理?答:格式从“页眉”改为“清除格式”,就在“格式”快捷工具栏最左边;选中页眉文字和箭头,格式-边框和底纹-设置选无 8.问:页眉一般是---------,上面写上题目或者其它,想做的是把这根线变为双线,WORD中修改页眉的那根线怎么改成双线的?答:按以下步骤操作去做: ●选中页眉的文字,包括最后面的箭头 ●格式-边框和底纹 ●选线性为双线的 ●在预览里,点击左下小方块,预览的图形会出现双线 ●确定▲上面和下面自己可以设置,点击在预览周围的四个小方块,页眉线就可以在不同的位置

PB数据窗口绝对技巧

PB数据窗口绝对技巧 1、如何让存储文件目录的列,显示图片? 选择对应的column的display as picture属性为true。 2、如何复制grid类型的所选择的行的数据到系统剪切板? string ls_selected ls_selected=dw_1.Object.DataWindow.Selected.Data clipbord(ls_selected) 3:如何改变GRID数据窗口列位置(新手常见) 先preview,然后在预览窗口拖动位置即可。 4、如何设置DW的底色? 在DW的editsource中改变color的值。 5、如何将Grid风格改成自由格式? 在DW的editsource中将processing=1的1改为0。 6、要新建一个表A但风格和现有表B风格一样,怎么将A表快速设置成表B风格? 复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可。 7、如何实现gird风格的datawindow的多栏表头? 添加text到header带区,并设置band属性为foreground保存,edit source修改tex t的x和width属性表达式如下: x="100~t integer(describe('firstcol.x')" width="100~tinteger(describe('lastcol.x')) - int eger(describe('firstcol.x')) +integer(describe('lastcol.width')) 8、如何过滤dddw编辑风格的显示值为指定值的记录? dw_1.setfilter("lookupdisplay('column_name')='"+ls_display_value_your+"'") dw_1.filter() 9、如何设置datawindow的某一列为空? string ls_temp[] setnull(ls_temp) dw_1.object.columnname.primary.current=ls_temp 10、如何设置datawindow的单双行不同颜色间隔? 在detail带区的color属性表达式中写上if(mod (getrow(),2)=1 ,rgb(255,0,0),rgb(0,25 5,0)),如果是当前行以第三种颜色表示,表达式如下:if(getrow()=current(), rgb(255,0,0),if(m od(getrow(),2)=1 ,rgb(0,0,255),rgb(0,255,0))) 11、如何获取指定名称的datawindowobject? DWObject ldwo_use,ldwo_abc ldwo_use = dw_1.Object ldwo_abc = ldwo_use._ _get_attribute("t_1",FALSE)//t_1为datawindow中text对象的名称 12、如何缩放datawindow的打印大小?

十个绝对经典的word排版小技巧+WORD经典快捷100招

十个word排版小技巧,轻松做好文档! 一、快速定位到上次编辑位置 用WPS编辑文件时有一个特点,就是当你下次打开一WPS文件时,光标会自动定位到你上一次存盘时的位置。不过,Word却没有直接提供这个功能,但是,当我们在打开Word文件后,如果按下Shift+F5键您就会发现光标已经快速定位到你上一次编辑的位置了。 小提示:其实Shift+F5的作用是定位到Word最后三次编辑的位置,即Word会记录下一篇文档最近三次编辑文字的位置,可以重复按下Shift+F5键,并在三次编辑位置之间循环,当然按一下Shift+F5就会定位到上一次编辑时的位置了。 二、快速插入当前日期或时间 有时写完一篇文章,觉得有必要在文章的末尾插入系统的当前日期或时间,一般人是通过选择菜单来实现的。其实我们可以按Alt+Shift+D 键来插入系统日期,而按下Alt+Shift+T组合键则插入系统当前时间,很快! 三、快速多次使用格式刷 Word中提供了快速多次复制格式的方法:双击格式刷,你可以将选定格式复制到多个位置,再次单击格式刷或按下Esc键即可关闭格式刷。 四、快速打印多页表格标题 选中表格的主题行,选择"表格"菜单下的"标题行重复"复选框,当你预览或打印文件时,你就会发现每一页的表格都有标题了,当然使用这个技巧的前提是表格必须是自动分页的。 五、快速将文本提升为标题 首先将光标定位至待提升为标题的文本,当按Alt+Shift+←键,可把文本提升为标题,且样式为标题1,再连续按Alt+Shift+→键,可将

标题1降低为标题2、标题3……标题9。 六、快速改变文本字号 Word的字号下拉菜单中,中文字号为八号到初号,英文字号为5磅到72磅,这对于一般的办公人员来说,当然已经绰绰有余了。但在一些特殊情况下,比如打印海报或机关宣传墙报时常常要用到更大的字体,操作起来就有些麻烦了。其实,我们完全也可以快速改变文本的字号:先在Word中选中相关汉字,然后用鼠标单击一下工具栏上的字号下拉列表框,直接键入数值,即可快速改变您的字体大小。而且这个技巧在Excel和WPS2000/Office中同样适用。 小提示:其实,小编还有两种快速更改Word文本字号的方法: 1.选中文字后,按下Ctrl+Shift+>键,以10磅为一级快速增大所选定文字字号,而按下Ctrl+Shift+键> 2.选中文字后,按Ctrl+]键逐磅增大所选文字,按Ctrl+[键逐磅缩小所选文字。 七、快速设置上下标注 首先选中需要做上标文字,然后按下组合键Ctrl+Shift+=就可将文字设为上标,再按一次又恢复到原始状态;按Ctrl+=可以将文字设为下标,再按一次也恢复到原始状态。 小提示:详见本刊前期《WordXP中神奇的Ctrl键》一文,掌握一些快捷按键对快速、高效操作Word很有借鉴意义。 八、快速取消自动编号 虽然Word中的自动编号功能较强大,但是据笔者试用,发现自动编号命令常常出现错乱现象。其实,我们可以通过下面的方法来快速取消自动编号。 1.当Word为其自动加上编号时,您只要按下Ctrl+Z键反悔操作,此时自动编号会消失,而且再次键入数字时,该功能就会被禁止了;

22个经典的Word 2010小技巧

22个经典的Word 2010小技巧 总结:22个经典的Word 2010小技巧 时间:2010-10-20 13:54 浏览: 28次作者:未知来源:互联网评论: 0条在使用Word时中使用过一些小技巧,发现很不错,对文字处理方面很有帮助,现整理如下: 1、Word表格玩自动填充 在Word表格里选中要填入相同内容的单元格,单击“格式→项目符号和编号”,进入“编号”选项卡,选择任意一种样式,单击“自定义”按钮,在“自定义编号列表”窗口中“编号格式”栏内输入要填充的内容,在“编号样式”栏内选择“无”,依次单击 “确定”退出后即可。 2、Word中巧输星期 单击“格式→项目符号和编号”,进入“编号”选项卡,单击“自定义 ”按钮,在“编号样式”栏内选择“ 一、二、三”等样式,在“编号格式”栏内的“一”前输入“星期”即可。 3、粘贴网页内容

在Word中粘贴网页,只须在网页中复制内容,切换到Word中,单击“粘贴”按钮,网页中所有内容就会原样复制到Word中,这时在复制内容的右下角会出现一个“粘贴选项”按钮,单击按钮右侧的黑三角符号,弹出一个菜单,选择“仅保留文本” 即可。 4、快速转换大写金额 在Word中输入12345,然后点击“插入→数字”命令,在弹出的“数字”对话框 “数字类型”栏里选择中文数字版式“壹、贰、叁…… ”单击“确定 ”,则12345就变成中文数字“壹万贰仟叁佰肆拾伍”。 5、去掉自动编号功能 点击“工具→自动更正选项”,打开“自动更正”对话框,进入“键入时自动套用格式”选项卡,找到“键入时自动应用”组中的“自动编号列表”复选项,取消前面的钩即可。这样就可以去掉那些“烦心” 的自动编号功能。同样也可去除“画布”,方法是:点击“工具→选项”,进入“常规”选项卡,去除“插入‘自选图形

办公自动化之——60个word使用小技巧

1 办公自动化之——60个word使用小技巧 1、Word表格自动填充 在Word表格里选中要填入相同内容的单元格,单击“格式→项目符号和编号”,进入“编号”选项卡,选择任意一种样式,单击“自定义”按钮,在“自定义编号列表”窗口中“编号格式”栏内输入要填充的内容,在“编号样式”栏内选择“无”,依次单击“确定”退出后即可。 2、Word中巧输星期 单击“格式→项目符号和编号”,进入“编号”选项卡,单击“自定义”按钮,在“编号样式”栏内选择“一、二、三”等样式,在“编号格式”栏内的“一”前输入“星期”即可。 3、粘贴网页内容 在Word中粘贴网页,只须在网页中复制内容,切换到Word中,单击“粘贴”按钮,网页中所有内容就会原样复制到Word中,这时在复制内容的右下角会出现一个“粘贴选项”按钮,单击按钮右侧的黑三角符号,弹出一个菜单,选择“仅保留文本”即可。 4、快速转换大写金额 在Word中输入12345,然后点击“插入→数字”命令,在弹出的“数字”对话框“数字类型”栏里选择中文数字版式“壹、贰、叁????? ? ? ”单击“确定”,则12345就变成中文数字“壹万贰仟叁佰肆拾伍”。 5、去掉自动编号功能 点击“工具→自动更正选项”,打开“自动更正”对话框,进入“键入时自动套用格式”选项卡,找到“键入时自动应用”组中的“自动编号列表”复选项,取消前面的钩即可。这样就可以去掉那些“烦心”的自动编号功能。同样也可去除“画布”,方法是:点击“工具→选项”,进入“常规”选项卡,去除“插入‘自选图形’时自动创建绘图画布”复选框上的钩即可。 6、画出不打折的直线 在Word中如果想画水平、垂直或“15o、30o、45o、75o”角的直线,只须在固定一个端点后,按住Shift键,上下拖动鼠标,将会出现上述几种直线选择,位置调整合适后松开Shift键即可。 7、加减乘除松输入

PB中协调多数据窗口数据操纵的一种解决方法

PB中协调多数据窗口数据操纵的一种解决方法 1、问题的提出 数据窗口是PB中检索、表现和操纵数据的对象。如果一个数据表的列不多,用单数据窗口操纵数据很易实现,但在实际应用中,数据表的列数动辄几十,甚至上百也并不少见,这时用单数据窗口滚动显然不方便,一个自然的想法是采用TAB控件和TAB页,在每个TAB页上放置一个数据窗口控件,每个数据窗口控件分门别类操纵数据表的列,但随之而来的问题是如何协调分布在这些数据窗口中录入或修改数据的存储,针对每个数据窗口发布一个UPDATE()函数的调用不可行。我们在实际开发中经过探索,增加一个后台的数据窗口做中介,解决了多数据窗口操纵数据的问题。 2、协调多数据窗口数据操纵的一种解决方法 基本思路是:在进行数据操纵的数据窗口控件之外,另外放置一个数据窗口控件,设置其不可见,并设其数据窗口对象为一个选择了数据表中所有列的数据窗口,其他数据窗口控件中录入或修改的数据实时地传送过来,对该控件的数据进行更新操作即可。 不失一般性,下面以PB自带数据库psDemoDB.db中的customer表的数据录入为例来说明。Customer表有"id","fname","lname","address","city","state","zip","phone","company"九个列,其中"id"为integer类型,其余均为char类型。 (1)创建数据窗口 建立三个数据窗口d_1、d_2、d_3,数据窗口d_1选"id","fname","lname"三列,d_2中选"address","city","state"三列,d_3选"zip",""phone","company_name"三列。再建立数据窗口d_4,选中数据表中的所有列。 (2)建TAB控件和TAB页 建立一个TAB控件tab_1,建立三个TAB页tabpage_1、tabpage_2、tabpage_3。 (3)建数据窗口控件 在(2)中建的三个TAB页中分别放置dw_1、dw_2、dw_3三个数据窗口控件,设其数据窗口对象分别为d_1、d_2、d_3。 另外,在窗口中放置一个数据窗口控件dw_4,不选其"visible"属性. (4)编写代码 在tabb1.tab_page_1.dw_1的editchanged事件中编写代码如下: //代码由此开始 //设置变量,id_value存放数据表中id列的值 int i_m,i_n,id_value string str_fname,str_lname //取dw_1当前的行数 i_m=tab_1.tabpage_1.dw_1.getrow() //取dw_4当前的行数 i_n=dw_4.getrow() //tab_1.tabpage_1.dw_1及dw_4接收浮在数据窗口控件表面的数据 tab_1.tabpage_1.dw_1.accepttext() dw_4.accepttext()

玩转word,22个经典小技巧

玩转word,22个经典小技巧 1、Word表格玩自动填充 在Word表格里选中要填入相同内容的单元格,单击“格式→项目符号和编号”,进入“编号”选项卡,选择任意一种样式,单击“自定义”按钮,在“自定义编号列表”窗口中“编号格式”栏内输入要填充的内容,在“编号样式”栏内选择“无”,依次单击“确定”退出后即可。 2、Word中巧输星期 单击“格式→项目符号和编号”,进入“编号”选项卡,单击“自定义”按钮,在“编号样式”栏内选择“一、二、三”等样式,在“编号格式”栏内的“一”前输入“星期”即可。 3、粘贴网页内容 在Word中粘贴网页,只须在网页中复制内容,切换到Word中,单击“粘贴”按钮,网页中所有内容就会原样复制到Word中,这时在复制内容的右下角会出现一个“粘贴选项”按钮,单击按钮右侧的黑三角符号,弹出一个菜单,选择“仅保留文本”即可。 4、快速转换大写金额 在Word中输入12345,然后点击“插入→数字”命令,在弹出的“数字”对话框“数字类型”栏里选择中文数字版式“壹、贰、叁……”单击“确定”,则12345就变成中文数字“壹万贰仟叁佰肆拾伍”。 5、去掉自动编号功能 点击“工具→自动更正选项”,打开“自动更正”对话框,进入“键入时自动套用格式”选项卡,找到“键入时自动应用”组中的“自动编号列表”复选项,取消前面的钩即可。这样就可以去掉那些“烦心”的自动编号功能。同样也可去除“画布”,方法是:点击“工具→选项”,进入“常规”选项卡,去除“插入‘自选图形’时自动创建绘图画布”复选框上的钩即可。 6、画出不打折的直线 在Word中如果想画水平、垂直或“15?、30?、45?、75?”角的直线,只须在固定一个端点后,按住Shift键,上下拖动鼠标,将会出现上述几种直线选择,位置调整合适后松开Shift键即可。 7、加减乘除松输入 i和I在中文输入法智能abc中有着特殊的意义,它们可以作为输入小写和大写中文数字的前导字符,还可以用来将数字运算符号变为相应的汉字,在i或I后面输入+、—、*、/,按回车键或空格键,即可得到与之对应的汉字加、减、乘、除。 8、部分加粗表格线 在Word中需要加粗某一条或几条表格线时,可以先在工具栏选项中点击“表格和边框”按钮,然后在“表格和边框”窗口选定“线型”与“线宽”,再点击“绘制表格”按钮,最后在欲加粗的表格线上从头到尾画上一笔即可。 9、打造整齐的Word公式 使用Word公式编辑器创建公式后,你如果感到其中的公式不整齐(特别是矩阵形式的公式),那么你可以通过下列方式进行微调:单击该公式,右键进入“设置对象格式”,选择“版式”中任意一种形式,单击“确定”,再选中需要调整的项;按下Ctrl键后,利用光标上下左右移动对该项进行微调;重复上下左右移动对该项进行微调;重复上述步骤,直到将公式位置调整到满意为止。 10、文字旋转轻松做 在Word中可以通过“文字方向”命令来改变文字的方向。但也可以用以下简捷的方法来做。选中要设置的文字内容,只要把字体设置成“@字体”就行,比如“@宋体”或“@黑体”,就可使这些文字逆时针旋转90度了。

pb数据窗口技巧

pb中datawindow常用技巧一 (2009-04-16 17:09:07) 转载▼ 分类:PowerBuilder 标签: 杂谈 pb中datawindow常用技巧一 1、如何让存储文件目录的列,显示图片? 答:选择对应的column的display as picture属性为true 2、如何复制grid类型的所选择的行的数据到系统剪切板? 答:string ls_selected ls_selected=dw_1.Object.DataWindow.Selected.Data clipbord(ls_selected) 4、如何设置的DW底色? 在DW的editsource中改变color的值 5、如何将Grid风格改成自由格式? 在DW的editsource中将processing=1的1改为0 6、要新建一个表A但风格和现有表格B风格一样,怎么将A表快速设置成表B风格? 复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可 7、如何实现gird风格的datawindow的多栏表头? 答:添加text到header带区,并设置band属性为foreground保存,edit source 修改text的x和width属性表达式如下:

x="100~t integer(describe('firstcol.x')" width="100~tinteger(describe('lastcol.x')) - integer(describe('firstcol.x')) +integer(describe('lastcol.width')) 8、如何过滤dddw编辑风格的显示值为指定值的记录? 答:dw_1.setfilter("lookupdisplay('column_name')='"+ls_display_value_your+"'") dw_1.filter() 9、如何设置datawindow的某一列为空? 答:string ls_temp[] setnull(ls_temp) dw_1.object.columnname.primary.current=ls_temp 10、如何设置datawindow的单双行不同颜色间隔? 答:在detail带区的color属性表达式中写上if(mod (getrow(),2)=1 ,rgb(255,0,0),rgb(0,255,0)),如果是当前行以第三种颜色表示,表达式如下:if(getrow()=current(), rgb(255,0,0),if(mod(getrow(),2)=1 ,rgb(0,0,255),rgb(0,255,0))) 11、如何获取指定名称的datawindowobject? 答:DWObject ldwo_use,ldwo_abc ldwo_use = dw_1.Object ldwo_abc = ldwo_use.__get_attribute("t_1",FALSE)//t_1为datawindow中text对象的名称12、如何缩放datawindow的打印大小? 答:dw_1.object.datawindow.zoom=150 or dw_1.object.datawindow.zoom=75 13、如何在已过滤后的数据基础上对datawindow进行过滤? 答: dw_1.setfilter(dw_1.describe("datawindow.table.filter")+your_join+your_new_filt er) dw_1.filter()

word使用中的小技巧

word使用中的小技巧 word2010使用中的小技巧 1、Word表格玩自动填充 在Word表格里选中要填入相同内容的单元格,单击“格式→项 目符号和编号”,进入“编号”选项卡,选择任意一种样式,单击“自定义”按钮,在“自定义编号列表”窗口中“编号格式”栏内 输入要填充的内容,在“编号样式”栏内选择“无”,依次单击 “确定”退出后即可。 2、Word中巧输星期 单击“格式→项目符号和编号”,进入“编号”选项卡,单击“自定义”按钮,在“编号样式”栏内选择“一、二、三”等样式,在“编号格式”栏内的“一”前输入“星期”即可。 3、粘贴网页内容 在Word中粘贴网页,只须在网页中复制内容,切换到Word中,单击“粘贴”按钮,网页中所有内容就会原样复制到Word中,这时 在复制内容的右下角会出现一个“粘贴选项”按钮,单击按钮右侧 的黑三角符号,弹出一个菜单,选择“仅保留文本”即可。 4、快速转换大写金额 在Word中输入12345,然后点击“插入→数字”命令,在弹出 的“数字”对话框“数字类型”栏里选择中文数字版式“壹、贰、叁……”单击“确定”,则12345就变成中文数字“壹万贰仟叁佰 肆拾伍”。 5、去掉自动编号功能 点击“工具→自动更正选项”,打开“自动更正”对话框,进入“键入时自动套用格式”选项卡,找到“键入时自动应用”组中的“自动编号列表”复选项,取消前面的钩即可。这样就可以去掉那

些“烦心”的自动编号功能。同样也可去除“画布”,方法是:点击“工具→选项”,进入“常规”选项卡,去除“插入‘自选图形’时自动创建绘图画布”复选框上的钩即可。 6、画出不打折的直线 在Word中如果想画水平、垂直或“15?、30?、45?、75?”角的直线,只须在固定一个端点后,按住Shift键,上下拖动鼠标,将会出现上述几种直线选择,位置调整合适后松开Shift键即可。 7、加减乘除松输入 i和I在中文输入法智能abc中有着特殊的意义,它们可以作为输入小写和大写中文数字的前导字符,还可以用来将数字运算符号变为相应的汉字,在i或I后面输入+、—、*、/,按回车键或空格键,即可得到与之对应的汉字加、减、乘、除。 8、部分加粗表格线 在Word中需要加粗某一条或几条表格线时,可以先在工具栏选项中点击“表格和边框”按钮,然后在“表格和边框”窗口选定“线型”与“线宽”,再点击“绘制表格”按钮,最后在欲加粗的表格线上从头到尾画上一笔即可。 9、打造整齐的Word公式 使用Word公式编辑器创建公式后,你如果感到其中的公式不整齐(特别是矩阵形式的公式),那么你可以通过下列方式进行微调:单击该公式,右键进入“设置对象格式”,选择“版式”中任意一种形式,单击“确定”,再选中需要调整的项;按下Ctrl键后,利用光标上下左右移动对该项进行微调;重复上下左右移动对该项进行微调;重复上述步骤,直到将公式位置调整到满意为止。 10、文字旋转轻松做 在Word中可以通过“文字方向”命令来改变文字的方向。但也可以用以下简捷的方法来做。选中要设置的文字内容,只要把字体

相关文档
最新文档