603
|
Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (ditto mark)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:HeaderHeight := 24
oComboBox:DrawGridLines := -2/*exRowLines*/
oComboBox:Columns():Add("Country"):ShowIdem := "<fgcolor gray>〃"
oItems := oComboBox:Items()
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
602
|
Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (space)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:HeaderHeight := 24
oComboBox:DrawGridLines := -2/*exRowLines*/
oComboBox:Columns():Add("Country"):ShowIdem := " "
oItems := oComboBox:Items()
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Spain")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oItems:AddItem("Germany")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
601
|
Displays a glitch funnel for drop-down filter buttons (empty or active)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oAppearance
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oAppearance := oComboBox:VisualAppearance()
oAppearance:RenderType := -1
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABa8IQAAYAQGKIYBkAKBQAGaAoDDUNQxQwAAxwfBMKgBBCLIxhEYobgmGIXRpFMbxCKQahLEiTIhGUYJHgmK4tRiAUgxVDkBxrECZYqjcBZOiwLQ2TxDM7DNKUCBnIoABhGOaYDh+IQNQjUFKwTRFGRxK4EIRKAyTDLQdRyGSMMbjdQpBCbMiMRqhESKRq2UwYRYCFS1NalaztO6BUAvK67YrWez/YBfF+SfwGeqDYReWAPfgWERnQrGMLxbD8KwZAKTRjkGJ4XhuB41TbQMqufL9ByXHKSSDpGjaXjeO5VVjYNAvS69UzXNq3bhtQAOXCMEwCgI=")
oAppearance:Add(2,"CP:1 -2 0 0 0")
oComboBox:DrawGridLines := -1/*exAllLines*/
oComboBox:GridLineStyle := 512/*exGridLinesGeometric*/
oComboBox:ShowFocusRect := .F.
oComboBox:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x2000000)
oComboBox:SetProperty("Background",41/*exHeaderFilterBarActive*/,0x2000001)
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:HeaderHeight := 24
oComboBox:HeaderVisible := .T.
oColumn := oComboBox:Columns():Add("1st col")
oColumn:DisplayFilterButton := .T.
oColumn:DisplayFilterPattern := .F.
oColumn:Filter := "Item B"
oColumn:FilterType := 240/*exFilter*/
oComboBox:Columns():Add("2nd col")
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
600
|
How can I replace or add an icon at runtime
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ReplaceIcon("gAAAABgYACEHgUJFEEAAWhUJCEJEEJggEhMCYEXjUbjkJQECj8gj8hAEjkshYEpk8kf8ClsulsvAExmcvf83js5nU7nkCeEcn8boMaocXosCB9Hn09pkzcEuoL/fE+OkYB0gB9YhIHrddgVcr9aktZADAD8+P8CgIA==")
oComboBox:ReplaceIcon("C:\images\favicon.ico",0)
oComboBox:Columns():Add("Items"):SetProperty("Def",17/*exCellCaptionFormat*/,1)
oComboBox:Items():AddItem("Item <img>1</img>")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
599
|
Can I set a filter that automatically adds a * before and after the word, so the user can just search for 'cat' and it becomes '*cat*' automatically
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:HeaderHeight := 24
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
oColumn := oComboBox:Columns():Add("Items")
oColumn:DisplayFilterButton := .T.
oColumn:DisplayFilterPattern := .T.
oColumn:SetProperty("Def",21/*exFilterPatternTemplate*/,"*<%filter%>*")
oColumn:FilterType := 3/*exPattern*/
oColumn:Filter := "1"
oItems := oComboBox:Items()
h := oItems:AddItem("Root 1")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:AddItem("Root 2")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
598
|
I want to fix/lock the first item in the control

PROCEDURE OnClick(oComboBox)
LOCAL i
i := oComboBox:ItemFromPoint(-1,-1,c,hit)
oComboBox:LabelText := Transform(oComboBox:Items:CellCaption(i,0),"")
oComboBox:SetProperty("DropDown",,.F.)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:Click := {|| OnClick(oComboBox)} /*Occurs when the user presses and then releases the left mouse button over the list control.*/
oComboBox:BeginUpdate()
oComboBox:SearchColumnIndex := -1
oComboBox:AdjustSearchColumn := .F.
oComboBox:SingleEdit := .T.
oComboBox:Style := 2/*DropDownList*/
oComboBox:HeaderVisible := .F.
oComboBox:IntegralHeight := .T.
oComboBox:Columns():Add("Default")
oItems := oComboBox:Items()
oItems:SetProperty("LockedItemCount",0/*exTop*/,1)
oItems:SetProperty("CellCaption",oItems:LockedItem(0/*exTop*/,0),0,"(no assignment)")
oItems:SetProperty("ItemBackColor",oItems:LockedItem(0/*exTop*/,0),AutomationTranslateColor( GraMakeRGBColor ( { 255,255,0 } ) , .F. ))
oItems:AddItem("Item 1")
oItems:AddItem("Item 2")
oItems:AddItem("Item 3")
oComboBox:PutItems(oComboBox:GetItems(""))
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
597
|
Load data as a tree using a parent-id relationship

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:HeaderHeight := 24
oComboBox:DrawGridLines := 2/*exVLines*/
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
rs := CreateObject("ADODB.Recordset")
rs:Open("Select * FROM Employees WHERE 1=0","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oComboBox:DataSource := rs
oComboBox:Columns:Item(0):Width := 128
rs := CreateObject("ADODB.Recordset")
rs:Open("Employees","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oComboBox:PutItems(rs:GetRows(),";0;15")
oComboBox:Items():SetProperty("ExpandItem",0,.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
596
|
Highlight the leaf items

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumns
LOCAL oItems
LOCAL h,hR
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ConditionalFormats():Add("%CC0=0"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 128,128,128 } ) , .F. ))
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:HeaderHeight := 24
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
oColumns := oComboBox:Columns()
oColumns:Add("Item"):Width := 16
oColumns:Add("Desc")
oItems := oComboBox:Items()
hR := oItems:AddItem("Root")
oItems:SetProperty("CellCaption",hR,1,"The root directory /")
h := oItems:InsertItem(hR,,"Home")
oItems:SetProperty("CellCaption",h,1,"The home directory with user directories Alice and Bob")
oItems:InsertItem(h,,"Alice")
oItems:InsertItem(h,,"Bob")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:InsertItem(hR,,"Etc")
oItems:SetProperty("CellCaption",h,1,"The etc directory with one configuration file")
h := oItems:InsertItem(h,,"nginx.conf")
oItems:SetProperty("CellCaption",oItems:InsertItem(hR,,"Var"),1,"The var directory")
oItems:SetProperty("ExpandItem",hR,.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
595
|
Highlight the parent items

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumns
LOCAL oItems
LOCAL h,hR
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ConditionalFormats():Add("%CC0"):SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,0,0 } ) , .F. ))
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:HeaderHeight := 24
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
oColumns := oComboBox:Columns()
oColumns:Add("Item"):Width := 16
oColumns:Add("Desc")
oItems := oComboBox:Items()
hR := oItems:AddItem("Root")
oItems:SetProperty("CellCaption",hR,1,"The root directory /")
h := oItems:InsertItem(hR,,"Home")
oItems:SetProperty("CellCaption",h,1,"The home directory with user directories Alice and Bob")
oItems:InsertItem(h,,"Alice")
oItems:InsertItem(h,,"Bob")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:InsertItem(hR,,"Etc")
oItems:SetProperty("CellCaption",h,1,"The etc directory with one configuration file")
h := oItems:InsertItem(h,,"nginx.conf")
oItems:SetProperty("CellCaption",oItems:InsertItem(hR,,"Var"),1,"The var directory")
oItems:SetProperty("ExpandItem",hR,.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
594
|
Highlight the item being expanded or collapsed

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumns
LOCAL oItems
LOCAL h,hR
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ConditionalFormats():Add("%CX0"):Bold := .T.
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:HeaderHeight := 24
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
oColumns := oComboBox:Columns()
oColumns:Add("Item"):Width := 16
oColumns:Add("Desc")
oItems := oComboBox:Items()
hR := oItems:AddItem("Root")
oItems:SetProperty("CellCaption",hR,1,"The root directory /")
h := oItems:InsertItem(hR,,"Home")
oItems:SetProperty("CellCaption",h,1,"The home directory with user directories Alice and Bob")
oItems:InsertItem(h,,"Alice")
oItems:InsertItem(h,,"Bob")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:InsertItem(hR,,"Etc")
oItems:SetProperty("CellCaption",h,1,"The etc directory with one configuration file")
h := oItems:InsertItem(h,,"nginx.conf")
oItems:SetProperty("CellCaption",oItems:InsertItem(hR,,"Var"),1,"The var directory")
oItems:SetProperty("ExpandItem",hR,.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
593
|
Are there any properties to set text margins at tooltip, like Margins="5,5" (method 1). Margins is used to get some space between text and the tooltips border
PROCEDURE OnMouseMove(oComboBox,Button,Shift,X,Y)
oComboBox:ShowToolTip("new content","",,"+8","+8")
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oComboBox,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/
oComboBox:ToolTipMargin := "16,8"
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
592
|
Disable temporarily the column's sort, resize and drag and drop

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:SortBarVisible := .T.
oComboBox:SortBarCaption := "<fgcolor 808080><c>the header and the sort-bar are disabled (no drag and drop is allowed)"
oComboBox:HeaderEnabled := .F.
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:Columns():Add("Index"):FormatColumn := "1 index ``"
oComboBox:Columns():Add("Pos"):FormatColumn := "1 apos ``"
oComboBox:Columns():Add("Edit")
oComboBox:GridLineStyle := 512/*exGridLinesGeometric*/
oComboBox:DrawGridLines := 2/*exVLines*/
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
591
|
Expandable-caption
PROCEDURE OnAnchorClick(oComboBox,AnchorID,Options)
DevOut( Transform(AnchorID,"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:AnchorClick := {|AnchorID,Options| OnAnchorClick(oComboBox,AnchorID,Options)} /*Occurs when an anchor element is clicked.*/
oComboBox:BeginUpdate()
oComboBox:Style := 0/*Simple*/
oComboBox:TreeColumnIndex := -1
oComboBox:DrawGridLines := -1/*exAllLines*/
oComboBox:GridLineStyle := 512/*exGridLinesGeometric*/
oComboBox:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oComboBox:ShowFocusRect := .F.
oComboBox:SingleEdit := .T.
oComboBox:SearchColumnIndex := 1
oComboBox:AdjustSearchColumn := .F.
oComboBox:HeaderVisible := .F.
oComboBox:Columns():Add("Default")
oComboBox:Columns():Add("Select"):Visible := .F.
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("before item"),1,"before")
h := oItems:AddItem("<solidline> <c><b>Bank Account</b></solidline><br>+ owner: String <r><a 1;e64=gA8ABzABvABsABpABkg8JABuABlAA+AAgAECMcTi4AMwAM4AjMGhEGOUVAA4AAwk8plcqihwAElg0wiUlOkOiUEgQvgcFhsKhkIhUQiUUnccj0gn0jmMagUlowAMNOpEfkMNkkmlEqrctjQmAAjAA5AA2sssHcbnkdq1Ln1QtVSjQAAEBA==>▲</a><br><solidline>+ balance: Currency = 0</solidline><br>+ deposit(amount: Currency)<r><a 2;e64=gA8ABjAA+AECMwAM8DABvABshoAOQAEAAHAAGEWjEajMGNoAMoAOgANERMgAOcHAAvAEJhcEh0Qh0Tg0CmkqMMFlUuhkxiMTisXjNCjk6EwAEYAHIAG1MjY7lUsnkwh8/nUClk5gwAAEBA==> " +;
"650;</a><br>+ withdraw(amount: Currency)")
oItems:SetProperty("CellCaptionFormat",h,0,1/*exHTML*/)
oItems:SetProperty("CellSingleLine",h,0,0/*exCaptionWordWrap*/)
oItems:SetProperty("CellCaption",h,1,"Bank Account")
oItems:SetProperty("CellCaption",oItems:AddItem("after item"),1,"after")
oComboBox:SetProperty("Select",1,"after")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
590
|
Expandable-caption
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Style := 0/*Simple*/
oComboBox:TreeColumnIndex := -1
oComboBox:DrawGridLines := -1/*exAllLines*/
oComboBox:GridLineStyle := 512/*exGridLinesGeometric*/
oComboBox:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oComboBox:ShowFocusRect := .F.
oComboBox:SingleEdit := .T.
oComboBox:SearchColumnIndex := 1
oComboBox:AdjustSearchColumn := .F.
oComboBox:HeaderVisible := .F.
oComboBox:Columns():Add("Default")
oComboBox:Columns():Add("Select"):Visible := .F.
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("before item"),1,"before")
h := oItems:AddItem("<solidline><b>Header</b></solidline><br>Line1<r><a ;exp=show lines>+</a><br>Line2<br>Line3")
oItems:SetProperty("CellCaptionFormat",h,0,1/*exHTML*/)
oItems:SetProperty("CellSingleLine",h,0,0/*exCaptionWordWrap*/)
oItems:SetProperty("CellCaption",h,1,"Bank Account")
oItems:SetProperty("CellCaption",oItems:AddItem("after item"),1,"after")
oComboBox:SetProperty("Select",1,"after")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
589
|
Force hover-all feature
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:SetProperty("Background",500/*exScrollHoverAll*/,-1)
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
588
|
Disable hover-all feature (Windows 11 or greater)
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:SetProperty("Background",500/*exScrollHoverAll*/,AutomationTranslateColor( GraMakeRGBColor ( { 1,0,0 } ) , .F. ))
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
587
|
Display a custom tooltip
PROCEDURE OnMouseMove(oComboBox,Button,Shift,X,Y)
oComboBox:ShowToolTip(Transform(oComboBox:ColumnFromPoint(-1,-1),""),"",,"+8","+8")
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oComboBox,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
586
|
Shows the tooltip of the object moved relative to its default position
PROCEDURE OnMouseMove(oComboBox,Button,Shift,X,Y)
oComboBox:ShowToolTip("<null>","<null>",,"+8","+8")
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oComboBox,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/
oComboBox:Columns():Add("tootip"):ToolTip := "this is a tooltip assigned to a column"
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
585
|
How do I prevent changing the cell's state ( check-box state )
PROCEDURE OnCellStateChanging(oComboBox,Cell,NewState)
LOCAL oItems
oItems := oComboBox:Items()
NewState := oItems:CellState(,Cell)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:CellStateChanging := {|Cell,NewState| OnCellStateChanging(oComboBox,Cell,NewState)} /*Fired before cell's state is about to be changed.*/
oComboBox:BeginUpdate()
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
oColumn := oComboBox:Columns():Add("P1")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:PartialCheck := .T.
oColumn1 := oComboBox:Columns():Add("P2")
oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn1:PartialCheck := .T.
oItems := oComboBox:Items()
h := oItems:AddItem("Root")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
584
|
How can I enable the clear-button (visible only if required and focused)
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Style := 2/*DropDownList*/
oComboBox:HeaderVisible := .F.
oComboBox:IntegralHeight := .T.
oComboBox:ShowClearButton := 3
oComboBox:Columns():Add("Column")
oItems := oComboBox:Items()
oItems:AddItem("Zero")
oItems:AddItem("One")
oItems:AddItem("Two")
oComboBox:SetProperty("Select",0,"Zero")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
583
|
How can I enable the clear-button (visible only if focused)
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Style := 2/*DropDownList*/
oComboBox:HeaderVisible := .F.
oComboBox:IntegralHeight := .T.
oComboBox:ShowClearButton := 2
oComboBox:Columns():Add("Column")
oItems := oComboBox:Items()
oItems:AddItem("Zero")
oItems:AddItem("One")
oItems:AddItem("Two")
oComboBox:SetProperty("Select",0,"Zero")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
582
|
Change the clear-button appearance

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oAppearance
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oAppearance := oComboBox:VisualAppearance()
oAppearance:Add(1,"XP:Window 19 1")
oAppearance:Add(2,"XP:Window 19 3")
oComboBox:SetProperty("Background",190/*exClearButtonUp*/,0x1000000)
oComboBox:SetProperty("Background",191/*exClearButtonDown*/,0x2000000)
oComboBox:Style := 2/*DropDownList*/
oComboBox:HeaderVisible := .F.
oComboBox:IntegralHeight := .T.
oComboBox:ShowClearButton := 1
oComboBox:Columns():Add("Column")
oItems := oComboBox:Items()
oItems:AddItem("Zero")
oItems:AddItem("One")
oItems:AddItem("Two")
oComboBox:SetProperty("Select",0,"Zero")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
581
|
How can I enable the clear-button (always visible)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Style := 2/*DropDownList*/
oComboBox:HeaderVisible := .F.
oComboBox:IntegralHeight := .T.
oComboBox:ShowClearButton := -1
oComboBox:Columns():Add("Column")
oItems := oComboBox:Items()
oItems:AddItem("Zero")
oItems:AddItem("One")
oItems:AddItem("Two")
oComboBox:SetProperty("Select",0,"Zero")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
580
|
How can I enable the clear-button (visible only if required)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Style := 2/*DropDownList*/
oComboBox:HeaderVisible := .F.
oComboBox:IntegralHeight := .T.
oComboBox:ShowClearButton := 1
oComboBox:Columns():Add("Column")
oItems := oComboBox:Items()
oItems:AddItem("Zero")
oItems:AddItem("One")
oItems:AddItem("Two")
oComboBox:SetProperty("Select",0,"Zero")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
579
|
Is it possible to Click or Double Click on any area of the combo to force the dropdown list to open
PROCEDURE OnClick(oComboBox)
DevOut( Transform(oComboBox:DropDown(),"") )
oComboBox:SetProperty("DropDown",,.T.)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:Click := {|| OnClick(oComboBox)} /*Occurs when the user presses and then releases the left mouse button over the list control.*/
oComboBox:BeginUpdate()
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
oComboBox:Style := 2/*DropDownList*/
oComboBox:IntegralHeight := .T.
oComboBox:Columns():Add("P1")
oItems := oComboBox:Items()
h := oItems:AddItem("Root")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
oItems:SetProperty("SelectItem",h,.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
578
|
How do I assign a database to your control, using ADO, ADOR or ADODB objects (MDB,JET)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Exontrol\ExComboBox\Sample\Access\SAMPLE.MDB",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oComboBox:DataSource := rs
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
577
|
Re-order the cell's caption, icons and images/pictures

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:IntegralHeight := .T.
oComboBox:Images("gBJJgBAICAADAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEahkZAIAEEbjMjlErlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrlTiFdib/sNjr9gs1nldlrlqtFtt0stlguNvulyh91ud1vVVvNuvt7wFHr9/vl3luEwOJouIq+Dw2KyGRyWTymVy2XzGZzUuiw+lmej0gkUaksljaAnmDcD/cEbf7w1+ufD/fEbeB028bYAO3enB6AB++4EoA4A4sb4vHjXJ4nG5vKAHA4ca6XBjTAD/Y2x/eB/jcB")
oColumn := oComboBox:Columns():Add("ToLeft")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn1 := oComboBox:Columns():Add("ToRight")
oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn1:SetProperty("Def",34/*exCellDrawPartsOrder*/,"caption,picture,icons,icon,check")
oComboBox:DefaultItemHeight := 32
oComboBox:DrawGridLines := 2/*exVLines*/
oComboBox:HeaderAppearance := 4/*Etched*/
oItems := oComboBox:Items()
h := oItems:AddItem("Caption")
oItems:SetProperty("CellImage",h,0,2)
oItems:SetProperty("CellImages",h,0,"1,2")
oItems:SetProperty("CellPicture",h,0,oComboBox:ExecuteTemplate("loadpicture(`gCJKBOI4NBQaBQAhQNJJIIhShQAEEREAIA0ROZ6PT0hQKYZpIZDKBJkIgKByN5mNJsMsKPABVqXBI4KjrD7HL6GWKPJKiCIhMiySidKxbOzZZJWMLsGL2FqyLjZMonNa2CyiZDOUqsQqUEq0ZCNISFXDIFxzZ4hUrbdrefZ/fz3ZgzZ75Tz3XjvHZnZznPieb55AKgAqmRyOOzEhR7XirWaWQQMTa+QIhDbZOZAAoYUCPDAQG7FXI4JRrNCoIRdPyyFr0AYifDUKZ+PCufK4RReALLUbtdBHSrGTCCNKqT4MbRqUxxQx+CAAEQ2VCBbxqGaLYDZNgzFbCbLDarRCrqMYMM6cWqpHKUDqhZjnVijEoLcp0FCjVg2OYhTjN/QWk4bo4iseBsAcABIDoPA5g2HgADIkQfDCNxwkEQYnFmAIAB4OJHGcKAPioGRKFKdh2g6UB8iiZ5QkYQp3gKWhDlsWYmAARBcgCIAUniVpmiSA5AF3A4" +;
"wG8P41nGWwDDAW4MAAIpSG+bRzBoGx3AeCJhh6C4ljCUJGnSRBUFKAIQA6EgIHMWBoHqYgAngHJDCALBmhCCAfHOARAScUBvAmc5zHYXxoguXQ8DEMIAH8dI8HmP4/AyQJAEAYAoHqRByEQGJiECBAzAkKIpBYNIcikAp8kcZhDn4EBChmUoMgqHIqhiWoIgaDImgyVQImaRw/F0EZGCcSw3DaM4Kn6GBBhwYYZDGZo3C+RgOAmNQnhYeYqgsTZenEVgSFYLo2CydhGg4OROF2HJjlydR7i+cJjDGFo8BgHgVl4Po+DufJRgcbQOlkCxyKuCJNAsdwIhSC4mgieYKkeHJWD0Ih8BQaYYkkMYppwTg0EsFhJC0SxEkgeodDSFpTheV5SDgLBIieRIigyVo5CeOpymoWhtEQfRACMR4zE2KxRnsV5dF2ehFCeC50G+GBkBiZgaCUGYnBySY+BsdIuEkJJJDSSRsjGeYqEWOhliYVYOHWDYbFuNhFmcS5si" +;
"qbZrnGLYOh0DpPhyXo7D8d4ZHGXR1CcdRAnsMh7GELwIHiSx7CiXY0HYNZ1nOcoPg0SB+CWLwwGqUpbFAQJwEeEImlCVQwk4cJxAiFRIhMS4ulGYRRlmMQVDEHZxG8YxXhIaQSniLhIiaGwnDiJZGicZYnjeZw8D6OoSkWEIthwI4emudwtGwepNhuLQ3F8Zojm4bQrhALo0D0HZwCcJwoimeI0ASWR6CAJkJQORfAiFcLIXgahaiGCgMsKIpw8DPH8H4Pj2BhjrBMGQGYfxFjuEGIsB4rxbg+DSFsPAxBtChHoAQaYmRojVG0D0e6JALjVD2K0F4qxfjjGyPIRY/QXi1AOAILwFQGgOF8KYDwOgdBsHmCYcobRtjIHoGgZAmBgi7HgPcWoHxTAmCQCcVwTgDB+FYJgfQMAOj0F2PoZgkRMjeKQLkWATwdDzEkPMF4FxzAXDGJYfAlgPAuB+FkeIWxuizC0LkUwvQbD9ByHIDouxvBCBgCMCAvh4CXCM" +;
"EgSA0BJDEH+AsfwMgfjhDeL0Ro/xkgvH4JMXA7RYjyAONgPAWhfjyCuBEcAFRSAWE4BIOwEAUgTCaIYfA4wSBUAcAsDowQOBFA4J0Hg9h2B4EmCQTYVBdB0FwIwU4rByjJGmHIRQ8gJAKB4IoZgShaDKAQOUIolQkjVBuGoSw6hugaFaJoeoWgajaDKDoO4dB5j0FcJ0Zw1Ang3CQDEdgNQnA6EmHgGw4QuCiCSAKFIXBgilEwGcLAZAtDmC0N0WgLhaApFiK0HgfxniuGKP4GIvhrhhGgHEZgaRtB5GSBUcIhg5BnHkOAeQFB5A6DiEEao2xoDHH0KIQ4bxYBfFEP8RogB5BfA8AQHwvwqAZBIBURgCgwgPAqAkKYCgfgTHCBwDIegcgjFUDQXQPQzA4DsCkDwnRABNAwE8OgTw5C6AkJEPgPRSg+DqCANoMRBjuHUKEJglQWDrHYOATg3BuDGDWEMa4CQbj3HMB0Z4Pw5jLFuCAWYsB/D2DgBEUQmB" +;
"1iuDEMkfI0hUCyEkPIfwihKgqGsGobIGhNhfFGGoZY6gDDuGWDceANA1A2DyDUM4txaA/EwG0bo0wTDXEcH8Sg/BcD2GSHQC4pgtiuGOOkNIRg3hbG+MIGYjhzgaBeHwL4FgHAMAYFIfgJh4nJBQGkfAwRNiFAiO4KIlhoiKFiOoO4EwPiYGONUE4RATg6BOMcUwEApgZGmP4X4lxnjYGaLIZg7RNirH6FQG47xZCAC6OQLK5B1BYF8LgOQZAqh0FqGcBo/xMhpE6HsXomQwBKCwIcfA6w/DxA+IURAIxwgmBSCMKoJgOhFD0JMeIkQdhREwFAEQKRFioAYKkJIqQlhpBYFEPYUQui0GCGgFI9BlCOAUDoS4nRhA7HOOkFYdguhgEgGYUgZB2DeE6IIYIMQEgyAiPYHgYgnBlFiNsPYghKiODqISfddhPgVEOCQE4hg5iWHWPEfwfB3BgFYPkAIWQPAOC8BIb1MwrD+QsNEQ43ACAMAKGUQgsBhBoHCG" +;
"USNrxBBoEqNgGo8QMAJF+MMOwRxGCOFUBwHYdhODvDwMEBILgk21AKKkOI6RrgyD6LIDoJxNjkDUOQF4yAXgoC4FMXgqhKCiE4KACQow9D5CoJgLQiA9CwEMLUYwOxmhAFaEAdoSwdBBF0CEPQEWWDrGOBoEgGhTAaDyBsPoNgXA4CmHIWw+guCDCSJsNIjxsgADcNQPg2hxC2FKLACo2hNDFEMMcKw/BeCcE6LYXoGRvDJGCN8GIxgUjYAyOUbg6BpDrB0OYWw5AgjtGSOoEofAgjRG2NgY4+RRCfBeKUN4qQvi7H+HAYAchwCOCWAcQQZBBFiG4EIUYww3CFFuEQSgRAlBdDMIwCQiRrCMGCMcIwxhuiKDeE0PAlxCC8GFZQS4YhIgaEkJYS43hLAxE8EkTodQUBbBWMcHoNxy0lHqOETYyAeDeD4I0AQlRhD0G2E0O4PgKCjHeEoSgmBKCGEsBUS4vxUA8C6M0K4ox7irD+O0VouhfD7FUA33I+gm" +;
"iXE0IsLY1gtipG0CQbQLQPjFDuDQHw2RtjFGsK0bw4x9j0CcO8N4/RtBnhSgvAcBehmAOh0ANgiAhAnhih8gwh1gbhugRhSBRhDhjh2Bvgyhfh3gPhThOBIBOA6B9gsAYAah+BdhlBWBtAuBoBThtB8gnhFheAlhcByh6BKhvAahNBnh5B1gJB1g+hCAsgAAbB1gOguAJhIAoAmhFBvqzACABh0BlgFggA6CaBvBQA7BDEHAaA0AABoAcgGBEACg5AAgYgZgLAIBKgFBBhWh9AggCAIBoBNgAANA9AJhwABBxBwAKAYAAALCJu9ADAYAFBLExBEAiBEgmBEgxBEANBENbhmgJh5gJBNgJgzgJBfgRAvAhpKhnAQg5AIpkARASA/ASKGAPBJhZBIAdBJAbARh7n4BIhshkAnAZDVgkBZAUg5AWh5AVB5AEgFAbBFA4BFACglA5hlAfAVAChVAtBVAig1AQh1ABBNB+gaAcgUA7AqAbAWgTg2gfB2gSB9A" +;
"IBdA1BDh2BHAnBdAZg6Apgdh+h0g7lCBoAXh3BJBugahkBwBihkBkAsBYgtg/h7gNATBNgkhIgUhBg0gzI6BZgJRJglhvAvARgrAtBrALBbBFh2BxB2BZh9hFAcgOAcAdAcgCgcBzhcAVB7h9g5BlgxhohsArgDh5A8heA8BKh8hMB8gzB8APgPBmAdByAShQAVgUAWMMAaAThuATgpAWhNASgLARB3ASAwg+AsEwhiAoimBTBxhUAJhEAJhVhJBPhSBTBSBjgyhvBPlWAbgUgfhRhYBUAkAoBTAoBQgrgygfyhgTBShXBSgwhUh0hWgKhTguhQBphRAdhWAjhoBvg1gQA0g0A1AKACAehLgegzgrgmhcAmBahmB+A4AihzAhhLA6ArAFBrAfAbAyhbAPh2hYB7BzB8AOBDgwhTg+hnALAXB8hXBph3AxAPA/BPA2gLg7A8hxg+AlAXANB9ARB+A6B+h5gBgEBAg9BLhFBBAUghAWAhANhhhsgRgBARB" +;
"vgjAUgiALhjBpBig8hjhHgSA1ASBqgvA4gkhzAmgkglhRgnB7hlh8BKA0hNgxhMBtg7guh5gjAzhPAtB/BJgBBmhhBvAdhDAighg7g2glAzBlg+AVhUAVAphVAHhqURAGhvh7g0AgAahvA2FigMg2BhhaBrg6AMAegTA6AVi5B6BlgehNgMgoA9gigMAZA/hBgMgGg+hfgbAvAegSgbApgegXhZhqBagzBYgogfgwB/Cwg7hgh/hDA/gTg5B+gNh/gXh6B8hbh8B/hEhfASg2h/BHh6BfhZBbhuAjB/g9h7BbBth0h/gbh2Ayh/hAh+h/gnh/Ajh3AwgnA/gigPBzBPBVBegigfA1h8BPhshr1HgNhvAxB/hoBdgGgBhZh3sUhMh0gmh1hLg9hIgchQB7BthugQh5hbgugth6BTgLi/ALBkocoPgCA/BQBfhmh+hXhzA/hzh+g7B1hbgch/heh4gvhEg3hsBfBOgbA2B9ArhrANhPTSKXAMg7A+Bhh4A" +;
"fgZh/AVhdg/hzB7BTBsgfh5B+gdhZh/g7oQBogSh/BMrPhUhYBshvheBfA9AThph7ANhvhNgog/hZBNg/hdhvgIAxhjB2hHBhhOBtg1gPBCg3hZBDAmhDg0gfhNhAg8xMhgBiBvkig7BGgKBHBDBfBJhDBWhPg6BPxKAvBOBUhPB5hMhLhAh0mXBXAFhhB/A3hXBIhwB9AAgUBKg4AHA8AMgdgDhuB8hGghhcACgUAAgOA4AAA8AQABh2BQAegHA2BOB9BYhxhrBAA/hfg7hah4BCBrAxgABkAdAcK4BtgsAshdhZCSAVglgFgbASgeB3AQAPhNhIFJ2TBnhahchDBBh9gQBogABSAlhhBUgbBLANBvA+hbh+gAgWBzB5BXBWhFh/knAAADgLAkgiAggqAsAEhigrA1g2AKAqgKBfAZgdh9g2BbhugjhUgCgtgBALAtAYy+AWhEgmgAhFgSAaT4gAASgaATAahIgxACB9ghhGgfgmBoAEB4gIg/ANBag" +;
"xAkhGBRA0gs3yBaBjTNAFBCBFBghCACAJAlhFh+AAAEgCAQgQg+h2g7Bbhdgdgdhdhxh7gGvUhbBHhah/B5ATAzh3BOtAWchuh3hOA9h3XvAfgbh0hfh8Brg6hegDB9BtnWDQByA4gkAGJIAZAEgcgFh8gvBJBSAdh0BLhqBLACAABHBtgwB2x8yngsg+gAByA2gAB8hxhvh6Byg+AFBp4nBShMgmBzANgAB8ACBZADARBLPVhQh7uKBOg/B7hqBUgphbA+AfALAygQYohXBZi2AThYhcAeBPhAuwhdgIBEgiB7B9YzhDA0AvAthIBAg8AeBfApAohKA/B2BRA+BYm/gGBCguAG5JhAhjZLAgAvgvhPg1gYgehmAbgLZQhDAjAjgjgOh5heAxzgABhx5Wgig0AfgQA/B13iBgBchVgrhXgVXFhbh9gKBdgugUAbXDgygsg+A/B+B8AqA6g6hahbBsANBmA/hCgmhegeSVgeADBwB+BKg+BnA0hwBxBih" +;
"Fh7BxBxAxAIgGACAiAYAMAKA/BPgnguAMgPBbBngak8B+hsgqAVBag2hnBOAoBWAJhYgsA2AchvAHhIEMAmgmAmAkAjhHgPB6hUBkhSAqApgpjehsBcgZhAhuAYBOBdAuAXAwgpgPBMBwAOB5AjB+AeAYBwANACghgnBTgph3h0B0BMB4h91BgMAJhxAmgSByhshbajBaWPgTgCAYA4ACWGg3g/AyBfgzhnhPBxA1hrhXBshehChChRBQBQAgAeAFBNAtg7h3hHB7h7B7A9BOgHBDgggfhrBEBHA+h9gRB+68hPAfg3huAoAzbAAiAGBZA7B2htAqB7hYgxgwhVgehOVIFFBRgchLhhgAA7BfBthdB9hkhkgkg0hyBlAKhBg3ABAgAZBEg4AcBWAGYIhzgXAEgDA6gmhphwAtgRBYBmBwBwBQAThBA3gvBXn3hrBDBuBcA/BugnANgEBLhKhCgzhwYzhAAiARAohGgHgggJgMg9gMBrA4g+A6BoAUhch" +;
"ug3BBgAhZAIBPBNApAFAFAFh6hZBZAZAWhMgkAkBEgyApb1BOAqBGBIBmATAShAhsgOgHBuhxh4gsBOhph2ArAfBmBLCWgigxgOhZhshtAMBrghhDgHgjgfrIB5ABBCBQAcAgV4gPhcgIBWhVhXgnhBApA4hVBXhngFhTLMgcgOhRgtAMh+hFh2h2gohnAsgshCg+rTAGgNhcgjgvwhAsA0BOA8gV4dBN8qBJh68rgUgoB2BdA6h5hTABhMgWAxhTg9A2guguhJBDB0g4B5hzBmsvhwgwgzgog4g4gDAmAygPBUhWAqANgbg3AmBAI2AOBzhDA8hmBKgxBIAFgAAJhbCuhGgKl7BwhwAmgcAKAigDh2gZAJArABANgDBegx5WgZADgwBGBEAkBegAg2AYg9gwKABtBmhPABBoBZAPgFhHBMAPhmB/B6bdhZhdhdhth1hh8lBGgIBEAUgOhEgKgVgrA0AngaAaBiBIgyB5A3gLgXBcAEhlJjAJgEAsAJA" +;
"kgqqlhththThrhrhrBVBTAWhZhDhPhThIBWARg+Bn7Sg7A3gDhZAvAphEgegGgehuhpAJAyAJBZQ9gBggAAgAgwBDg3BCAAhkgTh0hkAAhLhthWhTgqAqhJBIAhhmAEgqgqgCgbBiB6h9BD8zhxhmABrOhfAqhMg7ghwiA4BSJNhMgqg4BEhkY8AjBphNATBaA6AtAwBYgEACBBiEBABIAggbg7gmh1AlglAlgahXBmhmB1BgBPBEAmAnwZgogyhVgmgABcgxsNBUAWAAB2B4AHBvA5h3B3ggAQBIAwg+hPhSgqBQCEA/gQBQA2htKUgfAJhFgkhkAYBtAIAMHpgbAasHg0gVAsBhhIgbBVAxAi/MgFBnAZBDBpB2ABgwADBWh3gchuBwBxhrhkB1BbhWAFAP5mBCghgTgnA8AgBV+OgqhSg2g1g3AnBOAcg+hNAYgbhHBRg8g6BjhjhjA2ADgdAdhTg/Aeg/hvA6h1h7A2gChLhKfjAdAxhahigYgMA" +;
"GAshzg5AAaYh/AGAjh2AChABwBOgwXnBFh/ApAzgT2GBZBGvTBHAjBGhAF0wAgsDi1w4Nza2UkyBUYiA+maxm6g1K32ad3s2Qg8AKlRaBlKD1wKE+rCCjSObAK8iGsFOrC0vR0lTeDV8IUatHu6GO2jkAHgAwgfgC5TYrVsKk2Y3MBRcpBQkgmOUuznY2FqKy0WSymXeX0ASwel0olHI5AwJ1mx0gL1mTXU6XS8Vpdj4hyg8BemDYZHqMFOUyYZTWP1WJ1CN1MTR6gH4cmysjKr2mlCqn3GuR+jDoJHGWlKkU+ajXpgg1yq2FQDFigSEBROwkCKnQwGwjliIU45x2HGyIB4dnM0UmUC+PhaLxefwOdia5zMT3+8wwYCQmEwdi4vQKqHKvigKHoKnc9Rs7GMDUOhhGOnAYjWkzKKRGyxsDUA01QCw0QCOF0uh0OkfRUMMbyRNwTBiCYZwKMIYyZAUkSlBYkxsCYAAHG4qwCBwMQfBYlxsNgsDhLEgwHA8" +;
"PiPNg1ygP4uywIgMSwK4zSQG46BnFAATDJcL3IHM6DQBsPR3O83j/AsJyGH8w4ZJY5TsN8EAdFojTwJ0AAoA4MgATIMDqAcrQPMEwTDBgVy0LYtiuK8qyrFs6QtCocnLCs8wAGAChOGM+CZJ0HAaoQHQYocBiaHtJT3LEfgCLYIgQNYgw4IQiSaBcAABBEAB/DAXS4HgPAgLUSCzGkPjkIATyXPQoCeNYfR6Do7QGI8Zj+CAHiyCY2SkIQTSSCIyDQCkpDBJQJinMMuAUPgOxGOcpA/AkoTzJwyiYFMiDwJEsShFAURFCwJRVFceQXKQIS8P8STlBgLggAcrAQCQATjIgZA0JgVSxL0OAmKI6CpEc4SuOkeBeOwMRnLQuQhOApDJAImYmD44BPIgAzFMYiR3LcQw4JwqhQAknAMFAxwEEwJwUO4ljCHgmxzNwNQ3EU3ScLYEAACocDePwZgCLI+yFN8jg7FEQTtKMcwrAAOhgHw6SQI4OCmJgjDmNAjj" +;
"5Gw+wbHkkTpEw7gpFgIAA2sABJEUThEK4QhgIJAQ==`)"))
oItems:SetProperty("CellCaption",h,1,oItems:CellCaption(h,0))
oItems:SetProperty("CellHAlignment",h,1,2/*RightAlignment*/)
oItems:SetProperty("CellImage",h,1,oItems:CellImage(h,0))
oItems:SetProperty("CellImages",h,1,"2,1")
oItems:SetProperty("CellPicture",h,1,oItems:CellPicture(h,0))
h := oItems:AddItem("<b>HTML</b> <off 4>Caption")
oItems:SetProperty("CellCaptionFormat",h,0,1/*exHTML*/)
oItems:SetProperty("CellImage",h,0,2)
oItems:SetProperty("CellImages",h,0,"1,2")
oItems:SetProperty("CellPicture",h,0,oComboBox:ExecuteTemplate("loadpicture(`gCJKBOI4NBQaBQAhQNJJIIhShQAEEREAIA0ROZ6PT0hQKYZpIZDKBJkIgKByN5mNJsMsKPABVqXBI4KjrD7HL6GWKPJKiCIhMiySidKxbOzZZJWMLsGL2FqyLjZMonNa2CyiZDOUqsQqUEq0ZCNISFXDIFxzZ4hUrbdrefZ/fz3ZgzZ75Tz3XjvHZnZznPieb55AKgAqmRyOOzEhR7XirWaWQQMTa+QIhDbZOZAAoYUCPDAQG7FXI4JRrNCoIRdPyyFr0AYifDUKZ+PCufK4RReALLUbtdBHSrGTCCNKqT4MbRqUxxQx+CAAEQ2VCBbxqGaLYDZNgzFbCbLDarRCrqMYMM6cWqpHKUDqhZjnVijEoLcp0FCjVg2OYhTjN/QWk4bo4iseBsAcABIDoPA5g2HgADIkQfDCNxwkEQYnFmAIAB4OJHGcKAPioGRKFKdh2g6UB8iiZ5QkYQp3gKWhDlsWYmAARBcgCIAUniVpmiSA5AF3A4" +;
"wG8P41nGWwDDAW4MAAIpSG+bRzBoGx3AeCJhh6C4ljCUJGnSRBUFKAIQA6EgIHMWBoHqYgAngHJDCALBmhCCAfHOARAScUBvAmc5zHYXxoguXQ8DEMIAH8dI8HmP4/AyQJAEAYAoHqRByEQGJiECBAzAkKIpBYNIcikAp8kcZhDn4EBChmUoMgqHIqhiWoIgaDImgyVQImaRw/F0EZGCcSw3DaM4Kn6GBBhwYYZDGZo3C+RgOAmNQnhYeYqgsTZenEVgSFYLo2CydhGg4OROF2HJjlydR7i+cJjDGFo8BgHgVl4Po+DufJRgcbQOlkCxyKuCJNAsdwIhSC4mgieYKkeHJWD0Ih8BQaYYkkMYppwTg0EsFhJC0SxEkgeodDSFpTheV5SDgLBIieRIigyVo5CeOpymoWhtEQfRACMR4zE2KxRnsV5dF2ehFCeC50G+GBkBiZgaCUGYnBySY+BsdIuEkJJJDSSRsjGeYqEWOhliYVYOHWDYbFuNhFmcS5si" +;
"qbZrnGLYOh0DpPhyXo7D8d4ZHGXR1CcdRAnsMh7GELwIHiSx7CiXY0HYNZ1nOcoPg0SB+CWLwwGqUpbFAQJwEeEImlCVQwk4cJxAiFRIhMS4ulGYRRlmMQVDEHZxG8YxXhIaQSniLhIiaGwnDiJZGicZYnjeZw8D6OoSkWEIthwI4emudwtGwepNhuLQ3F8Zojm4bQrhALo0D0HZwCcJwoimeI0ASWR6CAJkJQORfAiFcLIXgahaiGCgMsKIpw8DPH8H4Pj2BhjrBMGQGYfxFjuEGIsB4rxbg+DSFsPAxBtChHoAQaYmRojVG0D0e6JALjVD2K0F4qxfjjGyPIRY/QXi1AOAILwFQGgOF8KYDwOgdBsHmCYcobRtjIHoGgZAmBgi7HgPcWoHxTAmCQCcVwTgDB+FYJgfQMAOj0F2PoZgkRMjeKQLkWATwdDzEkPMF4FxzAXDGJYfAlgPAuB+FkeIWxuizC0LkUwvQbD9ByHIDouxvBCBgCMCAvh4CXCM" +;
"EgSA0BJDEH+AsfwMgfjhDeL0Ro/xkgvH4JMXA7RYjyAONgPAWhfjyCuBEcAFRSAWE4BIOwEAUgTCaIYfA4wSBUAcAsDowQOBFA4J0Hg9h2B4EmCQTYVBdB0FwIwU4rByjJGmHIRQ8gJAKB4IoZgShaDKAQOUIolQkjVBuGoSw6hugaFaJoeoWgajaDKDoO4dB5j0FcJ0Zw1Ang3CQDEdgNQnA6EmHgGw4QuCiCSAKFIXBgilEwGcLAZAtDmC0N0WgLhaApFiK0HgfxniuGKP4GIvhrhhGgHEZgaRtB5GSBUcIhg5BnHkOAeQFB5A6DiEEao2xoDHH0KIQ4bxYBfFEP8RogB5BfA8AQHwvwqAZBIBURgCgwgPAqAkKYCgfgTHCBwDIegcgjFUDQXQPQzA4DsCkDwnRABNAwE8OgTw5C6AkJEPgPRSg+DqCANoMRBjuHUKEJglQWDrHYOATg3BuDGDWEMa4CQbj3HMB0Z4Pw5jLFuCAWYsB/D2DgBEUQmB" +;
"1iuDEMkfI0hUCyEkPIfwihKgqGsGobIGhNhfFGGoZY6gDDuGWDceANA1A2DyDUM4txaA/EwG0bo0wTDXEcH8Sg/BcD2GSHQC4pgtiuGOOkNIRg3hbG+MIGYjhzgaBeHwL4FgHAMAYFIfgJh4nJBQGkfAwRNiFAiO4KIlhoiKFiOoO4EwPiYGONUE4RATg6BOMcUwEApgZGmP4X4lxnjYGaLIZg7RNirH6FQG47xZCAC6OQLK5B1BYF8LgOQZAqh0FqGcBo/xMhpE6HsXomQwBKCwIcfA6w/DxA+IURAIxwgmBSCMKoJgOhFD0JMeIkQdhREwFAEQKRFioAYKkJIqQlhpBYFEPYUQui0GCGgFI9BlCOAUDoS4nRhA7HOOkFYdguhgEgGYUgZB2DeE6IIYIMQEgyAiPYHgYgnBlFiNsPYghKiODqISfddhPgVEOCQE4hg5iWHWPEfwfB3BgFYPkAIWQPAOC8BIb1MwrD+QsNEQ43ACAMAKGUQgsBhBoHCG" +;
"USNrxBBoEqNgGo8QMAJF+MMOwRxGCOFUBwHYdhODvDwMEBILgk21AKKkOI6RrgyD6LIDoJxNjkDUOQF4yAXgoC4FMXgqhKCiE4KACQow9D5CoJgLQiA9CwEMLUYwOxmhAFaEAdoSwdBBF0CEPQEWWDrGOBoEgGhTAaDyBsPoNgXA4CmHIWw+guCDCSJsNIjxsgADcNQPg2hxC2FKLACo2hNDFEMMcKw/BeCcE6LYXoGRvDJGCN8GIxgUjYAyOUbg6BpDrB0OYWw5AgjtGSOoEofAgjRG2NgY4+RRCfBeKUN4qQvi7H+HAYAchwCOCWAcQQZBBFiG4EIUYww3CFFuEQSgRAlBdDMIwCQiRrCMGCMcIwxhuiKDeE0PAlxCC8GFZQS4YhIgaEkJYS43hLAxE8EkTodQUBbBWMcHoNxy0lHqOETYyAeDeD4I0AQlRhD0G2E0O4PgKCjHeEoSgmBKCGEsBUS4vxUA8C6M0K4ox7irD+O0VouhfD7FUA33I+gm" +;
"iXE0IsLY1gtipG0CQbQLQPjFDuDQHw2RtjFGsK0bw4x9j0CcO8N4/RtBnhSgvAcBehmAOh0ANgiAhAnhih8gwh1gbhugRhSBRhDhjh2Bvgyhfh3gPhThOBIBOA6B9gsAYAah+BdhlBWBtAuBoBThtB8gnhFheAlhcByh6BKhvAahNBnh5B1gJB1g+hCAsgAAbB1gOguAJhIAoAmhFBvqzACABh0BlgFggA6CaBvBQA7BDEHAaA0AABoAcgGBEACg5AAgYgZgLAIBKgFBBhWh9AggCAIBoBNgAANA9AJhwABBxBwAKAYAAALCJu9ADAYAFBLExBEAiBEgmBEgxBEANBENbhmgJh5gJBNgJgzgJBfgRAvAhpKhnAQg5AIpkARASA/ASKGAPBJhZBIAdBJAbARh7n4BIhshkAnAZDVgkBZAUg5AWh5AVB5AEgFAbBFA4BFACglA5hlAfAVAChVAtBVAig1AQh1ABBNB+gaAcgUA7AqAbAWgTg2gfB2gSB9A" +;
"IBdA1BDh2BHAnBdAZg6Apgdh+h0g7lCBoAXh3BJBugahkBwBihkBkAsBYgtg/h7gNATBNgkhIgUhBg0gzI6BZgJRJglhvAvARgrAtBrALBbBFh2BxB2BZh9hFAcgOAcAdAcgCgcBzhcAVB7h9g5BlgxhohsArgDh5A8heA8BKh8hMB8gzB8APgPBmAdByAShQAVgUAWMMAaAThuATgpAWhNASgLARB3ASAwg+AsEwhiAoimBTBxhUAJhEAJhVhJBPhSBTBSBjgyhvBPlWAbgUgfhRhYBUAkAoBTAoBQgrgygfyhgTBShXBSgwhUh0hWgKhTguhQBphRAdhWAjhoBvg1gQA0g0A1AKACAehLgegzgrgmhcAmBahmB+A4AihzAhhLA6ArAFBrAfAbAyhbAPh2hYB7BzB8AOBDgwhTg+hnALAXB8hXBph3AxAPA/BPA2gLg7A8hxg+AlAXANB9ARB+A6B+h5gBgEBAg9BLhFBBAUghAWAhANhhhsgRgBARB" +;
"vgjAUgiALhjBpBig8hjhHgSA1ASBqgvA4gkhzAmgkglhRgnB7hlh8BKA0hNgxhMBtg7guh5gjAzhPAtB/BJgBBmhhBvAdhDAighg7g2glAzBlg+AVhUAVAphVAHhqURAGhvh7g0AgAahvA2FigMg2BhhaBrg6AMAegTA6AVi5B6BlgehNgMgoA9gigMAZA/hBgMgGg+hfgbAvAegSgbApgegXhZhqBagzBYgogfgwB/Cwg7hgh/hDA/gTg5B+gNh/gXh6B8hbh8B/hEhfASg2h/BHh6BfhZBbhuAjB/g9h7BbBth0h/gbh2Ayh/hAh+h/gnh/Ajh3AwgnA/gigPBzBPBVBegigfA1h8BPhshr1HgNhvAxB/hoBdgGgBhZh3sUhMh0gmh1hLg9hIgchQB7BthugQh5hbgugth6BTgLi/ALBkocoPgCA/BQBfhmh+hXhzA/hzh+g7B1hbgch/heh4gvhEg3hsBfBOgbA2B9ArhrANhPTSKXAMg7A+Bhh4A" +;
"fgZh/AVhdg/hzB7BTBsgfh5B+gdhZh/g7oQBogSh/BMrPhUhYBshvheBfA9AThph7ANhvhNgog/hZBNg/hdhvgIAxhjB2hHBhhOBtg1gPBCg3hZBDAmhDg0gfhNhAg8xMhgBiBvkig7BGgKBHBDBfBJhDBWhPg6BPxKAvBOBUhPB5hMhLhAh0mXBXAFhhB/A3hXBIhwB9AAgUBKg4AHA8AMgdgDhuB8hGghhcACgUAAgOA4AAA8AQABh2BQAegHA2BOB9BYhxhrBAA/hfg7hah4BCBrAxgABkAdAcK4BtgsAshdhZCSAVglgFgbASgeB3AQAPhNhIFJ2TBnhahchDBBh9gQBogABSAlhhBUgbBLANBvA+hbh+gAgWBzB5BXBWhFh/knAAADgLAkgiAggqAsAEhigrA1g2AKAqgKBfAZgdh9g2BbhugjhUgCgtgBALAtAYy+AWhEgmgAhFgSAaT4gAASgaATAahIgxACB9ghhGgfgmBoAEB4gIg/ANBag" +;
"xAkhGBRA0gs3yBaBjTNAFBCBFBghCACAJAlhFh+AAAEgCAQgQg+h2g7Bbhdgdgdhdhxh7gGvUhbBHhah/B5ATAzh3BOtAWchuh3hOA9h3XvAfgbh0hfh8Brg6hegDB9BtnWDQByA4gkAGJIAZAEgcgFh8gvBJBSAdh0BLhqBLACAABHBtgwB2x8yngsg+gAByA2gAB8hxhvh6Byg+AFBp4nBShMgmBzANgAB8ACBZADARBLPVhQh7uKBOg/B7hqBUgphbA+AfALAygQYohXBZi2AThYhcAeBPhAuwhdgIBEgiB7B9YzhDA0AvAthIBAg8AeBfApAohKA/B2BRA+BYm/gGBCguAG5JhAhjZLAgAvgvhPg1gYgehmAbgLZQhDAjAjgjgOh5heAxzgABhx5Wgig0AfgQA/B13iBgBchVgrhXgVXFhbh9gKBdgugUAbXDgygsg+A/B+B8AqA6g6hahbBsANBmA/hCgmhegeSVgeADBwB+BKg+BnA0hwBxBih" +;
"Fh7BxBxAxAIgGACAiAYAMAKA/BPgnguAMgPBbBngak8B+hsgqAVBag2hnBOAoBWAJhYgsA2AchvAHhIEMAmgmAmAkAjhHgPB6hUBkhSAqApgpjehsBcgZhAhuAYBOBdAuAXAwgpgPBMBwAOB5AjB+AeAYBwANACghgnBTgph3h0B0BMB4h91BgMAJhxAmgSByhshbajBaWPgTgCAYA4ACWGg3g/AyBfgzhnhPBxA1hrhXBshehChChRBQBQAgAeAFBNAtg7h3hHB7h7B7A9BOgHBDgggfhrBEBHA+h9gRB+68hPAfg3huAoAzbAAiAGBZA7B2htAqB7hYgxgwhVgehOVIFFBRgchLhhgAA7BfBthdB9hkhkgkg0hyBlAKhBg3ABAgAZBEg4AcBWAGYIhzgXAEgDA6gmhphwAtgRBYBmBwBwBQAThBA3gvBXn3hrBDBuBcA/BugnANgEBLhKhCgzhwYzhAAiARAohGgHgggJgMg9gMBrA4g+A6BoAUhch" +;
"ug3BBgAhZAIBPBNApAFAFAFh6hZBZAZAWhMgkAkBEgyApb1BOAqBGBIBmATAShAhsgOgHBuhxh4gsBOhph2ArAfBmBLCWgigxgOhZhshtAMBrghhDgHgjgfrIB5ABBCBQAcAgV4gPhcgIBWhVhXgnhBApA4hVBXhngFhTLMgcgOhRgtAMh+hFh2h2gohnAsgshCg+rTAGgNhcgjgvwhAsA0BOA8gV4dBN8qBJh68rgUgoB2BdA6h5hTABhMgWAxhTg9A2guguhJBDB0g4B5hzBmsvhwgwgzgog4g4gDAmAygPBUhWAqANgbg3AmBAI2AOBzhDA8hmBKgxBIAFgAAJhbCuhGgKl7BwhwAmgcAKAigDh2gZAJArABANgDBegx5WgZADgwBGBEAkBegAg2AYg9gwKABtBmhPABBoBZAPgFhHBMAPhmB/B6bdhZhdhdhth1hh8lBGgIBEAUgOhEgKgVgrA0AngaAaBiBIgyB5A3gLgXBcAEhlJjAJgEAsAJA" +;
"kgqqlhththThrhrhrBVBTAWhZhDhPhThIBWARg+Bn7Sg7A3gDhZAvAphEgegGgehuhpAJAyAJBZQ9gBggAAgAgwBDg3BCAAhkgTh0hkAAhLhthWhTgqAqhJBIAhhmAEgqgqgCgbBiB6h9BD8zhxhmABrOhfAqhMg7ghwiA4BSJNhMgqg4BEhkY8AjBphNATBaA6AtAwBYgEACBBiEBABIAggbg7gmh1AlglAlgahXBmhmB1BgBPBEAmAnwZgogyhVgmgABcgxsNBUAWAAB2B4AHBvA5h3B3ggAQBIAwg+hPhSgqBQCEA/gQBQA2htKUgfAJhFgkhkAYBtAIAMHpgbAasHg0gVAsBhhIgbBVAxAi/MgFBnAZBDBpB2ABgwADBWh3gchuBwBxhrhkB1BbhWAFAP5mBCghgTgnA8AgBV+OgqhSg2g1g3AnBOAcg+hNAYgbhHBRg8g6BjhjhjA2ADgdAdhTg/Aeg/hvA6h1h7A2gChLhKfjAdAxhahigYgMA" +;
"GAshzg5AAaYh/AGAjh2AChABwBOgwXnBFh/ApAzgT2GBZBGvTBHAjBGhAF0wAgsDi1w4Nza2UkyBUYiA+maxm6g1K32ad3s2Qg8AKlRaBlKD1wKE+rCCjSObAK8iGsFOrC0vR0lTeDV8IUatHu6GO2jkAHgAwgfgC5TYrVsKk2Y3MBRcpBQkgmOUuznY2FqKy0WSymXeX0ASwel0olHI5AwJ1mx0gL1mTXU6XS8Vpdj4hyg8BemDYZHqMFOUyYZTWP1WJ1CN1MTR6gH4cmysjKr2mlCqn3GuR+jDoJHGWlKkU+ajXpgg1yq2FQDFigSEBROwkCKnQwGwjliIU45x2HGyIB4dnM0UmUC+PhaLxefwOdia5zMT3+8wwYCQmEwdi4vQKqHKvigKHoKnc9Rs7GMDUOhhGOnAYjWkzKKRGyxsDUA01QCw0QCOF0uh0OkfRUMMbyRNwTBiCYZwKMIYyZAUkSlBYkxsCYAAHG4qwCBwMQfBYlxsNgsDhLEgwHA8" +;
"PiPNg1ygP4uywIgMSwK4zSQG46BnFAATDJcL3IHM6DQBsPR3O83j/AsJyGH8w4ZJY5TsN8EAdFojTwJ0AAoA4MgATIMDqAcrQPMEwTDBgVy0LYtiuK8qyrFs6QtCocnLCs8wAGAChOGM+CZJ0HAaoQHQYocBiaHtJT3LEfgCLYIgQNYgw4IQiSaBcAABBEAB/DAXS4HgPAgLUSCzGkPjkIATyXPQoCeNYfR6Do7QGI8Zj+CAHiyCY2SkIQTSSCIyDQCkpDBJQJinMMuAUPgOxGOcpA/AkoTzJwyiYFMiDwJEsShFAURFCwJRVFceQXKQIS8P8STlBgLggAcrAQCQATjIgZA0JgVSxL0OAmKI6CpEc4SuOkeBeOwMRnLQuQhOApDJAImYmD44BPIgAzFMYiR3LcQw4JwqhQAknAMFAxwEEwJwUO4ljCHgmxzNwNQ3EU3ScLYEAACocDePwZgCLI+yFN8jg7FEQTtKMcwrAAOhgHw6SQI4OCmJgjDmNAjj" +;
"5Gw+wbHkkTpEw7gpFgIAA2sABJEUThEK4QhgIJAQ==`)"))
oItems:SetProperty("CellCaption",h,1,oItems:CellCaption(h,0))
oItems:SetProperty("CellCaptionFormat",h,1,1/*exHTML*/)
oItems:SetProperty("CellHAlignment",h,1,2/*RightAlignment*/)
oItems:SetProperty("CellImage",h,1,oItems:CellImage(h,0))
oItems:SetProperty("CellImages",h,1,"2,1")
oItems:SetProperty("CellPicture",h,1,oItems:CellPicture(h,0))
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
576
|
ImageSize property on 32 (specifies the size of control' icons/images/check-boxes/radio-buttons)

PROCEDURE OnAddColumn(oComboBox,Column)
/*Column.Def(48) = 2*/
/*Column.Def(49) = 2*/
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oAppearance
LOCAL oColumn,oColumn1,oColumn2,oColumn3
LOCAL oItems
LOCAL h,hR
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:AddColumn := {|Column| OnAddColumn(oComboBox,Column)} /*Fired after a new column has been added.*/
oComboBox:BeginUpdate()
oComboBox:ImageSize := 32
oComboBox:LabelHeight := 36
oComboBox:DefaultItemHeight := 36
oComboBox:HeaderHeight := oComboBox:DefaultItemHeight()
oComboBox:SortBarHeight := oComboBox:DefaultItemHeight()
oComboBox:Font():Size := 16
oComboBox:FilterBarFont():Size := oComboBox:Font():Size()
oComboBox:ToolTipFont():Size := oComboBox:Font():Size()
oComboBox:Indent := 26
oComboBox:Images("gBJJgBAIDAAEg4AEEKAD/hz/EMNh8TIRNGwAjEZAEXjAojKAjMLjABhkaABAk0plUrlktl0vmExmUzmk1m03nE5nU7nk9miAoE+oVDolFo1HpFJpU5h8Sf9OqFNqUOqNUqdPq9VrFWrlbr1QpdhAFAkFis1ntFptVrtkrpszrNvmVxqk3uVtm1kmF3sdBvF/wGBmV+j9BYGHwWJulfxdax2NyFdx2JlV6l9Nw7AAGZymdz2Cy2GxErvWcz9ivlwyV21cuxugwktzGIzmvwtl0+53U5y0a0Wazmmyu/3dCyOMyXHx/J5nIr9q3uyqnBxFN3G46ma4vb7mD2Ng4nZze00fDkHC7t7us2rOX5tguetpHRlmz4HVqnXk1PjHO+CMPo9MBMC+j2vC8j7wS8cFNI4kBo05UIvfCT/NsnsApU+0Fqg/T+oy/kPxC0sEQfErKQK96+w28UWRI8UGvO8sTLS9r2PWmsMJTDTask3CsIbIEQRA3shOXEEAO/GclJ9" +;
"FEKrrA8FRbKMXRIlb0JxCkjS1LMswhCcvuel0cv26cSMa8Ufx+2sQwhEUoSXOCjSbLcnxjKc7sdKUVyq28NtVI71P9P7JxtQEapjQ6fzfM8zPfNE2PhIsLL63E40slk5y7N89LcyU9SvMb3SdUc6VJLj5VLVLfO/PS9KzNFHUa/0XyBD0dxlS9cxhMlTRSoNXypPErWDPyfNS+MwprRNO0FD8wVVZ1AI08URwVRjtJ1WCn21QkkUrXVLVPQS/XIkFgTxT9iONZ9xVTdq+L1eKg3kkF6Upe68XtfV51/MtrVjBlwYFL1ev8y1/P6/lyzzYl02wntj0RVFmS1Qa+M5as93QxEUW9e993rfmQ2+vy65M/mL1lhl/2bj2ByVduMtNhCJT9hdz41nN14Ld12Z9UjfI/oUAaGseiw6+uFLLhcVabJOS5RqOE0BHlZ5VnEr5fOMs3st+aa/bbRzrJGV51Y0b0DbqaWXZD90hIsPbjWu52+6Wyadpe66hhO+P/Xi" +;
"oW5rD8ZbrUZuVg6n1dsE/cXmewu1m9PVwnd35/nueXho/NaJzmjc61W76esuT77eG8pTquy9TwWH8LEzG8RDfFalx3Gcfvna9rvG/cptGLd9tuI6TZOP5Fiqi99vea+X4VRcBq/JZZtVQ9cwSs5lsXE372+a9z7PbfB3VVqHyvMctLto8uob6eV0m/cD6MN2v+T33t6sBut42vdv2bJ8a997x2maFJfK+qArbGJPEKE+1qTflMsIdW/GCJX17KcT6/czr/X+u1g29B7j/4BQfWkkx4zIHisjhPCmE0K4SwtXM+d4BvHRwNZOoBph9IJvPek9d40FoMJxf691jj2ywQQcHEWET4XJwkTszlVqm2GokewxtBT1DpQjRxDN0rUVDNKdC3lb6tzNOwh6upMSSYfv4YBCl/bsn9PxiFCEo7SI6Obc9HeOrnY8x4jtHtdpN4GRbaorhsbu18Pph5CiHymI0RpSXGJ/z2oUOxYxG858AyiI+bfJtuTcG5yelBJy" +;
"T8okhqFd4a5yxL0rvulYtKCsZiWxWkc1s1cRoxxwhA31DLE0mR9l9HqX8fJgTDmFMVH0MIsRzVYnwnMi1dyzmhLt2kS2pxIiU62Wj5ptQGlSYFakLonTUJNLKaM5WzlffEkuFkk5wTrhVO2eE7G6lJhxFFYUZ55zmn0WuBCD4pzhirFCKkbomsOoIYmZx5p90LoYWGPdD5g0QmJRKYxbZ6zYoVQ2jVGylSak7KSkFH6RSjpHKFuU+YMyNo5SulkC6I0vonTCitMXPoEpVS2H5FQfEqp2R1opIgAEkJISYARTCukOhmPNI5Ex/wzGHUsicMwA1LHgQ90Y/KpoQHAD+pB/R4NzIaMAB9Xaw1gqaAOsh/A/ptIkWUfhGK1kZH8RgH5GqvgArqRmt4AAPrTroRofBGADkqr6Rmu4D7CEaHARiwpJrEEZsXXwlVjyMWRsaRqwdkLGNBABZmytmyMnaINZqyVpLR2ftKAAAdd6h2osbaskdiq4EZtgSmyNcbVW" +;
"RJNXe3AA7REar3b0stlAAXBtoRmvJGLjEYAHUWsFcwCD/rnaop9aEICMAPdK5hT6xpeuzdOtAgKuJeGfdq6ggEbkTvAP+p9UCHXrvKkcgIA==")
oAppearance := oComboBox:VisualAppearance()
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABfICg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsOatVqjG5sYjcGC3La9cz3Pq/bpuDCbMxuaK1TrYXr1TTrcofBDldAxXRKDxRDWVhLnYOw9i6XxzjuXprCaOoKB6EwbiCZZCGOdZYlcT4xHmbhMnwNxtn+G5bmqdZ7n4Pw/i+X5zm+dQ9g4CAFjsfAJheOI8HsDoWDWTB/lwSAQkmA5PEgRYoDyDwYFY" +;
"FoFmGCBmBqBphDgRJ0gOTIYBGRB/lyRh0iSCZbjYWJzgWDwIjYLoLmMCJGDKDJjBgWgqG6YhyhGHRzA2aJ1mCABOAiOJvhCZBJBYRoRmSCQmEqEQimkAZgg8TZnDCV4UkmCUmBKZYJGYWoWCUUhiFMNZckNUh2GENoaGaGZmgmJhqhqZpGGIEx2GYIxSGGGJdggWJth2Z4JmYeoemeSZ2H6H4hGmQhihyTRHGYLg7CiCgmgqIpokoNoOiOaJ4jqAochqaZGgaCxpAoZoaiaaJqEmWIcGgShcnCJwqEqFoR3YOoFlgchflqNouiuawHmWSYqGkWZQhcatzmaOoumuSp2j6L5bBaKo0GQKRnGGCxqiyCwmkqMpsksNpOGUGI7A0ew1G0Rxlg0PptgsZuDG2Sx2l6N5tnYNZZjUDRXDCVo5l2FoymqOpukuNpujubwLjmWY5k0ZwxkaFxYlWdp6j6b5Lnafo/nABQdg2FxcUsY5BkmXAkmeQpckwNRrkKTh" +;
"8CSHZBk4NwyC4KxxgMDwakOMZDn8GgwnGAo2C4cwthMcwmCcMoHBMHRehwTIghySYNksZwcH4HBMEsHx5hyPItiweYxnwSZEH4Mozn0fR+DMAo7EYJ50gkdZelKdNql2UgJn0GIukwH4HicQRai2GI4mSVpNl0dZGledgNgcYpYDWUx3FsOQi5YV5anaTY3G6W53A2RxylydxFjiaxEFCCgBBAQ==")
oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABcoFg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsLpOS5LNKsaxmWLYdhFdTxQi6LpvfA8BwXC6JY7heRYRbFbYxRjGNi1TS7G4nGKd5WGuL4UHwI4VkaYxii8V4pgQMgVBQdQ5iCTYGi8T4vlWbJ3nuPg+l+H5AlSCg6ByPBoE8Ap3jqYxhBido5g0OgOGOGI4CsSpCCAcgcAuEokiEN5NCKfJ9DyTRjnS" +;
"cg1CEYxOBmBpPCgagdgcIZoHoGIFA4AxQkCAxKAgKBwgGSpIBCZhjF2E5UnQPQMiMCJBCIBwxkSQgsgo+JtDKT4ziiQw+k6EwAnsOgLnkHI+yCQ4iEuE4klkPhShEJBpAoPgymOMoaDgHBjFMBgyD0HYTiCZSZhIIIGC4ChiHSew5kwM5omILZPiOBI0hwZw5kodIdA+M4Uj4PxOmMSJ9DuTQzmyZgviceZagaHVfj4awwmaAh2GUIYmCOEZZDaDRDFGdwcg4EwyHMN4LBOaJbCoaZqgKH8qkMfIyD8DozDyfA7A0Coui0OpMmOZJdCsahKg6NooioChwmEMxLEoXJbDUTRXGSUgykyMgQG0GpPHMdI3D4TRCgSeQ0kmaw+lGNAtCOZJVCiT5DhyRQwAqMg0EoDBBGEGAsASC5yiSCw+k4Mp6lWNQuksTpRjMTxDGzJwGmGMpDDKXYTECSAxl6Q5olkK4PgMMIVkASRMBMBgzEkaZEjsNALhIZA6AeQB" +;
"gk0ZJEgAAJ0CIAgODMNIsD6DRih9uYwFyAwfCUb5ijmbI+gwdxkk8MZMGeMpPCkDxzBiC5MHMPJLDSSROFMLIoBEQogEMFJPnENYQGgE4DCOaJfC7tYkhGTQ0kyWwykuXpMiyRpKjKR4wngM4JmOWJACCdYtHMWw+Eych4nINYLAEYA8AgdAEEsQZajaQoog4GxPiMVIolcdxNG8XZVkmNoRwWRVBlFeFEeAZQJgnFiHgHwcAhjhHgGMSI5xki2CyA4EQsA3i0HkBsLwKRFgAHcPkHopBJBcBeDUYI7xyDOHqKkWo2hLCsDIBIY4qQ5A8DoMMYwOAqCSBGKgU4yB2iDBwIgB4hxQgAAWNgBoAgsBdEcBUQ4sQ9A/HqD0JI8RpBzH2OYVgahLBHFiJQJweQiDhDUE4SAARQAzFsG0EQwA6AOWSBkFgVAIBCHeGERQFQiCQHeFkC4vkiB8DyB4F4QxVDvGMNEOQexMjlBeOAKQiQLgfDA7QEAaRiBdEkH8" +;
"TI7AZiFBAGYBIABWjYBiGACioQ4C1A+AMMgWhfgxHgPsT4URIB0COKgPgjRwiAB8AYUArxBgCF6J4GY5hrAOCAPAAoGRRCsCIMEXATXfgAF8BMJwURuEQDgD4Q4OBoAeHGFgLIwQrC2D0JoSQ+QvhrHoSgQI8AbDFGID8C4Ah6BQAQAASACwgCYCMAUMARAvCKAiAMCAokeCKBEOAKgCBoDaHuMsEAqwJDiACDURg8R6gPCyDofYWAhgoDIJ4ZAuhoiGAYGgRoQw/A0GMMga4GwxiEDeIYYInATCDBQAoBAwAoDlA0KMBoVRGiDGwDQUYIRsgaGGDgM4LAwDWB8EcIA1APhjEgGQVwgRIgjFIIQHokgZA+CSEkLIKQSjHAwMsCwDAsAEB2ABTIwRwD6A8CMToSxkAxE4HYIw+BsgbBEDAHYBwojCBoIYFgXSjABE4MsHIbQWhlGILQS4UhvBdAUKEEwHgxDAAABQQQUAhgKHiDwE4JS4A7BGLQZwCR4g" +;
"aBEMUYAqgKApHgGwVAIRNgvBMMQXImwZDtE4I8UIyAZCDCAE8AwrhgAdEEBACQLRCg4FEB4AYtA7CdEiPQMoJAMDNCkOMCAXAFDhH0D0Q4EgfAaGSK4NYzRUj9BuCgAgswOBjB4Fqpw8B2ADAwE4A4Qx2DAE6JIaQPQGhAGKBcIQ5B5gHByKIFARwADbAyKUfgdBKBBGyEcVIAB/ijHoIoSA0gdBNl+OATYERZgBGSDYWIWAUCEGKA4FAhR7CIBtYQGYZg4CMAiKEcAOwkBjHWE8Z4lQgA+DkBoTohwwCeAaMEEgBQCCABgHMRwQRhhMEWFQd4HwZgwDqFESItAbAGEANCpINAzANCCJkK4ah+heFYBURwsQrS2CsMYMoWGBhYDWI0EInQgiApXaOVI1QFDsC8MUNoMBMA1HMJga4eh+BeAWOgNNowGjYzCGAAwax+iJBeBVT4gxoBIAGFsJFBxgBiGKFkKQ7g5DFFQEcAo4AzDDACKEQQLgCiJDYB0M" +;
"gRBCCQAgQEA==")
oAppearance:Add(3,"gBFLBCJwBAEHhEJAAEhABQ4Fg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EMRwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsLpOS5LNKsaxmWLYdhFdTxQi6LpvfA8BwXC6JY7heRYRbFbYxRjGNi1TS7G4nGKd5WGuL4UHwI4VkaYxii8V4pgQMgVBQdQ5iCTYGi8T4vlWbJ3nuPg+l+H5AlSCg6ByPBoE8Ap3jqYxhBido5g0OgOGOGI4CsSpCCAcgcAuEosiYN5NHMOJ+D4TpTnS" +;
"eQ7CEY4uBmBpPhgagdgcIZoHibIEyUBJZDQIJShoCgcCAcoyAQOYYlcZJ1D0DxDCiQgwEiAZMHEMJLFKPJ9D2DoDnidQ4k+Y5QmKEROBkIhKD0JIZDIS4TGUCQuEeEJjnOIg8CuY4RkYNgwGMM5RllGpThDRYIGKZIpCkJFUH0PINyWcQ3CaaZCG+HBnEOTJhD8Tx4GoeQ/GcaZSHOH5nCmQhshoZhihYYwhiYA4RlkNoNEMUZ3ByDjwEsPxOnMaJ9DuDR6F6GYmCmKh0nANtMioP4Gg8aoSiIO5NhodociqaY6GaFYkEyOg8lsNRNTaUgykyMgQG0GpPiONJbD8DpDEyfA6k0KwOkWMQsGsAJU0SagwkoJQJDIPISCQCJTGSUwyGaM4KkmMgtksHpFjAZ4TGCBAbgaSpcksdhNAMIJHHsD5TjSWWMAMOpwjyLwbk6cAz0KRJiDkDYzESCwiggcgcgYIQwCIEINCMCITj6TVxkMXp2j0cQLlCTo7E2F4" +;
"ymkMZdhMPJHDGHpLAyVg+k4UwrCCSIyByDJ8DuDY8CiWY0kiXAXC6QJwFKGIjCeJpjgyezjlyDw6klHx5myRoMGwZwbkcToTEiew4kwbQfEmUgPkOKJUD4DpTHSHQmgkXI/ASTA1g0XIEDMTBimyfI7jSLYHEiUoPk0Fw/kadAsHGao8A0A5smEMJ2mNyg5gzJZwDgCpChyIZVyIZwFCMJEPASRkBqE+IcHInRcDxA2H4bIsx0AtDsIBpwZwYicD6BscwDwUBgHCIYaIfgtiVH2O4WgUwJjEFeAEQA7y4hMCiBMS4aRdB9A4CYE4LxljyBMHcDItBxinDCLcTYmgejBFQ9UTg9gFBOEmAQTI7A4iZGMGkQAWQ7jYA2HIL8BRAjDG4HcCwARbjZHiNoDw1nLDnGyNINQ+wjCpBMEgcovQUgICQJEcgWRuBvAyJ4d4ugpCUAINcHogxIgnDiM4N4axzD3F2JMTY/hRqYF6FsWIxhYAGGoAALQYgYirBwBE" +;
"BwpAjBEAAIEIYsA2gOHCMAGgXAACIDmMITAUgFABH0D0I4WwvhNFGMAOIvxRD2GKNcMA8gjAPDCPwBogRPAxA8PgRwZRICYDED8RAXQEghEAN8DIgwIBdB4JYWwMgtiQHoFQKAiRFguFKGwGQhglDsEOVwEQQRkCKBwOIHgSREDRBYHEXQcQdD7GIGARQHRxipBrMobgewDCUCADsEYWAzgMHKHQDQxxsDzA6EMfAeQHB4GQDkUYPA0iECiKoGgRhcDdA2GMQA8AOCjDSPgHI4QnApAKBICwHg1A+BcAwcYsgbjGGQNkCIgRsA6EcBEWANADjsB0B8YYzQQDIGSBcEYZBCCPEkFIHQSgkgZAwG4IwBAbAYGGAgL4Ch4g8BOCQAA2KKC0GcAke4AAXAFCoHkDw4xbBFEcJkE4JRSiEFeJYKQVRMgJHODwX4xAgC/AsIIZAeAHDRG0HYI40RKCLEGDUI4jAghwBWIceA+whCpHMFYZYOQxglDMHMBQGxYj" +;
"VHiAoBIPgfgHGwPsHYJRSB6A0IERQLhCjJHMA4OQoAoCOACLYGYSx8DpBQIMWQdRnDRH+DsE4fB3CeAmM67kAAXBFEIDYDI7wLBtEoEIfYNwjiUGGJQYQMAjCHEAO0C4zxW29CoCgfIxR9AKA6J8BgUAIhDGMIoJ40hqgwCgKETgnBhhqCGI0AIqgZhGDANQDIlBDCRGkCoJISR0g1BSKQOgfAzBRG0DYHARh4DeDAOwANuw8ApCKKkYg/RPhjBsH0J4yg5hPGWN0GwFBHQBFaDoQIURljFAoB4GgzRVzbBECQFQRQoguHGHANwDRdCKy8CgSIGwhhoDYJYYI1giBICSAEgI=")
oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBUrGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDs" +;
"YYDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVmWCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVoWiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiSe41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbh" +;
"FCcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==")
oComboBox:SetProperty("HeaderBackColor",0x4c6c6c6)
oComboBox:SetProperty("SelBackColor",0x4000000)
oComboBox:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,1 } ) , .F. ))
oComboBox:SetProperty("CheckImage",0/*Unchecked*/,16777216)
oComboBox:SetProperty("CheckImage",1/*Checked*/,33554432)
oComboBox:SetProperty("CheckImage",2/*PartialChecked*/,50331648)
oComboBox:SetProperty("Background",20/*exSelBackColorFilter*/,oComboBox:SelBackColor())
oComboBox:SetProperty("Background",21/*exSelForeColorFilter*/,oComboBox:SelForeColor())
oComboBox:SetProperty("Background",26/*exBackColorFilter*/,oComboBox:BackColor())
oComboBox:SetProperty("Background",27/*exForeColorFilter*/,oComboBox:ForeColor())
oComboBox:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oComboBox:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x4000000)
oComboBox:SetProperty("Background",41/*exHeaderFilterBarActive*/,0x4010101)
oComboBox:SetProperty("Background",1/*exFooterFilterBarButton*/,0x40000ff)
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:ShowFocusRect := .F.
oComboBox:SortBarVisible := .T.
oComboBox:SetProperty("BackColorSortBar",oComboBox:BackColor())
oComboBox:SetProperty("BackColorLevelHeader",oComboBox:BackColor())
oComboBox:FilterBarDropDownHeight := 1
oComboBox:IntegralHeight := .T.
oColumn := oComboBox:Columns():Add("Check")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:PartialCheck := .T.
oColumn:Width := 128
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 256/*exShowCheckBox*/
oColumn1 := oComboBox:Columns():Add("Pos")
oColumn1:FormatColumn := "1 pos ``"
oColumn1:AllowSort := .F.
oColumn1:Width := 48
oColumn1:AllowSizing := .F.
oColumn1:Alignment := 1/*CenterAlignment*/
oColumn1:HeaderAlignment := 1/*CenterAlignment*/
oColumn2 := oComboBox:Columns():Add("Image")
oColumn2:DisplayFilterButton := .T.
oColumn2:FilterList := 8480/*exShowExclude+exShowCheckBox+exSortItemsAsc*/
oColumn2:FilterType := 10/*exImage*/
oColumn2:Width := 128
oColumn2:HeaderImage := 1
oColumn3 := oComboBox:Columns():Add("Images")
oColumn3:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn3:Width := 196
oColumn3:HTMLCaption := "<img>1</img><img>2</img><img>3</img> Images"
oComboBox:Columns:Item("Pos"):Position := 3
oItems := oComboBox:Items()
hR := oItems:AddItem("Root")
oItems:SetProperty("ItemDivider",hR,0)
oItems:SetProperty("ItemDividerLine",hR,0/*EmptyLine*/)
h := oItems:InsertItem(hR,,"Child A")
oItems:SetProperty("CellImage",h,2,1)
oItems:SetProperty("CellImages",h,3,"1,2,3")
oItems:SetProperty("CellCaption",h,3,"123")
h := oItems:InsertItem(hR,,"Child B")
oItems:SetProperty("CellState",h,0,1)
oItems:SetProperty("CellImage",h,2,3)
oItems:SetProperty("CellImages",h,3,"2,3,1")
oItems:SetProperty("CellCaption",h,3,"231")
oItems:SetProperty("SelectItem",h,.T.)
h := oItems:InsertItem(hR,,"Child C")
oItems:SetProperty("CellImage",h,2,2)
oItems:SetProperty("CellState",h,3,1)
oItems:SetProperty("CellCaption",h,3,"312")
oItems:SetProperty("CellImages",h,3,"3,1,2")
oItems:SetProperty("ExpandItem",hR,.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
575
|
ImageSize property on 16 (default) (specifies the size of control' icons/images/check-boxes/radio-buttons)

PROCEDURE OnAddColumn(oComboBox,Column)
/*Column.Def(48) = 2*/
/*Column.Def(49) = 2*/
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oAppearance
LOCAL oColumn,oColumn1,oColumn2,oColumn3
LOCAL oItems
LOCAL h,hR
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:AddColumn := {|Column| OnAddColumn(oComboBox,Column)} /*Fired after a new column has been added.*/
oComboBox:BeginUpdate()
oComboBox:ImageSize := 16
oComboBox:Images("gBJJgBAIDAAEg4ACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjMLjABAAgjUYkUnlUrlktl0vmExmUzmk1m03nE5nU7nkrQCAntBoVDolFo1HoM/ADAplLptImdMYFOqdSqlXq1QrVbrlGpVWsFNrNdnNjsk7pQAtNroFnt0sh8Yr9iulTuNxs1Eu8OiT/vsnsNVutXlk/oGGtVKxGLxWNtsZtN8iUYuNvy0Zvd+xNYwdwvl4p870GCqc8vOeuVttmp1knyOayWVy+WzN/ze1wOElenm+12WUz/Bv2/3UyyWrzeutux2GSyGP2dQ33C1ur3GD3M4zUNzHdlWjq/E3nGzVpjWv4HA7fRy/Tv2IrN8rPW6nZ3ve7mUlfu20Z8acvQyb+vY9jasYoDwMm+LytVBDqKG3z8O3Cb8P+mkAuY9cCQ2uL4KaxDKvkp8RNLEjqugnrwQo/UWPzFyeQw5sNLZFENrI4kOqU66pw8uzmOKvTqNqjULJvGL1JO48GtT" +;
"GsbLdEL3scxLlyiw8dQeoUVxdLTtyKmUjwGlslRPJsnK1HbAKbKCrsQo8uQk/CeP44iaR/ATnTNPLvyxPU+z9P9AUDQVBowiofJXQ6Oo+kKMpIkjztE4TKn4P6JowfgPnwD5/nAjB8AOeAPo0eAA1IAFH07UhAIMpYAVIYFHqBUhwVjV1S1EtQAHxW65V0AZwAeuQAnwB5gAPYViEDVhwAHTQBkCjB4gOhwDmCyhH0sACAg==")
oAppearance := oComboBox:VisualAppearance()
oAppearance:Add(4,"gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHLUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBUrGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDs" +;
"YYDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVmWCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVoWiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiSe41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbh" +;
"FCcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==")
oComboBox:SetProperty("HeaderBackColor",0x4c6c6c6)
oComboBox:SetProperty("SelBackColor",0x4000000)
oComboBox:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,1 } ) , .F. ))
oComboBox:SetProperty("Background",20/*exSelBackColorFilter*/,oComboBox:SelBackColor())
oComboBox:SetProperty("Background",21/*exSelForeColorFilter*/,oComboBox:SelForeColor())
oComboBox:SetProperty("Background",26/*exBackColorFilter*/,oComboBox:BackColor())
oComboBox:SetProperty("Background",27/*exForeColorFilter*/,oComboBox:ForeColor())
oComboBox:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oComboBox:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x4000000)
oComboBox:SetProperty("Background",41/*exHeaderFilterBarActive*/,0x4010101)
oComboBox:SetProperty("Background",1/*exFooterFilterBarButton*/,0x40000ff)
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:ShowFocusRect := .F.
oComboBox:SortBarVisible := .T.
oComboBox:SetProperty("BackColorSortBar",oComboBox:BackColor())
oComboBox:SetProperty("BackColorLevelHeader",oComboBox:BackColor())
oComboBox:FilterBarDropDownHeight := 1
oComboBox:IntegralHeight := .T.
oColumn := oComboBox:Columns():Add("Check")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:PartialCheck := .T.
oColumn:Width := 128
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 256/*exShowCheckBox*/
oColumn1 := oComboBox:Columns():Add("Pos")
oColumn1:FormatColumn := "1 pos ``"
oColumn1:AllowSort := .F.
oColumn1:Width := 48
oColumn1:AllowSizing := .F.
oColumn1:Alignment := 1/*CenterAlignment*/
oColumn1:HeaderAlignment := 1/*CenterAlignment*/
oColumn2 := oComboBox:Columns():Add("Image")
oColumn2:DisplayFilterButton := .T.
oColumn2:FilterList := 8480/*exShowExclude+exShowCheckBox+exSortItemsAsc*/
oColumn2:FilterType := 10/*exImage*/
oColumn2:Width := 128
oColumn2:HeaderImage := 1
oColumn3 := oComboBox:Columns():Add("Images")
oColumn3:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn3:Width := 196
oColumn3:HTMLCaption := "<img>1</img><img>2</img><img>3</img> Images"
oComboBox:Columns:Item("Pos"):Position := 3
oItems := oComboBox:Items()
hR := oItems:AddItem("Root")
oItems:SetProperty("ItemDivider",hR,0)
oItems:SetProperty("ItemDividerLine",hR,0/*EmptyLine*/)
h := oItems:InsertItem(hR,,"Child A")
oItems:SetProperty("CellImage",h,2,1)
oItems:SetProperty("CellImages",h,3,"1,2,3")
oItems:SetProperty("CellCaption",h,3,"123")
h := oItems:InsertItem(hR,,"Child B")
oItems:SetProperty("CellState",h,0,1)
oItems:SetProperty("CellImage",h,2,3)
oItems:SetProperty("CellImages",h,3,"2,3,1")
oItems:SetProperty("CellCaption",h,3,"231")
oItems:SetProperty("SelectItem",h,.T.)
h := oItems:InsertItem(hR,,"Child C")
oItems:SetProperty("CellImage",h,2,2)
oItems:SetProperty("CellState",h,3,1)
oItems:SetProperty("CellCaption",h,3,"312")
oItems:SetProperty("CellImages",h,3,"3,1,2")
oItems:SetProperty("ExpandItem",hR,.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
574
|
The user clicks the drop-down filter, select a value and the control's list filters for the selected item(s). Is there a way for when the user then goes to the next column to add another filter and the drop down arrow is clicked for the list of values they can filter by to be limited to what is being displayed in the list due to the first filter they set

PROCEDURE OnAddColumn(oComboBox,Column)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:AddColumn := {|Column| OnAddColumn(oComboBox,Column)} /*Fired after a new column has been added.*/
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oComboBox:DataSource := rs
oComboBox:Columns:Item("ShipVia"):Position := 2
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
573
|
Can I limit the number of characters the user can type into, similar with text-box's MaxLength property
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:Columns():Add("Max 2 chars"):EditMaxLength := 2
oComboBox:AutoSearch := .F.
oComboBox:AutoComplete := .F.
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
572
|
Is it possible to change the visual appearance of the drop down button (method 3, theme)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:VisualAppearance():Add(1,"XP: COMBOBOX 1 1")
oComboBox:VisualAppearance():Add(2,"XP: COMBOBOX 1 3")
oComboBox:SetProperty("Background",4/*exDropDownButtonUp*/,0x1000000)
oComboBox:SetProperty("Background",5/*exDropDownButtonDown*/,0x2000000)
oComboBox:Columns():Add("Default")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
571
|
Is it possible to change the visual appearance of the drop down button (method 2, ebn)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABKYCg6AADACAxRDgMQBQKAAzQFAYbBuGCGAAGIYBTgmFgAQhFcZQSKUOQTDKMIziYBYJhEMwwDhEIwjGKsIhsGIbJAGQBJCjWGodQLOEgzNC0IxNFCQILhEZJADKII8TTOU5UPRESwTE4cKBmKhQCo2NpKR7VUTxCKQahLLivoCjBT8EzHMqtIzrCA6MpaP4pQjKcqwTJ8YyHEi0ZrjazKaj6T5AXDUcaWbbNVx3PK3aioOpLZrqOZZYzYFoRFYNTTJMTLcZifBsEoib4qSxMVaDPQWNT3CTIMQve4IEyGQ6jDDVOjYfqmDzTPAALLFUaNYzoOKyABMHATBIXAY7BIIOQ1HgHNBwJAAczzcTSBIABECQoBoTBnEOKZIkuJYFEMCBElgXBoG0CQUHKIB8huYBiDUEYtAkA4Ol+D5PmWdJ7nyHh/iKCQ8iYWwWkWY5aAIfgfFgFgEgGXxoCSbR+g8N5wFMCABnCDgQAiX54AY" +;
"A4CiCCAaBgfhfjedgTBgBZhggVQVEWCBOBWAIPGgZgqgcIJYHoEQYEWcYMniDJPFOUJ1giYhYEYJ8siidgMgOIQ4kIMoMmASJWDeCQiGgAgogYY54jgI4QiMM5iCsOxkGiYhJgWIoYjIQILmMGRGAQNpNjMcJjhiZBYloVoOiSKAKCAGIkBkdhEgKJgDHAMgMEMcJkDgD4mDODhlhGY4QgwbgbEcAxElANBnnGQhehwJgZkwN4EmEOZaHiGQgikGBpBoRozGSWS5jmRoKgSSJiDiEAgEgEgOg2HZnhkTgZiaJxIEyDwjkkF5Qn6K5qAqCgRiOKhYG4PYqCiOBGiuKxrGqPJ+iwag6D4eotiuCoqiyKYfCqepAiyahKECbYxGuKwejaFJsiqBpBh4YRbBqPIPGyCAWlWLICDoTBrDsLhCgiIgpC2W4mkmK5JmIdIfDwbwDi2bxAlAECAg=")
oComboBox:SetProperty("Background",4/*exDropDownButtonUp*/,0x1f0f0f0)
oComboBox:SetProperty("Background",5/*exDropDownButtonDown*/,0x1666666)
oComboBox:Columns():Add("Default")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
570
|
Is it possible to change the visual appearance of the drop down button (method 1, no visual theme)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:UseVisualTheme := 0/*exNoVisualTheme*/
oComboBox:Columns():Add("Default")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
569
|
Is it possible to highlight the column's header once a filter is applied

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oAppearance
LOCAL oColumn
LOCAL oColumns
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oAppearance := oComboBox:VisualAppearance()
oAppearance:Add(2,"gBFLBCJwBAEHhEJAAEhABX8GACAADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjBI8ExXFqNACkGKwYgmNYiTLAcgANJ0WBaGIZJ4gOT5fDKMoEDRRYADFCscwxJybQAqGQKKb+VgAVY/cTyBIAEQSKA0TDOQ5TSKWB4JPZQRBEbZMNBtBIUJquKaqShdQJCU5FdY3Xblez9P7AMBwLFEC4NQ8YNYuPhjR4dRTIMhvVAsUArFh8Zg9GZZFjmDIDT4ydBLTQwcyVIKnP5qOa6XbmPoCQDYKxZHYxPzVDa3axuL76dqCAT7XrXNy1TbNRrzQKfcJqfCbdw2YaDZLOOT3fjuI4hhKaRzFAHJ+jYQ4xHuY4gHuGIXGeExqC8Tp6C+PoEm+G5ImycRgh0XwvDGa5rgOeoejyXwnFeQp2mkf5ClgBB9gCWIYAwfYAEKV58mkdwOggNArgOXY2EWLoDkKOA0mg" +;
"bhOGgZApgaSBIHWSYHSmbApgYThmESZYJkIeIkgeCpfliLIHgpMIcmUYYYmODAlg2SI4mWfRfGOEguDcCRjFYAJihCQhJBSDoRmONgKEcI4kFCEJhhOVYTmYnAlEAQhWBMJYJGYWoWmWSR2F6F5lnkWAQhUAgpEieRWEuSYkjWGpmkmNhuhuZwJkYcocmaaYkjyEhngnUA6lEFAlAEgI=")
oAppearance:Add(1,"CP:2 -8 -4 2 4")
oComboBox:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1fefefe)
oComboBox:SetProperty("Background",41/*exHeaderFilterBarActive*/,0x1010101)
oComboBox:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oComboBox:HeaderHeight := 28
oComboBox:DrawGridLines := -2/*exRowLines*/
oComboBox:HeaderVisible := .T.
oColumns := oComboBox:Columns()
oColumns:Add("C1"):DisplayFilterButton := .T.
oColumn := oColumns:Add("C2")
oColumn:DisplayFilterButton := .T.
oColumn:Filter := "Item 2"
oColumn:FilterType := 240/*exFilter*/
oColumns:Add("C3"):DisplayFilterButton := .T.
oItems := oComboBox:Items()
h := oItems:AddItem("Item 1")
oItems:SetProperty("CellCaption",h,1,"Item 2")
oItems:SetProperty("CellCaption",h,2,"Item 3")
h := oItems:AddItem("Item 4")
oItems:SetProperty("CellCaption",h,1,"Item 5")
oItems:SetProperty("CellCaption",h,2,"Item 6")
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
568
|
How do I change the drop down filter icon/button (black)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oAppearance
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oAppearance := oComboBox:VisualAppearance()
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABXUIQAAYAQGKIcBiAKBQAGYBIJDEMgzDDAUBjKKocQTC4AIQjCK4JDKHYJRpHEZyCA8EhqGASRAFUQBYiWE4oSpLABQaK0ZwIGyRIrkGQgQgmPYDSDNU4zVIEEglBI0TDNczhNDENgtGYaJqHIYpZBcM40TKkEZoSIITZcRrOEBiRL1S0RBhGcRUHZlWzdN64LhuK47UrWdD/XhdVzXRbjfz1Oq+bxve48Br7A5yYThdr4LhOFQ3RjIL4xbIcUwGe6VZhjOLZXjmO49T69HTtOCYBEBA")
oComboBox:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oComboBox:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1000000)
oComboBox:SetProperty("Background",26/*exBackColorFilter*/,AutomationTranslateColor( GraMakeRGBColor ( { 0,0,1 } ) , .F. ))
oComboBox:SetProperty("Background",27/*exForeColorFilter*/,AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oComboBox:SetProperty("Description",25/*exFilterBarExclude*/,"<bgcolor 0><fgcolor ffffff> Exclude </fgcolor></bgcolor>")
oComboBox:HeaderAppearance := 0/*None2*/
oComboBox:SetProperty("HeaderBackColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,0 } ) , .F. ))
oComboBox:SetProperty("HeaderForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oComboBox:HeaderVisible := .T.
oColumn := oComboBox:Columns():Add("Filter")
oColumn:FilterList := 8448/*exShowExclude+exShowCheckBox*/
oColumn:DisplayFilterButton := .T.
oColumn:AllowSort := .F.
oColumn:AllowDragging := .F.
oItems := oComboBox:Items()
oItems:AddItem("One")
oItems:AddItem("Two")
oItems:AddItem("Three")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
567
|
Can I customize the count of selected items, shown on the right side of the control's label (multiple-selection)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumns
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:Style := 2/*DropDownList*/
oComboBox:SingleSel := .F.
oComboBox:SingleEdit := .T.
oComboBox:LabelColumnIndex := 0
oComboBox:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor ( { 51,153,255 } ) , .F. ))
oComboBox:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oComboBox:LabelText := "<bgcolor=3399FF><fgcolor=FFFFFF> %c </fgcolor></bgcolor>"
oColumns := oComboBox:Columns()
oColumns:Add("Column")
oColumns:Add("Sub-Column")
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item 1"),1,"SubItem 1.1")
oItems:SetProperty("CellCaption",oItems:AddItem("Item 2"),1,"SubItem 2.1")
oItems:SetProperty("CellCaption",oItems:AddItem("Item 3"),1,"SubItem 3.1")
oItems:SetProperty("CellCaption",oItems:AddItem("Item 4"),1,"SubItem 4.1")
oItems:SetProperty("SelectItem",oItems:ItemByIndex(1),.T.)
oItems:SetProperty("SelectItem",oItems:ItemByIndex(3),.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
566
|
Is it possible to hide the count of selected items, shown on the right side of the control's label (multiple-selection)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumns
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:Style := 2/*DropDownList*/
oComboBox:SingleSel := .F.
oComboBox:SingleEdit := .T.
oComboBox:LabelColumnIndex := 0
oComboBox:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor ( { 51,153,255 } ) , .F. ))
oComboBox:SetProperty("SelForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,255,255 } ) , .F. ))
oComboBox:LabelText := " "
oColumns := oComboBox:Columns()
oColumns:Add("Column")
oColumns:Add("Sub-Column")
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item 1"),1,"SubItem 1.1")
oItems:SetProperty("CellCaption",oItems:AddItem("Item 2"),1,"SubItem 2.1")
oItems:SetProperty("CellCaption",oItems:AddItem("Item 3"),1,"SubItem 3.1")
oItems:SetProperty("CellCaption",oItems:AddItem("Item 4"),1,"SubItem 4.1")
oItems:SetProperty("SelectItem",oItems:ItemByIndex(1),.T.)
oItems:SetProperty("SelectItem",oItems:ItemByIndex(3),.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
565
|
Does your control support multiple-selection

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumns
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:Style := 2/*DropDownList*/
oComboBox:SingleSel := .F.
oComboBox:SingleEdit := .T.
oComboBox:LabelColumnIndex := 0
oColumns := oComboBox:Columns()
oColumns:Add("Column")
oColumns:Add("Sub-Column")
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item 1"),1,"SubItem 1.1")
oItems:SetProperty("CellCaption",oItems:AddItem("Item 2"),1,"SubItem 2.1")
oItems:SetProperty("CellCaption",oItems:AddItem("Item 3"),1,"SubItem 3.1")
oItems:SetProperty("CellCaption",oItems:AddItem("Item 4"),1,"SubItem 4.1")
oItems:SetProperty("SelectItem",oItems:ItemByIndex(1),.T.)
oItems:SetProperty("SelectItem",oItems:ItemByIndex(3),.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
564
|
Is it possible to show the filterbar on top of the rows

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:FilterBarPromptVisible := 8192/*exFilterBarTop*/
oComboBox:HeaderHeight := 24
oComboBox:FilterBarHeight := oComboBox:HeaderHeight()
oComboBox:HeaderAppearance := 1/*Flat*/
oComboBox:DrawGridLines := -1/*exAllLines*/
oComboBox:GridLineStyle := 512/*exGridLinesGeometric*/
oComboBox:ColumnAutoResize := .T.
oColumn := oComboBox:Columns():Add("Column")
oColumn:DisplayFilterButton := .T.
oColumn:FilterType := 3/*exPattern*/
oColumn:Filter := "B*"
oColumn1 := oComboBox:Columns():Add("Index")
oColumn1:FormatColumn := "1 index ``"
oColumn1:Position := 0
oColumn1:Width := 48
oColumn1:AllowSizing := .F.
oColumn1:SortType := 1/*SortNumeric*/
oColumn1:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oItems := oComboBox:Items()
oItems:AddItem("A.1")
oItems:AddItem("A.2")
oItems:AddItem("B.1")
oItems:AddItem("B.2")
oItems:AddItem("B.3")
oItems:AddItem("C")
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
563
|
Is there anyway to stop the header changing colour when the mouse hovers/moves across the column header (non-clickable)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oColumns
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:HeaderAppearance := 4/*Etched*/
oColumns := oComboBox:Columns()
oColumns:Add("Item")
oColumn := oColumns:Add("Pos")
oColumn:Position := 0
oColumn:Width := 32
oColumn:AllowSizing := .F.
oColumn:FormatColumn := "1 index ``"
oColumn:AllowSort := .F.
oColumn:AllowDragging := .F.
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
562
|
Is there anyway to stop the header changing colour when the mouse hovers/moves across the column header

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oColumns
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oColumns := oComboBox:Columns()
oColumns:Add("Item")
oColumn := oColumns:Add("Pos")
oColumn:Position := 0
oColumn:Width := 32
oColumn:AllowSizing := .F.
oColumn:FormatColumn := "1 index ``"
oColumn:AllowSort := .F.
oColumn:AllowDragging := .F.
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
561
|
How I can programmatically select a row (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Column")
oItems := oComboBox:Items()
oItems:AddItem("Item 1")
oItems:AddItem("Item 2")
oItems:AddItem("Item 3")
oComboBox:Value := "Item 2"
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
560
|
How I can programmatically select a row (with regular combobox I can set the ListIndex right up to Listcount -1)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Column")
oItems := oComboBox:Items()
oItems:AddItem("Item 1")
oItems:AddItem("Item 2")
oItems:AddItem("Item 3")
oItems:SetProperty("SelectItem",oItems:ItemByIndex(1),.T.)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
559
|
How do I set an extra data for each item
PROCEDURE OnMouseMove(oComboBox,Button,Shift,X,Y)
LOCAL i
i := oComboBox:ItemFromPoint(-1,-1,c,hit)
DevOut( Transform(i,"") )
DevOut( Transform(oComboBox:Items:ItemData(i),"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems,oItems1
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:MouseMove := {|Button,Shift,X,Y| OnMouseMove(oComboBox,Button,Shift,X,Y)} /*Occurs when the user moves the mouse.*/
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Default")
oItems := oComboBox:Items()
oItems:SetProperty("ItemData",oItems:AddItem("method 1"),"your extra data of method 1")
oItems:InsertItem(0,"your extra data of method 2","method 2")
oItems1 := oComboBox:Items()
oItems1:DefaultItem := oItems1:AddItem("method 3")
oItems1:SetProperty("ItemData",0,"your extra data of method 3")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
558
|
I do not like to specify the item padding for every column I add. The question is how can I do it automatically

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oColumns
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:AttachTemplate("handle AddColumn(Column){Column{Def(48)=8;Def(49)=8;AllowDragging=False;AllowSizing = True}}")
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:DrawGridLines := -1/*exAllLines*/
oComboBox:GridLineStyle := 32/*exGridLinesVSolid*/
oColumns := oComboBox:Columns()
oColumns:Add("Item")
oColumn := oColumns:Add("Pos")
oColumn:Position := 0
oColumn:Width := 32
oColumn:AllowSizing := .F.
oColumn:FormatColumn := "1 index ``"
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
557
|
Can I sort the column by check-state

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oColumn := oComboBox:Columns():Add("Check")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:SortType := 32/*exSortByState*/
oItems := oComboBox:Items()
oItems:AddItem()
oItems:SetProperty("CellState",oItems:AddItem(),0,1)
oItems:SetProperty("CellState",oItems:AddItem(),0,1)
oItems:AddItem()
oComboBox:Columns:Item(0):SortOrder := 1/*SortAscending*/
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
556
|
Can I sort the column by image

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oColumn := oComboBox:Columns():Add("Image")
oColumn:SortType := 48/*exSortByImage*/
oItems := oComboBox:Items()
oItems:SetProperty("CellImage",oItems:AddItem(),0,3)
oItems:AddItem()
oItems:SetProperty("CellImage",oItems:AddItem(),0,1)
oItems:SetProperty("CellImage",oItems:AddItem(),0,2)
oComboBox:Columns:Item(0):SortOrder := 1/*SortAscending*/
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
555
|
How can I build a "virtual" tree using your control

PROCEDURE OnBeforeExpandItem(oComboBox,Item,Cancel)
LOCAL oItems
oItems := oComboBox:Items()
oItems:SetProperty("ItemHasChildren",oItems:InsertItem(Item,,"new"),.T.)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeforeExpandItem := {|Item,Cancel| OnBeforeExpandItem(oComboBox,Item,Cancel)} /*Fired before an item is about to be expanded (collapsed).*/
oComboBox:BeginUpdate()
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
oComboBox:Style := 1/*DropDown*/
oComboBox:Columns():Add("Def")
oItems := oComboBox:Items()
oItems:AddItem("Item 1")
oItems:SetProperty("ItemHasChildren",oItems:AddItem("Item 2"),.T.)
oItems:AddItem("Item 3")
oComboBox:Value := "Item 2"
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
554
|
How can I display UNICODE characters

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
LOCAL oStdFont
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oStdFont := oComboBox:Font()
oStdFont:Name := "Arial Unicode"
oStdFont:Size := 22
oComboBox:HeaderVisible := .F.
oComboBox:DefaultItemHeight := 48
oComboBox:Columns():Add(""):SetProperty("Def",17/*exCellCaptionFormat*/,1)
oItems := oComboBox:Items()
oItems:AddItem("Ӓӓ")
oItems:AddItem("ᦜᦝ;ᦞ")
oItems:AddItem("ɮɭ;ɯ")
oItems:AddItem("勳勴勵勶")
oItems:SetProperty("FormatCell",oItems:AddItem(oComboBox:Version()),0,"(value lfind `UNICODE`) < 0 ? `<fgcolor=FF0000><b>!UNICODE!</b> version</fgcolor> required: ` + value : `` ")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
553
|
How do I display the position of the item with 0-padding

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Items"):FormatColumn := "((1 apos ``) lpad `00`) + `. ` + value"
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oItems:AddItem("Item D")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
552
|
Is it possible to configure different colour/icon when there is a active filter

PROCEDURE OnFilterChange(oComboBox)
oComboBox:SetProperty("Background",0/*exHeaderFilterBarButton*/,oComboBox:FormatABC("value = 0 ? 0x1000001 : 0x10000FF ",oComboBox:Columns:Item(0):FilterType()))
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oAppearance
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:FilterChange := {|| OnFilterChange(oComboBox)} /*Occurs when filter was changed.*/
oComboBox:BeginUpdate()
oAppearance := oComboBox:VisualAppearance()
oAppearance:RenderType := -16777216
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABXUIQAAYAQGKIcBiAKBQAGYBIJDEMgzDDAUBjKKocQTC4AIQjCK4JDKHYJRpHEZyCA8EhqGASRAFUQBYiWE4oSpLABQaK0ZwIGyRIrkGQgQgmPYDSDNU4zVIEEglBI0TDNczhNDENgtGYaJqHIYpZBcM40TKkEZoSIITZcRrOEBiRL1S0RBhGcRUHZlWzdN64LhuK47UrWdD/XhdVzXRbjfz1Oq+bxve48Br7A5yYThdr4LhOFQ3RjIL4xbIcUwGe6VZhjOLZXjmO49T69HTtOCYBEBA")
oComboBox:DrawGridLines := -1/*exAllLines*/
oComboBox:ShowFocusRect := .F.
oComboBox:SetProperty("Background",0/*exHeaderFilterBarButton*/,0x1000001)
oComboBox:SetProperty("Background",32/*exCursorHoverColumn*/,-1)
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:HeaderVisible := .T.
oColumn := oComboBox:Columns():Add("Filter")
oColumn:DisplayFilterButton := .T.
oColumn:AllowSort := .F.
oColumn:AllowDragging := .F.
oColumn:FilterList := 256/*exShowCheckBox*/
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oColumn1 := oComboBox:Columns:Item(0)
oColumn1:Filter := "Item B"
oColumn1:FilterType := 240/*exFilter*/
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
551
|
Why can t I type free text into a DropDown style combobox

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:AutoComplete := .F.
oComboBox:IntegralHeight := .T.
oComboBox:Columns():Add("Column")
oItems := oComboBox:Items()
oItems:AddItem("Item 3")
oItems:AddItem("Item 1")
oItems:AddItem("Item 2")
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
550
|
I am calling Value to change the selected value, but the selection is not visible, unless I scroll to it

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
rs := CreateObject("ADODB.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.accdb",1/*adOpenKeyset*/,1/*adLockReadOnly*/)
oComboBox:DataSource := rs
oComboBox:Value := 10311
oItems := oComboBox:Items()
oItems:EnsureVisibleItem(oItems:FocusItem())
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
549
|
How can I create a new ADO recordset

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
rs := CreateObject("ADODB.Recordset")
rs:Fields():Append("A",8/*adBSTR*/)
rs:Fields():Append("B",8/*adBSTR*/)
rs:Open()
rs:AddNew()
rs:Fields:Item("A"):Value := "Item A.1"
rs:Fields:Item("B"):Value := "Item B.1"
rs:Update()
rs:AddNew()
rs:Fields:Item("A"):Value := "Item A.2"
rs:Fields:Item("B"):Value := "Item B.2"
rs:Update()
oComboBox:DataSource := rs
oComboBox:Value := "Item A.1"
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
548
|
Do do I get the DAO version I have installed
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
DevOut( CreateObject("DAO.DBEngine.35"):Version():Version() )
DevOut( CreateObject("DAO.DBEngine.36"):Version():Version() )
DevOut( CreateObject("DAO.DBEngine.120"):Version():Version() )
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
547
|
How do I get a list of interfaces the object implemenets

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
LOCAL oPrivDBEngine
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
oPrivDBEngine := CreateObject("DAO.DBEngine.120")
rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.accdb"):OpenRecordset("Orders")
DevOut( Transform(CreateObject("Exontrol.PropertiesList"),"") )
oComboBox:DataSource := rs
oComboBox:Value := 10248
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
546
|
Do do I get the ADO version I have installed
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
DevOut( "ADO Version:" )
DevOut( CreateObject("ADODB.Connection"):Version():Version() )
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
545
|
DAO, ACCDB, 120

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
LOCAL oPrivDBEngine
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
oPrivDBEngine := CreateObject("DAO.DBEngine.120")
rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.accdb"):OpenRecordset("Orders")
oComboBox:DataSource := rs
oComboBox:Value := 10248
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
544
|
DAO, MDB, 120

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
LOCAL oPrivDBEngine
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
oPrivDBEngine := CreateObject("DAO.DBEngine.120")
rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.mdb"):OpenRecordset("Orders")
oComboBox:DataSource := rs
oComboBox:Value := 10248
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
543
|
DAO, MDB

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
LOCAL oPrivDBEngine
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
oPrivDBEngine := CreateObject("DAO.DBEngine.36")
rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.mdb"):OpenRecordset("Orders")
oComboBox:DataSource := rs
oComboBox:Value := 10248
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
542
|
ADODB, ACCDB, x64

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
rs := CreateObject("ADODB.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.accdb",1/*adOpenKeyset*/,1/*adLockReadOnly*/)
oComboBox:DataSource := rs
oComboBox:Value := 10248
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
541
|
ADOR, ACCDB

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oComboBox:DataSource := rs
oComboBox:Value := 10248
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
540
|
ADODB, MDB

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
rs := CreateObject("ADODB.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oComboBox:DataSource := rs
oComboBox:Value := 10248
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
539
|
ADOR, MDB

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL rs
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .F.
rs := CreateObject("ADOR.Recordset")
rs:Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExComboBox\Sample\Access\sample.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
oComboBox:DataSource := rs
oComboBox:Value := 10248
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
538
|
Type of wraps the cell's caption support (Sample 2)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2
LOCAL oColumns
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:HeaderSingleLine := .F.
oComboBox:HeaderHeight := 36
oComboBox:DrawGridLines := -2/*exRowLines*/
oComboBox:ColumnAutoResize := .F.
oComboBox:ScrollBySingleLine := .T.
oColumns := oComboBox:Columns()
oColumn := oColumns:Add("Single-Line (exCaptionSingleLine)")
oColumn:Width := 96
oColumn:SetProperty("Def",17/*exCellCaptionFormat*/,1)
oColumn:SetProperty("Def",16/*exCellSingleLine*/,-1)
oColumn1 := oColumns:Add("Word-Wrap (exCaptionWordWrap)")
oColumn1:Width := 96
oColumn1:SetProperty("Def",17/*exCellCaptionFormat*/,1)
oColumn1:SetProperty("Def",16/*exCellSingleLine*/,0)
oColumn1:FormatColumn := "%0"
oColumn2 := oColumns:Add("Break-Wrap (exCaptionBreakWrap)")
oColumn2:Width := 96
oColumn2:SetProperty("Def",17/*exCellCaptionFormat*/,1)
oColumn2:SetProperty("Def",16/*exCellSingleLine*/,1)
oColumn2:FormatColumn := "%0"
oItems := oComboBox:Items()
oItems:AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.")
oItems:AddItem("This is the <b>first</b> line.\r\nThis is the <b>second</b> line.\r\nThis is the <b>third</b> line.")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
537
|
Type of wraps the cell's caption support (Sample 1)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:HeaderSingleLine := .F.
oComboBox:HeaderHeight := 36
oComboBox:DrawGridLines := -2/*exRowLines*/
oComboBox:ColumnAutoResize := .F.
oComboBox:ScrollBySingleLine := .T.
oComboBox:Columns():Add("Default"):Width := 128
oItems := oComboBox:Items()
h := oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
h := oItems:AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.")
oItems:SetProperty("CellCaptionFormat",h,0,1/*exHTML*/)
h := oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
oItems:SetProperty("CellSingleLine",h,0,0/*exCaptionWordWrap*/)
h := oItems:AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.")
oItems:SetProperty("CellCaptionFormat",h,0,1/*exHTML*/)
oItems:SetProperty("CellSingleLine",h,0,0/*exCaptionWordWrap*/)
h := oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
oItems:SetProperty("CellSingleLine",h,0,1/*exCaptionBreakWrap*/)
h := oItems:AddItem("This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.")
oItems:SetProperty("CellCaptionFormat",h,0,1/*exHTML*/)
oItems:SetProperty("CellSingleLine",h,0,1/*exCaptionBreakWrap*/)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
536
|
Can I break the cell's caption using the line break <br> or \r\n (Sample 2)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:DrawGridLines := -2/*exRowLines*/
oComboBox:ColumnAutoResize := .F.
oComboBox:ScrollBySingleLine := .T.
oComboBox:Columns():Add("Default"):Width := 128
oItems := oComboBox:Items()
oItems:SetProperty("CellSingleLine",oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line."),0,1/*exCaptionBreakWrap*/)
oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
535
|
Can I break the cell's caption using the line break <br> or \r\n (Sample 1)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:DrawGridLines := -2/*exRowLines*/
oComboBox:ColumnAutoResize := .F.
oComboBox:ScrollBySingleLine := .T.
oColumn := oComboBox:Columns():Add("Default")
oColumn:Width := 128
oColumn:SetProperty("Def",16/*exCellSingleLine*/,1)
oItems := oComboBox:Items()
oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
oItems:AddItem("This is the first line.\r\nThis is the second line.\r\nThis is the third line.")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
534
|
Export Data in HTML format

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5,oColumn6
LOCAL oColumns
LOCAL oConditionalFormat,oConditionalFormat1
LOCAL oConditionalFormats
LOCAL oItems
LOCAL oShellBrowserWindow
LOCAL h,sFile
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
oComboBox:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oComboBox:DrawGridLines := -1/*exAllLines*/
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oComboBox:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oComboBox:Description(11/*exFilterBarAnd*/)),""))
oComboBox:FilterBarCaption := "(( ( value replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` ) + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
oComboBox:FilterBarPromptVisible := 2579/*exFilterBarCompact+exFilterBarShowCloseIfRequired+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
oComboBox:FilterBarPromptType := 2/*exFilterPromptContainsAny*/
oConditionalFormats := oComboBox:ConditionalFormats()
oConditionalFormats:Add("%0 like `*parent*`","parent"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor ( { 192,192,192 } ) , .F. ))
oConditionalFormat := oConditionalFormats:Add("%0 like `*child*`","child")
oConditionalFormat:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,128,128 } ) , .F. ))
oConditionalFormat:ApplyTo := 0/*exFormatToColumns*/
oConditionalFormat1 := oConditionalFormats:Add("%0 like `*B*`","b")
oConditionalFormat1:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,255 } ) , .F. ))
oConditionalFormat1:Bold := .T.
oConditionalFormat1:Italic := .T.
oConditionalFormat1:ApplyTo := 0/*exFormatToColumns*/
oColumns := oComboBox:Columns()
oColumn := oColumns:Add("Value")
oColumn:Width := 128
oColumn:HTMLCaption := "<b>VA</b><r>sko"
oColumn1 := oColumns:Add("APos")
oColumn1:FormatColumn := "0 apos ``"
oColumn1:AllowSort := .F.
oColumn1:SetProperty("Def",4/*exCellBackColor*/,15790320)
oColumn1:SetProperty("Def",5/*exCellForeColor*/,8421504)
oColumn1:SetProperty("Def",8/*exHeaderForeColor*/,oColumn1:Def(5/*exCellForeColor*/))
oColumn1:Position := 0
oColumn2 := oColumns:Add("RPos")
oColumn2:FormatColumn := "0 rpos ``"
oColumn2:AllowSort := .F.
oColumn2:Position := 1
oColumn3 := oColumns:Add("Index")
oColumn3:FormatColumn := "0 index ``"
oColumn3:DisplayFilterButton := .T.
oColumn3:FilterList := 256/*exShowCheckBox*/
oColumn3:Position := 2
oColumn4 := oColumns:Add("Data 1")
oColumn4:FormatColumn := "0 index `A-Z`"
oColumn4:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn5 := oColumns:Add("Data 2")
oColumn5:FormatColumn := "0 index `AB` replace `A` with `<off -4>A</off>`"
oColumn5:SetProperty("Def",16/*exCellSingleLine*/,.F.)
oColumn5:SetProperty("Def",17/*exCellCaptionFormat*/,1)
oColumn5:SetProperty("Def",1/*exCellHasRadioButton*/,.T.)
oColumn6 := oColumns:Add("Data 3")
oColumn6:FormatColumn := "0 index `CDC` replace `D` with `<b>D</b>`"
oColumn6:SetProperty("Def",17/*exCellCaptionFormat*/,1)
oItems := oComboBox:Items()
h := oItems:AddItem("ParentA")
oItems:InsertItem(h,,"Child A")
oItems:InsertItem(h,,"Child B")
oItems:SetProperty("CellState",h,4,1)
oItems:SetProperty("CellBackColor",oItems:InsertItem(h,,"Child C"),5,AutomationTranslateColor( GraMakeRGBColor ( { 0,255,0 } ) , .F. ))
oItems:SetProperty("ExpandItem",h,.T.)
oItems:AddItem("Item A")
h := oItems:AddItem("ParentB")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("CellBackColor",oItems:InsertItem(h,,"Child 3"),5,AutomationTranslateColor( GraMakeRGBColor ( { 0,255,0 } ) , .F. ))
oItems:SetProperty("CellState",h,5,1)
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oItems:AddItem("Item D")
oItems:SetProperty("ExpandItem",h,.T.)
oComboBox:EndUpdate()
sFile := "c:/temp/export.html"
oComboBox:Export(sFile,"vis")
oShellBrowserWindow := CreateObject("InternetExplorer.Application")
oShellBrowserWindow:Navigate2(sFile)
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
533
|
Export Data in CSV format

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5,oColumn6
LOCAL oColumns
LOCAL oConditionalFormat,oConditionalFormat1
LOCAL oConditionalFormats
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
oComboBox:SetProperty("BackColorAlternate",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oComboBox:DrawGridLines := -1/*exAllLines*/
oComboBox:HeaderAppearance := 4/*Etched*/
oComboBox:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oComboBox:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oComboBox:Description(11/*exFilterBarAnd*/)),""))
oComboBox:FilterBarCaption := "(( ( value replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` ) + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
oComboBox:FilterBarPromptVisible := 2579/*exFilterBarCompact+exFilterBarShowCloseIfRequired+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
oComboBox:FilterBarPromptType := 2/*exFilterPromptContainsAny*/
oConditionalFormats := oComboBox:ConditionalFormats()
oConditionalFormats:Add("%0 like `*parent*`","parent"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor ( { 192,192,192 } ) , .F. ))
oConditionalFormat := oConditionalFormats:Add("%0 like `*child*`","child")
oConditionalFormat:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 255,128,128 } ) , .F. ))
oConditionalFormat:ApplyTo := 0/*exFormatToColumns*/
oConditionalFormat1 := oConditionalFormats:Add("%0 like `*B*`","b")
oConditionalFormat1:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor ( { 0,0,255 } ) , .F. ))
oConditionalFormat1:Bold := .T.
oConditionalFormat1:Italic := .T.
oConditionalFormat1:ApplyTo := 0/*exFormatToColumns*/
oColumns := oComboBox:Columns()
oColumn := oColumns:Add("Value")
oColumn:Width := 128
oColumn:HTMLCaption := "<b>VA</b><r>sko"
oColumn1 := oColumns:Add("APos")
oColumn1:FormatColumn := "0 apos ``"
oColumn1:AllowSort := .F.
oColumn1:SetProperty("Def",4/*exCellBackColor*/,15790320)
oColumn1:SetProperty("Def",5/*exCellForeColor*/,8421504)
oColumn1:SetProperty("Def",8/*exHeaderForeColor*/,oColumn1:Def(5/*exCellForeColor*/))
oColumn1:Position := 0
oColumn2 := oColumns:Add("RPos")
oColumn2:FormatColumn := "0 rpos ``"
oColumn2:AllowSort := .F.
oColumn2:Position := 1
oColumn3 := oColumns:Add("Index")
oColumn3:FormatColumn := "0 index ``"
oColumn3:DisplayFilterButton := .T.
oColumn3:FilterList := 256/*exShowCheckBox*/
oColumn3:Position := 2
oColumn4 := oColumns:Add("Data 1")
oColumn4:FormatColumn := "0 index `A-Z`"
oColumn4:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn5 := oColumns:Add("Data 2")
oColumn5:FormatColumn := "0 index `AB` replace `A` with `<off -4>A</off>`"
oColumn5:SetProperty("Def",16/*exCellSingleLine*/,.F.)
oColumn5:SetProperty("Def",17/*exCellCaptionFormat*/,1)
oColumn5:SetProperty("Def",1/*exCellHasRadioButton*/,.T.)
oColumn6 := oColumns:Add("Data 3")
oColumn6:FormatColumn := "0 index `CDC` replace `D` with `<b>D</b>`"
oColumn6:SetProperty("Def",17/*exCellCaptionFormat*/,1)
oItems := oComboBox:Items()
h := oItems:AddItem("ParentA")
oItems:InsertItem(h,,"Child A")
oItems:InsertItem(h,,"Child B")
oItems:SetProperty("CellState",h,4,1)
oItems:SetProperty("CellBackColor",oItems:InsertItem(h,,"Child C"),5,AutomationTranslateColor( GraMakeRGBColor ( { 0,255,0 } ) , .F. ))
oItems:SetProperty("ExpandItem",h,.T.)
oItems:AddItem("Item A")
h := oItems:AddItem("ParentB")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("CellBackColor",oItems:InsertItem(h,,"Child 3"),5,AutomationTranslateColor( GraMakeRGBColor ( { 0,255,0 } ) , .F. ))
oItems:SetProperty("CellState",h,5,1)
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oItems:AddItem("Item D")
oItems:SetProperty("ExpandItem",h,.T.)
oComboBox:EndUpdate()
DevOut( Transform(oComboBox:Export("","vis"),"") )
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
532
|
Is it possible to change the visual appearance of the position signs when user changes the column's position by drag and drop

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oAppearance
LOCAL oColumns
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:HeaderAppearance := 4/*Etched*/
oColumns := oComboBox:Columns()
oColumns:Add("Column 1")
oColumns:Add("Column 2")
oColumns:Add("Column 3")
oAppearance := oComboBox:VisualAppearance()
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABZEGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMYxXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADKMA4SOKIZhrE4bBhGaQRUgyI43RhHUBzVIUcQvE6TZRHCQYHgkNIhDJIM7TPLkeSVJaTIRoKhJUogApQThTMgVRDEThkGoSa6soSoYTDBKybLrSLKagOT5YUDKUqSdKEZRpEq1YztWbaQoCUoqVRRVIWfbNd4JJa4aDhWpYdpeeY5R7bWLgBYVVABL7LLRsSxpHxPF6RXxaeI3GKsaS8G6ic6nPQMHj7I4NS5pUa6Rh2VYNSa8AAtETRYznOw4bTMXAjNIea5bAYIIR5HIoDzVbQcCQAHL9DBeEMIQEEISgGhMGZQmocgymoYRRCIEQ0G2HYBnEIBig4V4zCQGINnmagCECY43medZ6H2Pw/g+X5fnueh/h+R5+AKABfkMWgGgGYA4AICoCGCE5WA4CphACMgSD2IRIDI" +;
"BICmEd5YGCBpRjGBgegWIYIgWdgoGIRQsiKCZiAiJZ0gGQI4jUS4LECOAiBmDJflGfg2BSY4Al4OhGkOCJ2DgFJjGGfgqgiH5Ch4RhGkqOQmEOEpkFkHQYhJRYyESAokGKHhIhKIxJEmf4VGUeRGFmF5iBkchPhYJQ5GoYIZg6Ug6GoFYmkmNhuhulRGHKGoImefh0BUZ4JmYeoemeSZ2H6HQmgoBgXDqXwUAQgI=")
oAppearance:Add(2,"CP:1 0 -36 0 0")
oComboBox:SetProperty("Background",182/*exColumnsPositionSign*/,0x2000000)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
531
|
A black portion is shown while I am using the BackColorAlternate with EBN colors. What can I do

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oConditionalFormat
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:ColumnAutoResize := .T.
oComboBox:DefaultItemHeight := 20
oComboBox:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhIDhAxHAxg0HG0Mg4xGI3HMOig3GcJiYAf8jAEhhUnAAyhEqg8hk0oAsIjgAiAwmYxGA4mYzGwwkI0i0ooUnB0IBMIl1Dg8zmYyGolptPkI1mY1GAll9KoUslNIrVCqNQldShFUstXAVfrVcrlZtVhuFnsUHq1zoczoQGhFBkNpg6zbDykUkhsPHE2h85nc9n8xtVDtlex9Msd2p1YstVq9ux8HyMtzuFz1PsNTzQlv2hhWfkuqpeVuN0q+nvEooN5veSAGpkb/ACcZrvhU3w83nM/poxGuchGpoVBvWgg+8knA4WimnFxI45Er5XOlHMg/Q3XU33W4ew9Wyu11mchDagcO7zus8VDoNBBEIKBpMY6DqOQyokhA/IQIQmwMk4bIQFDcoO6LWgwhQkNcABwEyAB5GwWbet6cRQg3DENQ5D8QxADZvEkAB8nabsURGeBpFM3pwE2AEZRpDx/neZpOR3Dz9oO/r/wCMoZNTBQAQR" +;
"JSEwYg8HPGhEIoNCaEwq10gQ2WcRt7LcRxRFpuxUAEURQ3sczBEMgTTG8gN7HpOSEAEiQBAQZpmQ0DibPUFwbKcHwkhQoQtNQNzNEMbABOKDy/DMYQzHLeoPL0OTJSUd0pHcxTewk5zrIygIRPslz4lEngBKIAQivgASs/kLSBTlO00f8t0vGcgUbDlDRjXLCUNRERRvRgAHW2oAICA==")
oColumn := oComboBox:Columns():Add("Default")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:PartialCheck := .T.
oColumn1 := oComboBox:Columns():Add("Position")
oColumn1:FormatColumn := "1 rindex ``"
oColumn1:Visible := .F.
oConditionalFormat := oComboBox:ConditionalFormats():Add("%C1 mod 2")
oConditionalFormat:SetProperty("BackColor",0x1000000)
oItems := oComboBox:Items()
oItems:AddItem("Item 1")
oItems:AddItem("Item 2")
oItems:AddItem("Item 3")
oItems:AddItem("Item 4")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
530
|
How can I specify alternate background colors for each root item, similar with BackColorAlternate

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oConditionalFormat
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
oColumn := oComboBox:Columns():Add("Default")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:PartialCheck := .T.
oColumn1 := oComboBox:Columns():Add("Position")
oColumn1:FormatColumn := "( ( 1:=( ( 0:=(1 rpos '') ) lfind `.`) ) < 0 ? =:0 : (=:0 left =:1) )"
oColumn1:Visible := .F.
oConditionalFormat := oComboBox:ConditionalFormats():Add("%C1 mod 2")
oConditionalFormat:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor ( { 240,240,240 } ) , .F. ))
oItems := oComboBox:Items()
h := oItems:AddItem("Root 1")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oItems:SetProperty("ExpandItem",h,.T.)
h := oItems:AddItem("Root 2")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
h := oItems:AddItem("Root 3")
oItems:InsertItem(h,,"Child 1")
oItems:InsertItem(h,,"Child 2")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
529
|
FilterBarCaption ALL Keyword ( sample 2, result )

PROCEDURE OnInsertItem(oComboBox,Item)
LOCAL i
i := oComboBox:FormatABC("value + 1",oComboBox:Items:ItemToIndex(Item))
oComboBox:Items():SetProperty("CellImage",Item,3,i)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:InsertItem := {|Item| OnInsertItem(oComboBox,Item)} /*Occurs after a new item has been inserted to Items collection.*/
oComboBox:BeginUpdate()
oComboBox:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oColumn := oComboBox:Columns():Add("Col-1")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oComboBox:Columns():Add("Col-2")
oColumn1:DisplayFilterButton := .T.
oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn2 := oComboBox:Columns():Add("Check")
oColumn2:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn2:DisplayFilterButton := .T.
oColumn2:DisplayFilterPattern := .F.
oColumn2:FilterType := 6/*exCheck*/
oColumn3 := oComboBox:Columns():Add("Image")
oColumn3:DisplayFilterButton := .T.
oColumn3:FilterType := 10/*exImage*/
oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
oColumn4 := oComboBox:Columns():Add("Pos")
oColumn4:AllowSizing := .F.
oColumn4:AllowSort := .F.
oColumn4:Width := 32
oColumn4:FormatColumn := "1 apos ``"
oColumn4:Position := 0
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item A"),1,"Sub-Item A")
h := oItems:AddItem("Item B")
oItems:SetProperty("CellCaption",h,1,"Sub-Item B")
oItems:SetProperty("CellState",h,2,1)
oItems:SetProperty("CellCaption",oItems:AddItem("Item C"),1,"Sub-Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oComboBox:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oComboBox:Description(11/*exFilterBarAnd*/)),""))
oComboBox:FilterBarCaption := "(( ( all replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` ) + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
oComboBox:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
oColumn5 := oComboBox:Columns:Item(0)
oColumn5:FilterType := 240/*exFilter*/
oColumn5:Filter := "Item A|Item B"
oComboBox:Columns:Item(2):Filter := Transform(1,"")
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
528
|
FilterBarCaption ALL Keyword ( sample 1 )

PROCEDURE OnInsertItem(oComboBox,Item)
LOCAL i
i := oComboBox:FormatABC("value + 1",oComboBox:Items:ItemToIndex(Item))
oComboBox:Items():SetProperty("CellImage",Item,3,i)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:InsertItem := {|Item| OnInsertItem(oComboBox,Item)} /*Occurs after a new item has been inserted to Items collection.*/
oComboBox:BeginUpdate()
oComboBox:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oColumn := oComboBox:Columns():Add("Col-1")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oComboBox:Columns():Add("Col-2")
oColumn1:DisplayFilterButton := .T.
oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn2 := oComboBox:Columns():Add("Check")
oColumn2:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn2:DisplayFilterButton := .T.
oColumn2:DisplayFilterPattern := .F.
oColumn2:FilterType := 6/*exCheck*/
oColumn3 := oComboBox:Columns():Add("Image")
oColumn3:DisplayFilterButton := .T.
oColumn3:FilterType := 10/*exImage*/
oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
oColumn4 := oComboBox:Columns():Add("Pos")
oColumn4:AllowSizing := .F.
oColumn4:AllowSort := .F.
oColumn4:Width := 32
oColumn4:FormatColumn := "1 apos ``"
oColumn4:Position := 0
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item A"),1,"Sub-Item A")
h := oItems:AddItem("Item B")
oItems:SetProperty("CellCaption",h,1,"Sub-Item B")
oItems:SetProperty("CellState",h,2,1)
oItems:SetProperty("CellCaption",oItems:AddItem("Item C"),1,"Sub-Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oComboBox:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oComboBox:Description(11/*exFilterBarAnd*/)),""))
oComboBox:FilterBarCaption := "all"
oComboBox:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
oColumn5 := oComboBox:Columns:Item(0)
oColumn5:FilterType := 240/*exFilter*/
oColumn5:Filter := "Item A|Item B"
oComboBox:Columns:Item(2):Filter := Transform(1,"")
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
527
|
FilterBarCaption ALLUI Keyword ( sample 2, result )

PROCEDURE OnInsertItem(oComboBox,Item)
LOCAL i
i := oComboBox:FormatABC("value + 1",oComboBox:Items:ItemToIndex(Item))
oComboBox:Items():SetProperty("CellImage",Item,3,i)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:InsertItem := {|Item| OnInsertItem(oComboBox,Item)} /*Occurs after a new item has been inserted to Items collection.*/
oComboBox:BeginUpdate()
oComboBox:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oColumn := oComboBox:Columns():Add("Col-1")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oComboBox:Columns():Add("Col-2")
oColumn1:DisplayFilterButton := .T.
oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn2 := oComboBox:Columns():Add("Check")
oColumn2:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn2:DisplayFilterButton := .T.
oColumn2:DisplayFilterPattern := .F.
oColumn2:FilterType := 6/*exCheck*/
oColumn3 := oComboBox:Columns():Add("Image")
oColumn3:DisplayFilterButton := .T.
oColumn3:FilterType := 10/*exImage*/
oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
oColumn4 := oComboBox:Columns():Add("Pos")
oColumn4:AllowSizing := .F.
oColumn4:AllowSort := .F.
oColumn4:Width := 32
oColumn4:FormatColumn := "1 apos ``"
oColumn4:Position := 0
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item A"),1,"Sub-Item A")
h := oItems:AddItem("Item B")
oItems:SetProperty("CellCaption",h,1,"Sub-Item B")
oItems:SetProperty("CellState",h,2,1)
oItems:SetProperty("CellCaption",oItems:AddItem("Item C"),1,"Sub-Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oComboBox:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oComboBox:Description(11/*exFilterBarAnd*/)),""))
oComboBox:FilterBarCaption := "(( ( allui replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` ) + `<r><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
oComboBox:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
oColumn5 := oComboBox:Columns:Item(0)
oColumn5:FilterType := 240/*exFilter*/
oColumn5:Filter := "Item A|Item B"
oComboBox:Columns:Item(2):Filter := Transform(1,"")
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
526
|
FilterBarCaption ALLUI Keyword ( sample 1 )

PROCEDURE OnInsertItem(oComboBox,Item)
LOCAL i
i := oComboBox:FormatABC("value + 1",oComboBox:Items:ItemToIndex(Item))
oComboBox:Items():SetProperty("CellImage",Item,3,i)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:InsertItem := {|Item| OnInsertItem(oComboBox,Item)} /*Occurs after a new item has been inserted to Items collection.*/
oComboBox:BeginUpdate()
oComboBox:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oColumn := oComboBox:Columns():Add("Col-1")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oComboBox:Columns():Add("Col-2")
oColumn1:DisplayFilterButton := .T.
oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn2 := oComboBox:Columns():Add("Check")
oColumn2:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn2:DisplayFilterButton := .T.
oColumn2:DisplayFilterPattern := .F.
oColumn2:FilterType := 6/*exCheck*/
oColumn3 := oComboBox:Columns():Add("Image")
oColumn3:DisplayFilterButton := .T.
oColumn3:FilterType := 10/*exImage*/
oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
oColumn4 := oComboBox:Columns():Add("Pos")
oColumn4:AllowSizing := .F.
oColumn4:AllowSort := .F.
oColumn4:Width := 32
oColumn4:FormatColumn := "1 apos ``"
oColumn4:Position := 0
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item A"),1,"Sub-Item A")
h := oItems:AddItem("Item B")
oItems:SetProperty("CellCaption",h,1,"Sub-Item B")
oItems:SetProperty("CellState",h,2,1)
oItems:SetProperty("CellCaption",oItems:AddItem("Item C"),1,"Sub-Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oComboBox:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oComboBox:Description(11/*exFilterBarAnd*/)),""))
oComboBox:FilterBarCaption := "allui"
oComboBox:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
oColumn5 := oComboBox:Columns:Item(0)
oColumn5:FilterType := 240/*exFilter*/
oColumn5:Filter := "Item A|Item B"
oComboBox:Columns:Item(2):Filter := Transform(1,"")
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
525
|
FilterBarCaption AVAILABLE Keyword ( sample 2, result )

PROCEDURE OnInsertItem(oComboBox,Item)
LOCAL i
i := oComboBox:FormatABC("value + 1",oComboBox:Items:ItemToIndex(Item))
oComboBox:Items():SetProperty("CellImage",Item,3,i)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:InsertItem := {|Item| OnInsertItem(oComboBox,Item)} /*Occurs after a new item has been inserted to Items collection.*/
oComboBox:BeginUpdate()
oComboBox:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oColumn := oComboBox:Columns():Add("Col-1")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oComboBox:Columns():Add("Col-2")
oColumn1:DisplayFilterButton := .T.
oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn2 := oComboBox:Columns():Add("Check")
oColumn2:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn2:DisplayFilterButton := .T.
oColumn2:DisplayFilterPattern := .F.
oColumn2:FilterType := 6/*exCheck*/
oColumn3 := oComboBox:Columns():Add("Image")
oColumn3:DisplayFilterButton := .T.
oColumn3:FilterType := 10/*exImage*/
oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
oColumn4 := oComboBox:Columns():Add("Pos")
oColumn4:AllowSizing := .F.
oColumn4:AllowSort := .F.
oColumn4:Width := 32
oColumn4:FormatColumn := "1 apos ``"
oColumn4:Position := 0
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item A"),1,"Sub-Item A")
h := oItems:AddItem("Item B")
oItems:SetProperty("CellCaption",h,1,"Sub-Item B")
oItems:SetProperty("CellState",h,2,1)
oItems:SetProperty("CellCaption",oItems:AddItem("Item C"),1,"Sub-Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oComboBox:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oComboBox:Description(11/*exFilterBarAnd*/)),""))
oComboBox:FilterBarCaption := "(( ( value replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>` ) + ` ` + ( available replace `[` with `<bgcolor=C0C0C0><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>` replace `<s>` with `` replace `</s>` with `` ) + `<fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))"
oComboBox:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
oColumn5 := oComboBox:Columns:Item(0)
oColumn5:FilterType := 240/*exFilter*/
oColumn5:Filter := "Item A|Item B"
oComboBox:Columns:Item(2):Filter := Transform(1,"")
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
524
|
FilterBarCaption AVAILABLE Keyword ( sample 1 )

PROCEDURE OnInsertItem(oComboBox,Item)
LOCAL i
i := oComboBox:FormatABC("value + 1",oComboBox:Items:ItemToIndex(Item))
oComboBox:Items():SetProperty("CellImage",Item,3,i)
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4,oColumn5
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:InsertItem := {|Item| OnInsertItem(oComboBox,Item)} /*Occurs after a new item has been inserted to Items collection.*/
oComboBox:BeginUpdate()
oComboBox:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
oColumn := oComboBox:Columns():Add("Col-1")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oComboBox:Columns():Add("Col-2")
oColumn1:DisplayFilterButton := .T.
oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn2 := oComboBox:Columns():Add("Check")
oColumn2:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn2:DisplayFilterButton := .T.
oColumn2:DisplayFilterPattern := .F.
oColumn2:FilterType := 6/*exCheck*/
oColumn3 := oComboBox:Columns():Add("Image")
oColumn3:DisplayFilterButton := .T.
oColumn3:FilterType := 10/*exImage*/
oColumn3:FilterList := 9472/*exShowExclude+exShowFocusItem+exShowCheckBox*/
oColumn4 := oComboBox:Columns():Add("Pos")
oColumn4:AllowSizing := .F.
oColumn4:AllowSort := .F.
oColumn4:Width := 32
oColumn4:FormatColumn := "1 apos ``"
oColumn4:Position := 0
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item A"),1,"Sub-Item A")
h := oItems:AddItem("Item B")
oItems:SetProperty("CellCaption",h,1,"Sub-Item B")
oItems:SetProperty("CellState",h,2,1)
oItems:SetProperty("CellCaption",oItems:AddItem("Item C"),1,"Sub-Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oComboBox:FormatABC("`<fgcolor=808080> ` + value + ` </fgcolor>`",oComboBox:Description(11/*exFilterBarAnd*/)),""))
oComboBox:FilterBarCaption := "value + ` ` + available"
oComboBox:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
oColumn5 := oComboBox:Columns:Item(0)
oColumn5:FilterType := 240/*exFilter*/
oColumn5:Filter := "Item A|Item B"
oComboBox:Columns:Item(2):Filter := Transform(1,"")
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
523
|
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 3, results )

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oColumn := oComboBox:Columns():Add("Col-1")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oComboBox:Columns():Add("Col-2")
oColumn1:DisplayFilterButton := .T.
oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn2 := oComboBox:Columns():Add("Pos")
oColumn2:AllowSizing := .F.
oColumn2:AllowSort := .F.
oColumn2:Width := 32
oColumn2:FormatColumn := "1 apos ``"
oColumn2:Position := 0
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item A"),1,"Sub-Item A")
oItems:SetProperty("CellCaption",oItems:AddItem("Item B"),1,"Sub-Item B")
oItems:SetProperty("CellCaption",oItems:AddItem("Item C"),1,"Sub-Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oComboBox:FormatABC("`<fgcolor=808080>` + value + `</fgcolor>`",oComboBox:Description(11/*exFilterBarAnd*/)),""))
oComboBox:FilterBarCaption := "(`<b>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<fgcolor=808080>`+ itemcount + ` item(s)`) )) replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>`"
oComboBox:FilterBarPromptVisible := 256/*exFilterBarToggle*/
oColumn3 := oComboBox:Columns:Item(0)
oColumn3:FilterType := 240/*exFilter*/
oColumn3:Filter := "Item A|Item B"
oColumn4 := oComboBox:Columns:Item(1)
oColumn4:FilterType := 3/*exPattern*/
oColumn4:Filter := "*B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
522
|
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 2 )

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oColumn := oComboBox:Columns():Add("Col-1")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oComboBox:Columns():Add("Col-2")
oColumn1:DisplayFilterButton := .T.
oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn2 := oComboBox:Columns():Add("Pos")
oColumn2:AllowSizing := .F.
oColumn2:AllowSort := .F.
oColumn2:Width := 32
oColumn2:FormatColumn := "1 apos ``"
oColumn2:Position := 0
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item A"),1,"Sub-Item A")
oItems:SetProperty("CellCaption",oItems:AddItem("Item B"),1,"Sub-Item B")
oItems:SetProperty("CellCaption",oItems:AddItem("Item C"),1,"Sub-Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oComboBox:FormatABC("`<fgcolor=808080>` + value + `</fgcolor>`",oComboBox:Description(11/*exFilterBarAnd*/)),""))
oComboBox:FilterBarCaption := "value replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>`"
oComboBox:FilterBarPromptVisible := 256/*exFilterBarToggle*/
oColumn3 := oComboBox:Columns:Item(0)
oColumn3:FilterType := 240/*exFilter*/
oColumn3:Filter := "Item A|Item B"
oColumn4 := oComboBox:Columns:Item(1)
oColumn4:FilterType := 3/*exPattern*/
oColumn4:Filter := "*B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
521
|
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 1 )

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2,oColumn3,oColumn4
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oColumn := oComboBox:Columns():Add("Col-1")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oComboBox:Columns():Add("Col-2")
oColumn1:DisplayFilterButton := .T.
oColumn1:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn2 := oComboBox:Columns():Add("Pos")
oColumn2:AllowSizing := .F.
oColumn2:AllowSort := .F.
oColumn2:Width := 32
oColumn2:FormatColumn := "1 apos ``"
oColumn2:Position := 0
oItems := oComboBox:Items()
oItems:SetProperty("CellCaption",oItems:AddItem("Item A"),1,"Sub-Item A")
oItems:SetProperty("CellCaption",oItems:AddItem("Item B"),1,"Sub-Item B")
oItems:SetProperty("CellCaption",oItems:AddItem("Item C"),1,"Sub-Item C")
oComboBox:SetProperty("Description",11/*exFilterBarAnd*/,Transform(oComboBox:FormatABC("`<fgcolor=808080>` + value + `</fgcolor>`",oComboBox:Description(11/*exFilterBarAnd*/)),""))
oComboBox:FilterBarCaption := "value replace `[` with `<fgcolor=808080>[` replace `]` with `]</fgcolor>`"
oComboBox:FilterBarPromptVisible := 256/*exFilterBarToggle*/
oColumn3 := oComboBox:Columns:Item(0)
oColumn3:FilterType := 240/*exFilter*/
oColumn3:Filter := "Item A|Item B"
oColumn4 := oComboBox:Columns:Item(1)
oColumn4:FilterType := 3/*exPattern*/
oColumn4:Filter := "*B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
520
|
Is it possible to automatically displays the control's filter label to the right

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oColumn := oComboBox:Columns():Add("Item")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oComboBox:Columns():Add("Pos")
oColumn1:AllowSizing := .F.
oColumn1:AllowSort := .F.
oColumn1:Width := 32
oColumn1:FormatColumn := "1 apos ``"
oColumn1:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarCaption := "`<r>` + value"
oComboBox:FilterBarPromptVisible := 1280/*exFilterBarShowCloseOnRight+exFilterBarToggle*/
oColumn2 := oComboBox:Columns:Item(0)
oColumn2:FilterType := 240/*exFilter*/
oColumn2:Filter := "Item B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
519
|
How can I get the number of results/items being shown in the control's filter bar (sample 4)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oColumn := oComboBox:Columns():Add("Item")
oColumn:DisplayFilterButton := .T.
oColumn:FilterList := 9504/*exShowExclude+exShowFocusItem+exShowCheckBox+exSortItemsAsc*/
oColumn1 := oComboBox:Columns():Add("Pos")
oColumn1:AllowSizing := .F.
oColumn1:AllowSort := .F.
oColumn1:Width := 32
oColumn1:FormatColumn := "1 apos ``"
oColumn1:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:FilterBarPrompt := Transform(oComboBox:FormatABC("`<b>` + value",oComboBox:FilterBarPrompt()),"")
oComboBox:FilterBarCaption := "`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<fgcolor=808080>`+ itemcount + ` item(s)`) )"
oComboBox:FilterBarPromptVisible := 3591/*exFilterBarCompact+exFilterBarShowCloseOnRight+exFilterBarShowCloseIfRequired+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
518
|
How can I get the number of results being shown in the control's filter bar (sample 3)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:FilterBarCaption := "`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : ``)"
oComboBox:FilterBarPromptVisible := 2055/*exFilterBarCompact+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
oColumn1 := oComboBox:Columns:Item(0)
oColumn1:FilterType := 240/*exFilter*/
oColumn1:Filter := "Item A|Item B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
517
|
How can I get the number of results being shown in the control's filter bar (sample 2, compact)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:FilterBarCaption := "`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? `<off -4> ` + abs(matchitemcount + 1) + ` result(s)` : ``)"
oComboBox:FilterBarPromptVisible := 2071/*exFilterBarCompact+exFilterBarSingleLine+exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
oColumn1 := oComboBox:Columns:Item(0)
oColumn1:FilterType := 240/*exFilter*/
oColumn1:Filter := "Item A|Item B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
516
|
How can I get the number of results being shown in the control's filter bar (sample 1)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:FilterBarCaption := "`<b>` + value + `</b><r><fgcolor=808080>` + ( matchitemcount < 0 ? abs(matchitemcount + 1) + ` result(s)` : ``)"
oComboBox:FilterBarPromptVisible := 7/*exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
oColumn1 := oComboBox:Columns:Item(0)
oColumn1:FilterType := 240/*exFilter*/
oColumn1:Filter := "Item A|Item B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
515
|
FilterBarCaption Predefined Keywords

PROCEDURE OnAfterExpandItem(oComboBox,Item)
oComboBox:Refresh()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1,oColumn2
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:AfterExpandItem := {|Item| OnAfterExpandItem(oComboBox,Item)} /*Fired after an item is expanded (collapsed).*/
oComboBox:BeginUpdate()
oComboBox:LinesAtRoot := -1/*exLinesAtRoot*/
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Check")
oColumn:SetProperty("Def",0/*exCellHasCheckBox*/,.T.)
oColumn:DisplayFilterButton := .T.
oColumn:DisplayFilterPattern := .F.
oColumn:FilterType := 6/*exCheck*/
oColumn1 := oComboBox:Columns():Add("Pos")
oColumn1:AllowSizing := .F.
oColumn1:AllowSort := .F.
oColumn1:Width := 32
oColumn1:FormatColumn := "1 apos ``"
oColumn1:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
h := oItems:AddItem("Item B")
oItems:SetProperty("CellState",oItems:InsertItem(h,,"Sub-Item B1"),1,1)
oItems:InsertItem(h,,"Sub-Item B2")
oItems:SetProperty("ExpandItem",h,.T.)
oItems:AddItem("Item C")
oComboBox:FilterInclude := 1/*exItemsWithChilds*/
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:FilterBarCaption := "`<fgcolor=0000FF><i>value/current</i></fgcolor>: <fgcolor=808080>` + value + `</fgcolor>` + `<br><fgcolor=0000FF><i>available</i></fgcolor>: ` + available + `<br><fgcolor=0000FF><i>allui</i></fgcolor>: ` + allui + `<br><fgcolor=0000FF><i>all</i></fgcolor>: ` + all + `<br><fgcolor=0000FF><i>itemcount</i></fgcolor>: <fgcolor=808080>` + itemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>visibleitemcount</i></fgcolor>: <fgcolor=808080>` + visibleitemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>matchitemcount</" +;
"i></fgcolor>: <fgcolor=808080>` + matchitemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>promptpattern</i></fgcolor>: <fgcolor=808080>` + promptpattern + `</fgcolor>`+ `<br><fgcolor=0000FF><i>leafitemcount</i></fgcolor>: <fgcolor=808080>` + leafitemcount + `</fgcolor>`"
oComboBox:FilterBarPromptPattern := "B"
oComboBox:FilterBarPromptVisible := 7/*exFilterBarCaptionVisible+exFilterBarVisible+exFilterBarPromptVisible*/
oColumn2 := oComboBox:Columns:Item(0)
oColumn2:FilterType := 240/*exFilter*/
oColumn2:Filter := "Item A|Item B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
514
|
I am using filter prompt feature, and also column's filter, just wondering if possible to compact displaying the filter bar so it won't show on multiple lines

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarFont := oComboBox:Font()
oComboBox:FilterBarCaption := "`<r><i><fgcolor=808080><upline><solidline><sha ;;0>` + value"
oComboBox:FilterBarPromptPattern := "B"
oComboBox:FilterBarPromptVisible := 2067/*exFilterBarCompact+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
oColumn1 := oComboBox:Columns:Item(0)
oColumn1:FilterType := 240/*exFilter*/
oColumn1:Filter := "Item A|Item B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
513
|
Just wondering if it is possible to show the filter bar's close button on the right ( sample 2 )

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarPromptVisible := 1281/*exFilterBarShowCloseOnRight+exFilterBarToggle+exFilterBarPromptVisible*/
oComboBox:FilterBarPrompt := Transform(oComboBox:FormatABC("`<r>` + value",oComboBox:FilterBarPrompt()),"")
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
512
|
Just wondering if it is possible to show the filter bar's close button on the right ( sample 1 )

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:RightToLeft := .T.
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarPromptVisible := 257/*exFilterBarToggle+exFilterBarPromptVisible*/
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
511
|
How can I change the visual appearance of the filter bar's close button (EBN)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oAppearance
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oAppearance := oComboBox:VisualAppearance()
oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABHQDg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLOg7IJjyI4/SJAYCydKAWhxIaZKJHCZoEDaTAADCNVAQp6MEIJVbVEI0e79OgBLp/Z7kECIJJAaRjHQdJxGLA8EhtCQhCZteK6SgMKJYXhWQYRXI1JwvMBrWrdQjiOYELQtMKmSZNLYGG4dR5SVJbcYhSYsRRFMoyDIOXYDLKsdYqSpXIThObEGgaPqJYjsUjCMKnR7HVIURrBPC9TBPE69ZgmC6ucKPX51ShKFaBWDZcwFAS+UBuYCAILiEAQGZ1XT8OROicbgJgSTJRlCaZeDsHY7QGR4xkSYp3CaExZAQMgalQYAwjCAAfBANxcA2TgKAUOpDCGFhKg0RpXCwCwDHQHQHEyAIkCkOhbFOGA8A8DohBgRg9AccZcn8EpEjMLI2C2" +;
"DYxAgQgvAIUIVkoAAPBQDJlECTZ3CCYwDACQwUA8A5MCAWAWDiQi4l8aQOEgLJuBgBgDmYFAzEoIoIl0WALgKYJbBABADAAHgHg8VAMmqCQQDMXABAATYwTmNwBDATJXAiAgjHmNQ5lgQ5QEQEQMmcWg/GwD5ylyNw2gMcJcjsBgBgOQQDDhRpVAMMwnDBFw1B0Ax8D0DxOmmJJIGQTY5hGMAwkwM4CAYLZAmAOJnAqAojiIGg6iieYkmeAYOHaKJDCyCwjH6AoggsQpQliAJLhgaJ0CESBTnyDwjk+cg4g4P5IHIHJ+BWRRzlYWAxiOUxihsY4KjKLJRGqC44FCegkkkM58iAKAPnIWIWD8SRSFSfQnkmewUhYP4GiGKJ7G0TIbCSUoggqUo0lAQ4LnEcBcD8Coiiif4nE+eAAn2HpOkcFJqi4T5SkyMw/kqQown8IBIBOdA+A+DJrBqVxXEqYo4lCApLhGHBnD8S4ymyfxmg+cwQkQP5egOUZIWoEA" +;
"kjIeIPBMBJBD+TBjBifwvkuc58hQJQPmFrYykkchclSApKjGOBuD+TRDFCfw3mmIxNi8FxFlOXhVC4aYDFyPgvg2YBcBcLZGCGCJ0DSLRzGSWQ/lmY5+mEP5gmMDBZRSMRsFsOxMhMJJ/DsTpTnwaQaE+N5ojuNhdEYNI5C4TZJO1GRDmCaxnA2Yx4n8IpIjOTBQBQC5TgyYw7gUYRYikC0BYRwsDQBoB8eA6Q2hsE0BUXgywZtYCyHMKwnxSAhAQHkIQhRrBaDsCwA4ERiB2EWAIYIXhhiVEgAEUYwwYjyASLge4FhHgRDkM8OQih0jWPkGgBBAQ")
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarPromptVisible := 257/*exFilterBarToggle+exFilterBarPromptVisible*/
oComboBox:SetProperty("Background",1/*exFooterFilterBarButton*/,0x1000000)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
510
|
How can I change the visual appearance of the filter bar's close button (solid)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
oComboBox:SetProperty("Background",1/*exFooterFilterBarButton*/,AutomationTranslateColor( GraMakeRGBColor ( { 255,0,0 } ) , .F. ))
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
509
|
Is it possible to prevent definitely showing the filter bar's close button

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
oComboBox:SetProperty("Background",1/*exFooterFilterBarButton*/,-1)
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
508
|
Is it possible to show the close button only if there is a filter applied

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarPromptVisible := 513/*exFilterBarShowCloseIfRequired+exFilterBarPromptVisible*/
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
507
|
The control's filter bar is not closed once I click the close button (toggle)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
LOCAL h
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oItems:SetProperty("LockedItemCount",2/*exBottom*/,1)
h := oItems:LockedItem(2/*exBottom*/,0)
oItems:SetProperty("ItemDivider",h,0)
oItems:SetProperty("CellCaption",h,0,"<c><fgcolor=808080>Press the CTRL + F to turn on/off the control's filter bar. ALT + Up/Down moves the focus.")
oItems:SetProperty("CellCaptionFormat",h,0,1/*exHTML*/)
oComboBox:FilterBarCaption := "`<r><fgcolor=808080>` + value"
oComboBox:FilterBarPromptPattern := "B"
oComboBox:FilterBarPromptVisible := 2323/*exFilterBarCompact+exFilterBarToggle+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
oColumn1 := oComboBox:Columns:Item(0)
oColumn1:FilterType := 240/*exFilter*/
oColumn1:Filter := "Item B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
506
|
How can I display the control's filter on a single line

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarCaption := "len(value) ? `filter for: <fgcolor 808080>` + value : `<fgcolor 808080>no filter`"
oComboBox:FilterBarPromptVisible := 18/*exFilterBarSingleLine+exFilterBarVisible*/
oColumn1 := oComboBox:Columns:Item(0)
oColumn1:FilterType := 240/*exFilter*/
oColumn1:Filter := "Item A|Item B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
505
|
How can I display the control's filter on a single line (prompt-combined)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarCaption := "`<r>` + value"
oComboBox:FilterBarPromptVisible := 2067/*exFilterBarCompact+exFilterBarSingleLine+exFilterBarVisible+exFilterBarPromptVisible*/
oColumn1 := oComboBox:Columns:Item(0)
oColumn1:FilterType := 240/*exFilter*/
oColumn1:Filter := "Item A|Item B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
504
|
How can I get the number of results after a filter is applied

PROCEDURE OnClick(oComboBox)
oComboBox:ClearFilter()
RETURN
PROCEDURE OnFilterChange(oComboBox)
DevOut( "Items.MatchItemCount" )
DevOut( Transform(oComboBox:Items:MatchItemCount(),"") )
DevOut( Transform(oComboBox:FormatABC("value < 0 ? `filter applied: ` + abs(value + 1) + ` result(s)` : `no filter`",oComboBox:Items:MatchItemCount()),"") )
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:Click := {|| OnClick(oComboBox)} /*Occurs when the user presses and then releases the left mouse button over the list control.*/
oComboBox:FilterChange := {|| OnFilterChange(oComboBox)} /*Occurs when filter was changed.*/
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
oComboBox:FilterBarPromptPattern := "Item"
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
503
|
How can I programmatically clear the control's filter
PROCEDURE OnClick(oComboBox)
oComboBox:ClearFilter()
RETURN
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:Click := {|| OnClick(oComboBox)} /*Occurs when the user presses and then releases the left mouse button over the list control.*/
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
oComboBox:FilterBarPromptPattern := "B"
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
502
|
Is it possible to prevent closing the control's filter bar, so it is always shown (prompt-combined)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn,oColumn1
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarPromptPattern := "B"
oComboBox:FilterBarPromptVisible := 3/*exFilterBarVisible+exFilterBarPromptVisible*/
oColumn1 := oComboBox:Columns:Item(0)
oColumn1:FilterType := 240/*exFilter*/
oColumn1:Filter := "Item B"
oComboBox:ApplyFilter()
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|
501
|
Is it possible to prevent closing the control's filter bar, so it is always shown (prompt)

#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oComboBox
LOCAL oColumn
LOCAL oItems
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oComboBox := XbpActiveXControl():new( oForm:drawingArea )
oComboBox:CLSID := "Exontrol.ComboBox.1" /*{CF170E7A-4391-44BD-8D93-29F8D2801EF7}*/
oComboBox:create(,, {10,60},{610,370} )
oComboBox:BeginUpdate()
oComboBox:Columns():Add("Item"):DisplayFilterButton := .T.
oColumn := oComboBox:Columns():Add("Pos")
oColumn:AllowSizing := .F.
oColumn:AllowSort := .F.
oColumn:Width := 32
oColumn:FormatColumn := "1 apos ``"
oColumn:Position := 0
oItems := oComboBox:Items()
oItems:AddItem("Item A")
oItems:AddItem("Item B")
oItems:AddItem("Item C")
oComboBox:FilterBarPromptVisible := 1/*exFilterBarPromptVisible*/
oComboBox:FilterBarPromptPattern := "B"
oComboBox:EndUpdate()
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
|