分三栏:1.操作提示(就像微帮助一样) 2. 操作者显示 3.服务器时间
我是用一个external的数据窗口,2.3已经实现,但1.还没有实现,应该如何做,在那些事件里添加代码?
这样的状态栏,大家是怎么做的,请说说,先多谢了!分不是问题……
如果有源程序那是最好的了, dzhcheng@163.com
11 个解决方案
#1
还有如果操作中,最好在提取数据时,在1.栏中显示提取进度……
#2
流方的网站有
http://www.liulee.net/
http://www.liulee.net/
#3
陶清网上也有,:)
#4
最好使用PFC
呵呵~~~~~~~~~```````
呵呵~~~~~~~~~```````
#5
最简单:放一个进度栏(hpb_1)在dw的1处,显示help时,hpb_1置后;显示进度时,hpb_1置前
嗬嗬,苯办法
嗬嗬,苯办法
#6
用ms statusbar怎么样。功能都有的
#7
大家能不能给我一个这样的源程序,最好是pb6.5版的,急切需要呀!
分不够可以再加! dzhcheng@163.com
分不够可以再加! dzhcheng@163.com
#8
1、通常我们把MENU的微帮助信息放到对应MENU ITEM 的MICROHELP属性,或者是TAG属性里面,然后在MENU的SELECTED和GETFOCUS事件里面对窗体w_frame.setmicrohelp(string)实现微帮助。
2、但你是用的自定义的DW做状态栏,无法使用setmicrohelp(string)函数,则只要在每个菜单ITEM的SELECTED事件里面写上如下代码即可:
w_frame.dw_1.setitem(1,1,this.microhelp)
或者:
w_frame.dw_1.setitem(1,1,this.tag)
即可,:),应该不是很困难啊,:)
注:上述代码假设你的DW是在w_frame窗体内,且第1列用来显示微帮助信息;
2、但你是用的自定义的DW做状态栏,无法使用setmicrohelp(string)函数,则只要在每个菜单ITEM的SELECTED事件里面写上如下代码即可:
w_frame.dw_1.setitem(1,1,this.microhelp)
或者:
w_frame.dw_1.setitem(1,1,this.tag)
即可,:),应该不是很困难啊,:)
注:上述代码假设你的DW是在w_frame窗体内,且第1列用来显示微帮助信息;
#9
http://www.liulee.net/topics/topic_open.php?id=021
#10
也可参考:
http://www.liulee.net/mycodes/mycode_open.php?id=030
http://www.liulee.net/mycodes/mycode_open.php?id=030
#11
1、dw_2.SetColumn(1)总是返回-1的问题:
(1)可能一:dw_2未指定dataobject属性,导致dw_2中的列数为0;
检验方法:请在此句前加上:
messagebox("info",dw_2.DataObject)
messagebox("info",dw_2.Object.DataWindow.Column.Count)
看一下dw_2中的列数是否为0,你在执行dw_2.SetColumn(1)之前给dw_2指定dataobject属性了吗?
(2)可能二:dw_2中指定的数据窗口对象dataobject的第一列的TAB ORDER为0;
检验方法:messagebox("info",dw_2.Describe("#1.TabSequence"))
看一下第一列的TAB ORDER是否为0;
(3)解决方案:如果上述两种可能都排除后还不行,就干脆不要通过先SETCOLUMN(),再通过GETCOLUMNNAME()来获取列名了,直接用:
ls_colname=dw_2.Describe("#1.name"))即可获得列名了;
2、一些建议:
对你用的那种方法,我感觉不具有通用性,只能适用于第1列为主键的表查询,如果碰到主键为两列的情况,就没法使用了,因此可改进如下:
建一张表,专门用来记录你的各个查询用的DATAOBJECT所对应的主键列号,如:
DATAOBJECT名 对应主键列号
d_cx_1 1;
d_cx_2 3;5;
d_cx_3 2;4;
d_cx_4 1;3
......
这样你可在程序里面根据你当前窗口中用的DATAOBJECT到底是哪个,然后到此表中取其主键列号,如现在是通过d_cx_3这个DATAOBJECT查询的
,则你通过一定的手段从此表中取出其对应的主键列号为2;4;,然后又通过分解得出其列号为2、4,将其存到一个数组中去,然后:
string ls_str[]
long ll_col[],ll_pos
ll_col=wf_获取拆分主键列号()
for ll_pos=1 to upperbound(ll_col[])
ls_str=dw_1.getitemstring(dw_1.getrow(),ll_pos)
...//此处获取当前dw_1中选中行的各主键列的值;
ls_colname=dw_2.Describe("#1.name"))
if ll_pos<>upperbound(ll_col[]) then
ls_cond=ls_colname+"='"+ls_str+"' and "
else
ls_cond=ls_colname+"='"+ls_str+"'"
end if
next
ll_pos=dw_2.find(ls_cond,1,dw_2.rowcount())
if ll_pos<>0 then
dw_2.setrow(ll_pos)
dw_2.scrolltorow(ll_pos)
else
messagebox("info","未找到数据!")
end if
(1)可能一:dw_2未指定dataobject属性,导致dw_2中的列数为0;
检验方法:请在此句前加上:
messagebox("info",dw_2.DataObject)
messagebox("info",dw_2.Object.DataWindow.Column.Count)
看一下dw_2中的列数是否为0,你在执行dw_2.SetColumn(1)之前给dw_2指定dataobject属性了吗?
(2)可能二:dw_2中指定的数据窗口对象dataobject的第一列的TAB ORDER为0;
检验方法:messagebox("info",dw_2.Describe("#1.TabSequence"))
看一下第一列的TAB ORDER是否为0;
(3)解决方案:如果上述两种可能都排除后还不行,就干脆不要通过先SETCOLUMN(),再通过GETCOLUMNNAME()来获取列名了,直接用:
ls_colname=dw_2.Describe("#1.name"))即可获得列名了;
2、一些建议:
对你用的那种方法,我感觉不具有通用性,只能适用于第1列为主键的表查询,如果碰到主键为两列的情况,就没法使用了,因此可改进如下:
建一张表,专门用来记录你的各个查询用的DATAOBJECT所对应的主键列号,如:
DATAOBJECT名 对应主键列号
d_cx_1 1;
d_cx_2 3;5;
d_cx_3 2;4;
d_cx_4 1;3
......
这样你可在程序里面根据你当前窗口中用的DATAOBJECT到底是哪个,然后到此表中取其主键列号,如现在是通过d_cx_3这个DATAOBJECT查询的
,则你通过一定的手段从此表中取出其对应的主键列号为2;4;,然后又通过分解得出其列号为2、4,将其存到一个数组中去,然后:
string ls_str[]
long ll_col[],ll_pos
ll_col=wf_获取拆分主键列号()
for ll_pos=1 to upperbound(ll_col[])
ls_str=dw_1.getitemstring(dw_1.getrow(),ll_pos)
...//此处获取当前dw_1中选中行的各主键列的值;
ls_colname=dw_2.Describe("#1.name"))
if ll_pos<>upperbound(ll_col[]) then
ls_cond=ls_colname+"='"+ls_str+"' and "
else
ls_cond=ls_colname+"='"+ls_str+"'"
end if
next
ll_pos=dw_2.find(ls_cond,1,dw_2.rowcount())
if ll_pos<>0 then
dw_2.setrow(ll_pos)
dw_2.scrolltorow(ll_pos)
else
messagebox("info","未找到数据!")
end if
#1
还有如果操作中,最好在提取数据时,在1.栏中显示提取进度……
#2
流方的网站有
http://www.liulee.net/
http://www.liulee.net/
#3
陶清网上也有,:)
#4
最好使用PFC
呵呵~~~~~~~~~```````
呵呵~~~~~~~~~```````
#5
最简单:放一个进度栏(hpb_1)在dw的1处,显示help时,hpb_1置后;显示进度时,hpb_1置前
嗬嗬,苯办法
嗬嗬,苯办法
#6
用ms statusbar怎么样。功能都有的
#7
大家能不能给我一个这样的源程序,最好是pb6.5版的,急切需要呀!
分不够可以再加! dzhcheng@163.com
分不够可以再加! dzhcheng@163.com
#8
1、通常我们把MENU的微帮助信息放到对应MENU ITEM 的MICROHELP属性,或者是TAG属性里面,然后在MENU的SELECTED和GETFOCUS事件里面对窗体w_frame.setmicrohelp(string)实现微帮助。
2、但你是用的自定义的DW做状态栏,无法使用setmicrohelp(string)函数,则只要在每个菜单ITEM的SELECTED事件里面写上如下代码即可:
w_frame.dw_1.setitem(1,1,this.microhelp)
或者:
w_frame.dw_1.setitem(1,1,this.tag)
即可,:),应该不是很困难啊,:)
注:上述代码假设你的DW是在w_frame窗体内,且第1列用来显示微帮助信息;
2、但你是用的自定义的DW做状态栏,无法使用setmicrohelp(string)函数,则只要在每个菜单ITEM的SELECTED事件里面写上如下代码即可:
w_frame.dw_1.setitem(1,1,this.microhelp)
或者:
w_frame.dw_1.setitem(1,1,this.tag)
即可,:),应该不是很困难啊,:)
注:上述代码假设你的DW是在w_frame窗体内,且第1列用来显示微帮助信息;
#9
http://www.liulee.net/topics/topic_open.php?id=021
#10
也可参考:
http://www.liulee.net/mycodes/mycode_open.php?id=030
http://www.liulee.net/mycodes/mycode_open.php?id=030
#11
1、dw_2.SetColumn(1)总是返回-1的问题:
(1)可能一:dw_2未指定dataobject属性,导致dw_2中的列数为0;
检验方法:请在此句前加上:
messagebox("info",dw_2.DataObject)
messagebox("info",dw_2.Object.DataWindow.Column.Count)
看一下dw_2中的列数是否为0,你在执行dw_2.SetColumn(1)之前给dw_2指定dataobject属性了吗?
(2)可能二:dw_2中指定的数据窗口对象dataobject的第一列的TAB ORDER为0;
检验方法:messagebox("info",dw_2.Describe("#1.TabSequence"))
看一下第一列的TAB ORDER是否为0;
(3)解决方案:如果上述两种可能都排除后还不行,就干脆不要通过先SETCOLUMN(),再通过GETCOLUMNNAME()来获取列名了,直接用:
ls_colname=dw_2.Describe("#1.name"))即可获得列名了;
2、一些建议:
对你用的那种方法,我感觉不具有通用性,只能适用于第1列为主键的表查询,如果碰到主键为两列的情况,就没法使用了,因此可改进如下:
建一张表,专门用来记录你的各个查询用的DATAOBJECT所对应的主键列号,如:
DATAOBJECT名 对应主键列号
d_cx_1 1;
d_cx_2 3;5;
d_cx_3 2;4;
d_cx_4 1;3
......
这样你可在程序里面根据你当前窗口中用的DATAOBJECT到底是哪个,然后到此表中取其主键列号,如现在是通过d_cx_3这个DATAOBJECT查询的
,则你通过一定的手段从此表中取出其对应的主键列号为2;4;,然后又通过分解得出其列号为2、4,将其存到一个数组中去,然后:
string ls_str[]
long ll_col[],ll_pos
ll_col=wf_获取拆分主键列号()
for ll_pos=1 to upperbound(ll_col[])
ls_str=dw_1.getitemstring(dw_1.getrow(),ll_pos)
...//此处获取当前dw_1中选中行的各主键列的值;
ls_colname=dw_2.Describe("#1.name"))
if ll_pos<>upperbound(ll_col[]) then
ls_cond=ls_colname+"='"+ls_str+"' and "
else
ls_cond=ls_colname+"='"+ls_str+"'"
end if
next
ll_pos=dw_2.find(ls_cond,1,dw_2.rowcount())
if ll_pos<>0 then
dw_2.setrow(ll_pos)
dw_2.scrolltorow(ll_pos)
else
messagebox("info","未找到数据!")
end if
(1)可能一:dw_2未指定dataobject属性,导致dw_2中的列数为0;
检验方法:请在此句前加上:
messagebox("info",dw_2.DataObject)
messagebox("info",dw_2.Object.DataWindow.Column.Count)
看一下dw_2中的列数是否为0,你在执行dw_2.SetColumn(1)之前给dw_2指定dataobject属性了吗?
(2)可能二:dw_2中指定的数据窗口对象dataobject的第一列的TAB ORDER为0;
检验方法:messagebox("info",dw_2.Describe("#1.TabSequence"))
看一下第一列的TAB ORDER是否为0;
(3)解决方案:如果上述两种可能都排除后还不行,就干脆不要通过先SETCOLUMN(),再通过GETCOLUMNNAME()来获取列名了,直接用:
ls_colname=dw_2.Describe("#1.name"))即可获得列名了;
2、一些建议:
对你用的那种方法,我感觉不具有通用性,只能适用于第1列为主键的表查询,如果碰到主键为两列的情况,就没法使用了,因此可改进如下:
建一张表,专门用来记录你的各个查询用的DATAOBJECT所对应的主键列号,如:
DATAOBJECT名 对应主键列号
d_cx_1 1;
d_cx_2 3;5;
d_cx_3 2;4;
d_cx_4 1;3
......
这样你可在程序里面根据你当前窗口中用的DATAOBJECT到底是哪个,然后到此表中取其主键列号,如现在是通过d_cx_3这个DATAOBJECT查询的
,则你通过一定的手段从此表中取出其对应的主键列号为2;4;,然后又通过分解得出其列号为2、4,将其存到一个数组中去,然后:
string ls_str[]
long ll_col[],ll_pos
ll_col=wf_获取拆分主键列号()
for ll_pos=1 to upperbound(ll_col[])
ls_str=dw_1.getitemstring(dw_1.getrow(),ll_pos)
...//此处获取当前dw_1中选中行的各主键列的值;
ls_colname=dw_2.Describe("#1.name"))
if ll_pos<>upperbound(ll_col[]) then
ls_cond=ls_colname+"='"+ls_str+"' and "
else
ls_cond=ls_colname+"='"+ls_str+"'"
end if
next
ll_pos=dw_2.find(ls_cond,1,dw_2.rowcount())
if ll_pos<>0 then
dw_2.setrow(ll_pos)
dw_2.scrolltorow(ll_pos)
else
messagebox("info","未找到数据!")
end if