如何在pb自带的工具栏上加入下拉列表框?

时间:2022-03-05 09:00:07
不要告诉我用popwindow之类的,如果那样的话,无法实现拖动效果的

14 个解决方案

#1


Function uLong FindWindowExA( long hParent, long hChildAfter,String lpszClass,String lpszWindow) Library "user32.dll"
Function uLong SetParent( uLong hChild, uLong hWnd) Library "user32.dll"

String ls_ClassName, ls_Null
uLong lul_Toolbar, lul_Null, lul_Listbox
Listbox llb_1

Setnull( ls_null )
Setnull( lul_null )
ls_ClassName = "FNFIXEDBAR60" 

lul_Toolbar = FindWindowExa( Handle (This ),lul_null,ls_Classname,ls_null)

OpenUserObject( llb_1,'lb_1',0 , 0)

lul_Listbox = Handle(llb_1)
SetParent(lul_Listbox,lul_Toolbar)


llb_1.y = 12
llb_1.x = 1000
llb_1.Width =600
llb_1.Height = 100
llb_1.visible = true


#2


我将函数定义为局部外部函数

代码写在一个MDI窗口的Open事件中,提示
OpenUserObject( llb_1,'lb_1',0 , 0)
出错

'lb_1'

#3


具体信息是什么?

#4


错误号22,
Unknow object type :lb_1 at line 30 in open event of object w_main

如果我将'lb_1'去掉,则没有错误,但产生的lb将游离于程序之外.

#5


to :hjd_cw(),你的代码可以执行吗?我试过了,不行的 
toolbarframetitle可以设置工具栏悬浮时的窗口标题,但如果是toolbaritembarindex >1时,如何设置多个工具栏悬浮时的窗口标题

#6


楼主:(关于悬浮TOOLBAR)
  findwindowex
  setwindowText
应当可以解决。

#7


STUDY

#8


我在PB7.0.3 build 10135 下试了试,OpenUserObject( llb_1,'lb_1',0 , 0)
是应该改成
OpenUserObject( llb_1,0 , 0)
能够达到预期的目的!
gaochunrong(思维) 同志所说的情况,是不是没有查询到TOOLBAR的HANDLE?请验证!

#9


up!问题没有解决!

#10


现在是什么状况?
PB版本?

#11


同楼上的所说一样pb7.0的

#12


楼主有没有将
ls_ClassName = "FNFIXEDBAR60" 
改成
ls_ClassName = "FNFIXEDBAR70" 

这可是个关键。

#13


谢谢hjd_cw(),但如何将这个ddlb加入到指定的toolbaritemindex 中取?一定结贴的

#14


Function uLong FindWindowExA( long hParent, long hChildAfter,String lpszClass,ref String lpszWindow) Library "user32.dll"
Function uLong SetParent( uLong hChild, uLong hWnd) Library "user32.dll"

String ls_ClassName, ls_Null
//------------------增加变量
boolean lb_visible
toolbaralignment lta_align
string ls_toolbar_title
int li_toolbar_index
//------------------
uLong lul_Toolbar, lul_Null, lul_Listbox
Listbox llb_1
//取指定的TOOLBAR标题
ls_toolbar_title = GetToolBar(li_toolbar_index,lb_visible,lta_align,ls_toolbar_title)

Setnull( ls_null )
Setnull( lul_null )
ls_ClassName = "FNFIXEDBAR70" 

//查指定CLASS和标题的TOOLBAR 的句柄
lul_Toolbar = FindWindowExa( Handle (This ),lul_null,ls_Classname,ls_toolbar_title)

OpenUserObject( llb_1,'lb_1',0 , 0)

lul_Listbox = Handle(llb_1)
SetParent(lul_Listbox,lul_Toolbar)


llb_1.y = 12
llb_1.x = 1000
llb_1.Width =600
llb_1.Height = 100
llb_1.visible = true

#1


Function uLong FindWindowExA( long hParent, long hChildAfter,String lpszClass,String lpszWindow) Library "user32.dll"
Function uLong SetParent( uLong hChild, uLong hWnd) Library "user32.dll"

String ls_ClassName, ls_Null
uLong lul_Toolbar, lul_Null, lul_Listbox
Listbox llb_1

Setnull( ls_null )
Setnull( lul_null )
ls_ClassName = "FNFIXEDBAR60" 

lul_Toolbar = FindWindowExa( Handle (This ),lul_null,ls_Classname,ls_null)

OpenUserObject( llb_1,'lb_1',0 , 0)

lul_Listbox = Handle(llb_1)
SetParent(lul_Listbox,lul_Toolbar)


llb_1.y = 12
llb_1.x = 1000
llb_1.Width =600
llb_1.Height = 100
llb_1.visible = true


#2


我将函数定义为局部外部函数

代码写在一个MDI窗口的Open事件中,提示
OpenUserObject( llb_1,'lb_1',0 , 0)
出错

'lb_1'

#3


具体信息是什么?

#4


错误号22,
Unknow object type :lb_1 at line 30 in open event of object w_main

如果我将'lb_1'去掉,则没有错误,但产生的lb将游离于程序之外.

#5


to :hjd_cw(),你的代码可以执行吗?我试过了,不行的 
toolbarframetitle可以设置工具栏悬浮时的窗口标题,但如果是toolbaritembarindex >1时,如何设置多个工具栏悬浮时的窗口标题

#6


楼主:(关于悬浮TOOLBAR)
  findwindowex
  setwindowText
应当可以解决。

#7


STUDY

#8


我在PB7.0.3 build 10135 下试了试,OpenUserObject( llb_1,'lb_1',0 , 0)
是应该改成
OpenUserObject( llb_1,0 , 0)
能够达到预期的目的!
gaochunrong(思维) 同志所说的情况,是不是没有查询到TOOLBAR的HANDLE?请验证!

#9


up!问题没有解决!

#10


现在是什么状况?
PB版本?

#11


同楼上的所说一样pb7.0的

#12


楼主有没有将
ls_ClassName = "FNFIXEDBAR60" 
改成
ls_ClassName = "FNFIXEDBAR70" 

这可是个关键。

#13


谢谢hjd_cw(),但如何将这个ddlb加入到指定的toolbaritemindex 中取?一定结贴的

#14


Function uLong FindWindowExA( long hParent, long hChildAfter,String lpszClass,ref String lpszWindow) Library "user32.dll"
Function uLong SetParent( uLong hChild, uLong hWnd) Library "user32.dll"

String ls_ClassName, ls_Null
//------------------增加变量
boolean lb_visible
toolbaralignment lta_align
string ls_toolbar_title
int li_toolbar_index
//------------------
uLong lul_Toolbar, lul_Null, lul_Listbox
Listbox llb_1
//取指定的TOOLBAR标题
ls_toolbar_title = GetToolBar(li_toolbar_index,lb_visible,lta_align,ls_toolbar_title)

Setnull( ls_null )
Setnull( lul_null )
ls_ClassName = "FNFIXEDBAR70" 

//查指定CLASS和标题的TOOLBAR 的句柄
lul_Toolbar = FindWindowExa( Handle (This ),lul_null,ls_Classname,ls_toolbar_title)

OpenUserObject( llb_1,'lb_1',0 , 0)

lul_Listbox = Handle(llb_1)
SetParent(lul_Listbox,lul_Toolbar)


llb_1.y = 12
llb_1.x = 1000
llb_1.Width =600
llb_1.Height = 100
llb_1.visible = true