想做房态图,请大家指点

ldk 2001-12-17 05:34:48
酒店管理软件中的实时房态图是怎么做的?就是一个个的小图标,用鼠标去点可以弹出菜单,修改状态
...全文
232 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldk 2001-12-19
  • 打赏
  • 举报
回复
OK,这个问题解决了,还有一个问题再请教一下:
在窗口中可以使用滚动条,但我现在用房态图的时候发现窗口即使用了滚动条也可能还是不够长,谁知道怎么才能让用滚动条的窗口能再拉长一点
pckiller 2001-12-19
  • 打赏
  • 举报
回复
动态添加用户对象,OpenUserObject,看help!
ldk 2001-12-19
  • 打赏
  • 举报
回复
怎么在窗口上添加用户对象?
pckiller 2001-12-19
  • 打赏
  • 举报
回复
pb的例子不就有类似的程序嘛!
你也可以用滚动条控件,点击滚动条,移动用户对象的坐标,用这个方法,有多少房间都能看到,
比如纵向移动到了第三行,前两行的图就可以不画了,直接在窗口的顶端画第三行房态,这样做,编程太麻烦!
junyong 2001-12-18
  • 打赏
  • 举报
回复
你可以在自己写代码选中一行啊。
根据单击的位置,自己判断,不就行了。
ldk 2001-12-18
  • 打赏
  • 举报
回复
不过每次进入窗口速度会慢的,因为有可能有二百多个房间

我还考虑过用listview,但每个图标之间的距离间隔太大了
ldk 2001-12-18
  • 打赏
  • 举报
回复
to zhugejunshi(诸葛军师):我会给分的,不管能不能解决我都会给分的,你可以说详细点吗?
如果用数据窗口做的话,单击右键并不能选中一行,所以要先点左键再击右键很麻烦
to kind_li(蓝色程序员) :你说的方法我也考虑过,不过
kind_li 2001-12-18
  • 打赏
  • 举报
回复
怎么不能用IMAGE了呢,你可以在程序中动态生成IMAGE。并排好他们的位置。这样不就可以实现了吗?原理其实很简单,实施下去也不难。
zhugejunshi 2001-12-18
  • 打赏
  • 举报
回复
我说了就的给我分呀,建数据窗口时选用external,剩下的就是自己的工作了。
ldk 2001-12-18
  • 打赏
  • 举报
回复
当然会给了,我不是问怎么弹出菜单,我是问那一行一行的小图标怎么做的
ldk 2001-12-18
  • 打赏
  • 举报
回复
分都给出来了,又收不回来了,干嘛不真给呀?

我要的不是怎么样弹出菜单,而是怎么做那种一行一行排列的小图标,不能用image,因为图标的多少是根据这个酒店的客房数而定的,而且可以改变的
kkbgp 2001-12-18
  • 打赏
  • 举报
回复
这问题不难,给出那么多分,会不会真给呀

要达到“用鼠标去点可以弹出菜单,修改状态”还不容易?弄个弹出式菜单就行了
linda_gao 2001-12-18
  • 打赏
  • 举报
回复
you can use n-up datawindow.
pckiller 2001-12-18
  • 打赏
  • 举报
回复
haha,来拿分,有两中实现方法
1、作一个用户对象,表示一个房间,可以显示各房间的状态响应事件,点击、放大(拖放)等,然后根据数据库记录动态的在窗体上添加用户对象,但是这种方法太占系统资源,200多个房间会很慢(我当初在CR433,64M上用还可以)
2、直接用绘图函数(WinAPI)在窗体上画,速度是无以伦比的,但太麻烦,响应用户事件要判断用户的坐标在那个区域,还要在Paint刷新,当初将绘图函数封装成了DLL,其实直接调用API就可以了,另外很多VC的书第一个例子就是绘图,你也可以看看啊!
只用过这两种方法,另外别用图片一个个的显示,太占内存,除非你在内存中只保留一张图片,然后将图片的copy直接“喷”在屏幕上,罗嗦半天,希望对你有帮助!
ldk 2001-12-18
  • 打赏
  • 举报
回复
我抓了两幅其它软件里的房态图下来,大家去看看,我放在邮箱里
netdk@163.com
密码:00000,打包成自释放的格式
pbworm 2001-12-18
  • 打赏
  • 举报
回复
to ldk
我没有最过房态图,但是你不可能将酒店的200多个房间一下全部显示出来吧,我想应该可以按照楼层来显示的。
zhugejunshi 2001-12-18
  • 打赏
  • 举报
回复
我说的这个好像也不用选择某一行。但左右键问题也是能解决的。
自定义一用户事件(ue_keydown ID:pbm_dwnkey)
在该事件中写如下代码:
if key = KeyLeftArrow! then
。。。。。
。。。。。。。//想实现什么功能都可以写的
return 1
end if
zhugejunshi 2001-12-18
  • 打赏
  • 举报
回复
虽然我没有见到那个图是什么样的,但我觉得我用我的方法也能实现。
先丁一个函数wf_set_ip,返回none,如下:
CHOOSE CASE j
CASE 1
dw_1.object.A1[i] = ai_ip
CASE 2
dw_1.object.A2[i] = ai_ip
CASE 3
dw_1.object.A3[i] = ai_ip
CASE 4
dw_1.object.A4[i] = ai_ip
CASE 5
dw_1.object.A5[i] = ai_ip
CASE 6
dw_1.object.A6[i] = ai_ip
CASE 7
dw_1.object.A7[i] = ai_ip
CASE 8
dw_1.object.A8[i] = ai_ip
CASE 9
dw_1.object.A9[i] = ai_ip
CASE 0
dw_1.object.A0[i] = ai_ip
END CHOOSE

string ls_cur_ip
int i,j,li_cur_ip

dw_1.reset()
for i = 1 to 26
dw_1.insertrow(0)
next

for i = 1 to 26
for j = 0 to 9
li_cur_ip = (i - 1)*10 + j
if li_cur_ip < 最大房间数 then
if li_cur_ip = 罪小房间数 then continue
if li_cur_ip = 最大房间数 then exit
wf_set_ip(i,j,li_cur_ip)

end if
next
next
三杯倒 2001-12-17
  • 打赏
  • 举报
回复
1111

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧