大家快进来看一看,如何做这样的状态栏?

时间:2022-09-17 14:16:16
在mdi frame中,我想做这样的状态栏:
分三栏:1.操作提示(就像微帮助一样) 2. 操作者显示 3.服务器时间
我是用一个external的数据窗口,2.3已经实现,但1.还没有实现,应该如何做,在那些事件里添加代码?
这样的状态栏,大家是怎么做的,请说说,先多谢了!分不是问题……
如果有源程序那是最好的了, dzhcheng@163.com

11 个解决方案

#1


还有如果操作中,最好在提取数据时,在1.栏中显示提取进度……

#2


流方的网站有
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

#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列用来显示微帮助信息;

#9


http://www.liulee.net/topics/topic_open.php?id=021

#10


也可参考:
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


还有如果操作中,最好在提取数据时,在1.栏中显示提取进度……

#2


流方的网站有
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

#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列用来显示微帮助信息;

#9


http://www.liulee.net/topics/topic_open.php?id=021

#10


也可参考:
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