一、运行程序时报错提示
1> 在应该程式里的systemerror[]returns(none)
如下代码:
if err_sys=1 then
err_sys=0
return
else
open(w_system_error)
end if
2> 新建一个窗口命名:w_system_error
在窗口上列出以下内容
st_1:error code sle_1:error_code
st_2:error sle_2:error_programe
st_3:error line sle_3:error_line
st_4:error text sle_4:error_message
在open[]returns long[]
如下代码:
error_code.text=string(error.number)
if error.object=error.windowmenu then
error_programe.text="object:"+error.windowmenu + "~r~nevent:"+error.objectevent
else
error_programe.text="object:"+error.windowmenu + "." + error.object+ "~r~nevent:"+error.objectevent
end if
error_line.text=string(error.line)
error_message.text=(error.text)
***************************************************************************************************************
二、通用按钮的代码
1> ADD按钮的click事件
long tot,tot1,tot2
tot1 = dw_1.rowcount()
tot2=dw_1.insertrow(0)
tot=tot1+1
dw_1.setitem(tot2,1,tot)
dw_1.SetFocus()
dw_1.ScrollToRow(tot2)
dw_1.SetColumn(1)
st_rows.text=string(dw_1.rowcount()) //显示数据行数
----------------------------------------------------------------------------
2> DELETE按钮的click事件
if dw_1.rowcount()=0 then
return
end if
int p_message
p_message= MessageBox("WARNING","do you delete?",Exclamation!, OKCancel!, 2)
//删除数据后要做一次刷新
choose case p_message
case 1
dw_1.deleterow(dw_1.getrow())
cb_save.PostEvent(Clicked!)
end choose
-------------------------------------------------------------------------------
3> SAVE按钮的click事件
if dw_1.rowcount()=0 then
return
end if
if dw_1.update(true,false)=1 then
dw_1.resetUpdate()
commit;
messagebox("OK","The data is saved successfully!")
else
rollback;
end if
dw_1.SetRedraw(FALSE)
cb_search.PostEvent(Clicked!) //SAVE数据后从新SERACH数据
dw_1.SetRedraw(TRUE)
-------------------------------------------------------------------------------
4> 排序
定义:instance variables
Int click_time=0
String pre_col=""
String clicked_pos,col,format
Long il_pos
clicked_pos = dwo.Name // 取点击的对象
il_pos = Pos(clicked_pos,'_t') //对于列表题,取得的对象是列名+“_t”
If il_pos >0 Then
col = Left(clicked_pos,il_pos -1)
If col=pre_col Then
If click_time=0 Then
click_time = 1
format = col+" A"
Else
click_time=0
format = col+" D"
End If
Else
click_time = 0
format = col+" A"
End If
pre_col = col
dw_2.SetSort(format)
dw_2.Sort()
End If
-------------------------------------------------------------------------------
5> COPY按钮的click事件
if dw_1.rowcount()=0 then
return
end if
int selectrow,objectrow
selectrow=0
selectrow=dw_1.getrow()
if selectrow=1 then return
objectrow=selectrow+1
dw_1.RowsCopy(selectrow,selectrow, Primary!,dw_1,objectrow,primary!)
dw_1.ScrollToRow(objectrow) //滾動行copy本行到下一行
dw_1.object.detail[objectrow]=""
st_rows.text=string(dw_1.rowcount())
-------------------------------------------------------------------------------
6> EXCEL按钮的click事件
if dw_1.rowcount()=0 then
return
end if
dw_1.saveas('',excel!,true)
-------------------------------------------------------------------------------
7> PRINT按钮的click事件
if dw_1.rowcount()=0 then
return
end if
int p_message
p_message= MessageBox("WARNING","do you print?,~r~n YES,~r~n NO! ", &
Exclamation!, OKCancel!, 2)
choose case p_message
case 1
dw_1.print()
end choose
-------------------------------------------------------------------------------
8> SEARCH按钮的click事件
要在数据窗口里ARGUMENT设置三个参数
string s,c,w
s=trim(ddlb_s.text)
c=trim(ddlb_c.text)
w=trim(sle_w.text)
w=lower(w)
if s="" then
s="%"
else
s=s+"%"
end if
if c="" then
c="%"
else
c=c+"%"
end if
if w="" then
w="%"
else
w="%"+w+"%"
end if
dw_1.retrieve(s,c,w)
st_rows.text=string(dw_1.rowcount())
-------------------------------------------------------------------------------
9> RESET按钮的click事件
有数据的全部置空
dw_1.reset()
st_rows.text="0"
sle_w.text=""
ddlb_c.text=""
ddlb_s.text=""
-------------------------------------------------------------------------------
10> 鼠标右键功能的事件
首先:要做一个菜单 m_popup,子菜单为add,detele,copy
add的click事件代码:
long newrow
newrow=w_wording.dw_1.insertrow(0)
w_wording.dw_1.scrolltorow(newrow)
detele的click事件代码:
w_wording.dw_1.deleterow(0)
copy的click事件代码:
if w_wording.dw_1.rowcount()=0 then
return
end if
int selectrow,objectrow
selectrow=0
selectrow=w_wording.dw_1.getrow()
if selectrow=1 then return
objectrow=selectrow+1
第二步:在DW_1数据窗口的rbuttondown的事件下写如下代码
m_popup=CREATE m_popup
m_popup.PopMenu(parent.PointerX()+1, parent.PointerY()+1)
在DW_1数据窗口的click的事件下写如下代码
this.selectrow(0,false)
this.selectrow(row,true)
-------------------------------------------------------------------------------
三、导数据到EXCEL的方法:
1> 先COPY行,在写数据到行的单元格
做一个EXCEL模板 启用巨集 巨集代码如下:
Sub copy()
Range("a4:r4").Select //复制行
Selection.copy
End Sub
Sub paste(xrows As String)
Range(xrows).Select
ActiveSheet.paste
End Sub
在PB各式里写一个按钮的click事件(也可以写一个转EXCEL的函数)
long ret,i, rows
OLEObject xlapp
pointer oldpointer
oldpointer=setpointer(hourglass!)
xlApp = Create OLEObject
ret = xlApp.ConnectToNewObject( "Excel.Application" )
if ret < 0 then
MessageBox("Connect to Excel Failed !",string(ret))
setpointer(oldpointer)
return
end if
xlApp.Application.Workbooks.Open("C:/excel/test.xls")
xlApp.Application.Visible = true
xlapp.application.activeworkbook.sheets("test").select //调用模板
xlApp.Application.run("copy") //COPY行
rows=dw_2.rowcount()
if rows<=0 then return 1
for i=2 to rows
if i<=dw_2.rowcount() then xlApp.Application.run("paste","a"+string(i+1))
xlApp.application.activeworkbook.worksheets[1].cells[i+1,4]=string(dw_2.object.c_date[i],"mm/dd/yyyy")//写日期数据到EXCEL单元格里
next
//save EXCEL
integer value
string docname, named
value = GetFileSaveName("Select File", docname, named, "xls", " Excel Files (*.xls), *.xls")
// 导出图片
pictname=dw_4.object.i_photoname[r]
xlsub1.Range("N9").Select
if pictname<>'' and not(isnull(pictname)) then
if flg = 0 then flg = photoexist(pictname)
if FILEEXISTS(pictname) = true then
xlapp.Application.ActiveSheet.Pictures.Insert(string(pictname)).select
xlapp.Application.Selection.ShapeRange.height=180 //图片的大小
end if
end if
xlApp.DisConnectObject()
Destroy xlapp
setpointer(oldpointer)
2> COPY多行,在写数据到行的单元格
不同的ITEM在一个页面放的数量>3个以上
转数据到EXCEL时,要对模板多行COPY格式
代码如下
//定义变量
double jpgsize
string pictname,aa,ff,ctn
long i=1,k,m,b,numrows,f,flg
numrows=dw_2.rowcount()// 取总行数
K=CEILING(numrows/5) //每页总行数除去5个ITEM
xls=xlapp.application.activeworkbook
xlsub=xlapp.application.activeworkbook.worksheets[1]
for i=1 to k - 1
b=50*i+1
aa='A'+string(B)
xlapp.Application.range("A1:N50").Select
xlapp.Application.Selection.Copy
xlapp.Application.range(AA).Select
xlapp.Application.Selection.Insert()
next
xlapp.Application.cutcopymode=false
//每次10 COPY
for i=1 to numrows
xlsub.Cells[10*(i - 1)+9,12]=string(round(dw_2.object.q_l[i],2),"#,##0.00")+" x "+string(round(dw_2.object.q_w,2),"#,##0.00")+" x "+string(round(dw_2.object.q_h[i],2),"#,##0.00")// 长*宽*高
//转图片
pictname=dw_2.object.i_photoname[i]
f=10*(i - 1)+2
ff="N"+string(f)
xlapp.Application.ActiveWorkbook.Worksheets[1].Range(ff).Select
if pictname<>'' and not(isnull(pictname)) then
if GetJpgSize(pictname)<>0 then
xlapp.Application.ActiveSheet.Pictures.Insert(string(pictname)).select
if GetJpgSize(pictname)<1.29 then
xlapp.Application.Selection.ShapeRange.height = 215
else
xlapp.Application.Selection.ShapeRange.Width = 255
end if
end if
end if
next
-------------------------------------------------------------------------------------------------