ComboBoxEx1用这个如何实现下拉缩进关系如下(200)

  • 主题发起人 主题发起人 qq_tom1520
  • 开始时间 开始时间
Q

qq_tom1520

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库表kk中有以下数据MaxID kName paID1 中国 0 2 北京 1 3 湖南 1 4 广东 1 5 广州 4 6 深圳 4 7 四川 1 11 美国 0 12 攻击1 11 13 攻击2 11 14 攻击3 11 15 攻击4 11 16 日本 0 17 日本1 16 18 日本2 16 19 日本201 1820 日本20101 19 21 日本2010101 2022 日本2010102 2023 日本2010103 20...... ComboBoxEx1用这个如何实现下拉缩进关系如下中国 北京 湖南 广东 广州 深圳 四川美国 攻击1 攻击2 攻击3 攻击4日本 日本1 日本2 日本201 日本2010101 日本2010102 日本2010103......
 
分不够,可加.
 
怎么没人回答?自己顶一下吧
 
一般是通过组合控件完成,即通过combobox+TTreeView组合完成所需要的功能,有些复杂。
 
基本不可以,除非你自己写一个,建议你还是改换思路来解决。
 
有这样功能的第三方控件吗?
 
我还是不懂楼主的意思 说的简单点好吗?楼主的意思是不是树的概念啊?
 
第三方控件dev 的ExpressDBTree 中的dxTreeviewEdit控件http://www.softwelt.com/Know/KnowDetail-319391.html
 
第三方控件dev 的ExpressDBTree 中的dxTreeviewEdit控件这个控件很难安装得上.
 
那你照它的源码搬过来不就可以了吗?
 
combobox 下拉层次如何建立?(多层)比如下拉结果如下:中国 北京 广东 深圳 龙华 龙广 广州美国 ...
 
自建控件,我有一个,其实就是下拉一个TreeView
 
Delphi7里面在就自带这样的控件啊,看来老兄没好好研究VCL组件。组件面板Win32页面上就有TComboBoxEx控件,此控件最重要的属性就是ItemEx、Images属性,ItemEx属性可以添加项,每个项还有Ident、Images属性,Ident属性默认都是-1,如果设为1、2、3等,那么就可以设置成你这种树形层次结构了,很简单吧?这样的控件如果你自己做没几个月是做不出来的。
 
有这控件 ELDOS或者说你直接做个raize里面的 buttonEDit控件 然后在下面放个隐藏的Etree;然后当enter事件或者buttonclick事件中加上etree显示就可以 伪造也没罪或者你把上面的两者结合 自己开发个控件也可以!
 
北京男人的是正解。
 
首选Treeview。如果有Combobox和Treevew结合的组件当然最好。
 
北京男人正解,第一层Ident=0,第二层Ident=1......
 
TComboBoxEx 好像没有树形的结构吧,没有连接的线,不能伸缩树枝。我的做法是这样的:可以把 Treeview 装到一个 panne l里面。然后在点击 combobox 的时候触发一个事件,显示 pannel。
 
北京男人是错的,VCL当然没有,我把代码贴出来。 TMouseAwareControl = class(TCustomcontrol) private FEntered: boolean; FmouseEnter: boolean; FBlendvalue: byte; FSelColor: Tcolor; FbtnColor: TColor; procedure CmMouseEnter(var Msg: TMessage); message CM_MOUSEENTER; procedure CmMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE; procedure CMEnter(var Message:TCMEnter); message CM_ENTER; procedure CMExit(var Message:TCMExit); message CM_EXIT; procedure CmFocusedChange(var msg: Tmessage); message CM_FOCUSCHANGED; procedure CmEnabledChange(var msg: TMessage); message CM_ENABLEDCHANGED; procedure SetMouseEnter(const Value: boolean); protected procedure SetEntered(const Value: boolean); virtual; property MouseEnter: boolean read FmouseEnter write SetMouseEnter; property Entered: boolean Read FEntered write SetEntered; public Constructor Create(AOwner: TComponent); override; published property SelColor: Tcolor Read FSelColor Write FselColor; property BlendValue: byte Read FBlendvalue write FBlendValue; property btnColor: TColor read FbtnColor write FbtnColor; property Enabled; property visible; property Font; property OnEnter; property OnExit; property OnKeyDown; property OnKeyPress; property OnKeyUp; property TabOrder; property showhint; end; TDropDownControl = class(TMouseAwareControl) private { Private declarations } FDropDownEnable: boolean; FDropDown: boolean; FDropDownCtrl: TWinControl; FOnCloseUp: TNotifyEvent; FOnDropDown: TNotifyEvent; FFullDropDown: boolean; FShadowPR, FShadowPB: TOfficeXpShadow; FDropDownShadow: boolean; procedure CmCloseUp(var msg: Tmessage); message CM_CLOSEUP; procedure CmFocusedChange(var msg: Tmessage); message CM_FOCUSCHANGED; procedure SetDropdownEnable(const Value: boolean); protected { Protected declarations } procedure SetEntered(const Value: boolean); override; procedure SetDropdowned(const Value: boolean); virtual; procedure Dropdown; dynamic; procedure CloseUp; dynamic; procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure paint; override; function getbtnRect: TRect; public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override; property DropDowned: boolean read FDropDown write SetDropdowned; [blue]property DropDownCtrl: TWinControl read FDropDownCtrl write FDropDownCtrl;[/blue] published { Published declarations } property DropDownShadow: boolean read FDropDownShadow write FDropDownShadow; property FullDropDown: boolean read FFullDropDown write FFullDropDown; property DropDownEnable: boolean read FDropDownEnable write SetDropdownEnable; property OnCloseUp: TNotifyEvent read FOnCloseUp write FoncloseUp; property OnDropDown: TNotifyEvent read FOnDropDown write FOnDropDown; property parentColor; property color; property align; end; TCommComBox = class(TDropDownControl) private FText: string; FDrawContent: TDrawContent; procedure setText(const Value: string); protected procedure paint; override; public published property Text: string read FText write setText; property onDrawContent: TDrawContent read FDrawContent write FDrawContent; end;关键是下面这个属性,DropDownCtrl 可以是TreeView,可以是panel,可以是listView,DbGrid,是WinControl都可以。property DropDownCtrl: TWinControl read FDropDownCtrl write FDropDownCtrl;下拉实现代码,我这个是有渐变透明阴影(可选),你留意到没有,用到一对鼠标钩子procedure TDropDownControl.Dropdown;var R: TRect;begin// if (ControlCount>0) and (Controls[0] is TWinControl)// then TWinControl(Controls[0]).setFocus// else setFocus; if Assigned(FDropDownCtrl) then with FDropDownCtrl do begin Parent:=getParentForm(self); windows.SetParent(handle, 0); setWindowLong(handle, GWL_STYLE, getWindowLong(handle, GWL_STYLE) or WS_BORDER); setWindowLong(handle, GWL_EXSTYLE, getWindowLong(handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW or WS_EX_TOPMOST);// Parent:=self.Parent; R:=GetPopupRect(self.Parent.ClientToScreen(Point(self.left,self.Top)), BoundsRect, self.Height); Left:=R.Left; Top:=R.Top; if FdropDownShadow then begin FShadowPR.Corner1:=true; FShadowPR.Corner2:=true; FShadowPR.SetBounds(Left+Width, Top, XPMargin, Height); FShadowPR.Prepare; FShadowPB.Corner1:=true; FShadowPB.Corner2:=true; FShadowPB.SetBounds(Left+XPMargin, Top+height, Width, XPMargin); FshadowPB.Prepare; FshadowPR.show(true); FshadowPB.show(true); end; msHookDropDown(self, FDropDownCtrl); visible:=True; end; if Assigned(FOnDropDown) then FOnDropDown(self);end;procedure TDropDownControl.CloseUp;begin if Assigned(FDropDownCtrl) and FDropDownCtrl.HandleAllocated then msHookHide(FDropDownCtrl.handle); FShadowPR.show(false); FShadowPB.show(false); if Assigned(FOnCloseUp) then FOnCloseUp(self);end;
 
北京男人说的我在D7中试过了,正确,符合楼主的要求
 
后退
顶部