Code archives/BlitzPlus Gui/Editable combobox
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Editable combobox without Api. | |||||
; ; ; ComboEx test. 2006-02-18 ; ; Global Window=CreateWindow("ComboEx Test.",0,0,640,480) ; ; Create explorer combo. ; CreateLabel "Explorer Combo box.",10,10,100,20,Window Global NCombo.tComboEx NCombo.tComboEx=CreateComboBoxEx(10,30,200,20,Window,100,CE_AutoSearch+CE_EnterSelect) CEx_AddItem(NCombo,"http://www.blitzbasic.com") CEx_AddItem(NCombo,"http://www.google.se") CEx_AddItem(NCombo,"http://www.download.com") CEx_AddItem(NCombo,"http://www.codersworkshop.com") CEx_AddItem(NCombo,"http://www.yahoo.com") CEx_AddItem(NCombo,"http://www.voltroncc.org") CEx_Sort(NCombo) CEx_LimitItems(NCombo,8) ;Set to max 8 items in itemsbox. CEx_SetTextMask(NCombo,"http://") ;remove http:// from search engine. NCombo\AddButton=CreateButton("Add bookmark.",250,30,100,20,Window) NCombo\DeleteButton=CreateButton("Del bookmark.",250,65,100,20,Window) ;; ;; Enter hex box ;; CreateLabel("Enter hex value:",10,80,100,20,Window) Global HCombo.tComboEx HCombo=CreateComboBoxEx(10,100,100,20,Window,50,CE_AutoSearch+CE_EnterNormal+CE_DisablePull) CEx_SetFormat(HCombo,"$$$$") CEx_SetPrefix(HCombo,"$") CreateLabel("Int:",120,80,100,20,Window) Global convlabel=CreateLabel("0",120,100,100,20,Window,1) ;; ;;More formating, upper/lower letters ;; CreateLabel("Enter string to add:",10,150,100,20,Window) Global FCombo.tComboEx FCombo=CreateComboBoxEx(10,170,100,20,Window,50,CE_EnterAddItem ) CEx_SetFormat(FCombo,"&¤&¤&¤&¤¤&¤&¤&¤&¤&") ;; ;; Another combobox ;; CreateLabel("Limit to text, and another way to add.",10,220,200,20,Window) Global ACombo.tComboEx ACombo=CreateComboBoxEx(10,250,100,20,Window,100,CE_AutoSearch+CE_AutoSort+CE_EnterSelect) CEx_LimitTextTo(ACombo,CE_LimitLetters) Global AddButton=CreateButton("Add.",120,280,45,20,Window) Repeat Select WaitEventEx() Case $401 Select EventSource() Case NCombo\AddButton If NCombo\Existed=True Notify("Why add something when it already exists??") Else Notify(NCombo\SelectedText+" is added to the list") EndIf Case NCombo\Key_Enter,NCombo\Items tomt=CreateHtmlView(250,100,370,300,Window,1) Notify(NCombo\SelectedText) HtmlViewGo(tomt,Replace(NCombo\SelectedText," ","")) Case NCombo\Items Notify "Selected: "+NCombo\SelectedText Case HCombo\TextField SetGadgetText(convlabel,HCombo\Advance\HexToInt) Case FCombo\Key_Enter Notify("This is a format test, your input: "+FCombo\SelectedText) Case FCombo\Items Notify("You selected:"+FCombo\SelectedText) Case AddButton,ACombo\Key_Enter AddGadgetItem(ACombo\Items,ACombo\SelectedText) End Select Case $803 End End Select Forever ; ; ; ; ComboBoxEx by Tiger (2006) ; ; Compiler: Blitz+ ; ; Free to use and change how you want. ; ; ; ############################################################################################################ ; ; Public Constants ; ; ############################################################################################################ ; ; Style Flags ; ; Char conver options Const CE_ChrNormal =0 ;Like user input. Const CE_ChrUpper =2 ;All Char upper. Const CE_ChrLower =4 ;All Char lower. Const CE_ChrFirst =8 ;First Char upper. ; Enter options Const CE_EnterNormal =16 ;Press enter and trigger Key_Enter event. Const CE_EnterAddItem =32 ;Press enter and add user input in itembox. Const CE_EnterDeleteItem=64 ;Press enter and delete user input in itembox. Const CE_EnterSelect =128;Press enter and select current item/text. ; Auto Search Mode Const CE_AutoSearch =256 ; Sort added items Const CE_AutoSort =512 ; Hide Item box + Pulldown button (it starts to works like a textfield) Const CE_DisablePull =1024 ; Limit user input to Letters/Numbers, use in function CEx_LimitTextTo() Const CE_LimitNormal =0 ;(Default) Const CE_LimitLetters =1 Const CE_LimitNumbers =2 ; Default Value Const CE_Default = CE_ChrNormal + CE_EnterSelect + CE_AutoSearch ; ############################################################################################################ ; ; Public Type ; ; ############################################################################################################ Type tComboEx Field Panel ;This can be used to but some cool colors/image in the background. (Panels commands) Field TextField ;Handler to Textfield. Field Items ;Handler to Items, use the normal combobox commands or CEx_AddItem(). Field Key_Enter ;Handler to Enter key. Field Key_Esc ;Handler to Esc key. Field PreFix$ ;Prefix used in textfield Field SelectedText$ ;Selected text. Very nice to use, no need to convert combo index. Field AddButton ;User can create own add item button, create button and use this handler. Field DeleteButton ;User can create own delete item button, create button and use this handler Field Existed ;Flag, sets when user try to add a already existed item to itembox. Field Advance.tComboBoxEX__ ;Here is more options End Type ; ############################################################################################################ ; ; Public functions ; ; ############################################################################################################ Function WaitEventEx(F=0) Local CB.tComboBoxEX__ Local WaitEvent_=WaitEvent(F) Local Index Local Txt$ Local ED=EventData() Select WaitEvent_ Case $401 t=EventSource() For CB=Each tComboBoxEx__ Select t Case CB\DownButton If CB\DownActive=False ComboEXActive___(CB) ActivateGadget CB\Parent Else ComboEXHide___(CB) EndIf Case CB\TextField Txt$=TextFieldText(CB\TextField) ; ; Text limit to Letters/Numbers. ; If ED<>32 ;space char should be okay, don't you think?? Select CB\LimitInput Case CE_LimitLetters If ED<Asc("A") Or ED>Asc("z") Txt$=Replace(Txt$,Chr$(ED),"") SetGadgetText(CB\TextField,Txt$) EndIf Case CE_LimitNumbers If ED<Asc("0") Or ED>Asc("9") Txt$=Replace(Txt$,Chr$(ED),"") SetGadgetText(CB\TextField,Txt$) EndIf End Select EndIf ; ; Text Limit size ; If CB\TextLimitSize>0 If Len(Txt$)>CB\TextLimitSize SetGadgetText(CB\TextField,Mid$(Txt$,1,Len(Txt$)-1)) Txt$=TextFieldText(CB\TextField) EndIf EndIf ComboEXConverChar___(CB) ; ; View Prefix ; If CB\UserInterface\PreFix<>"" If Mid$(Txt$,1,Len(CB\UserInterface\PreFix))<>CB\UserInterface\PreFix SetGadgetText(CB\TextField,CB\UserInterface\PreFix) EndIf EndIf If CB\Format<>"" Txt$=CEx_Format___(CB\UserInterface,Txt$) SetGadgetText(CB\TextField,Txt$) EndIf ; ; Search mode ; Found=False Select CB\SearchMode Case CE_AutoSearch For Index=0 To CountGadgetItems(CB\DownListBox)-1 Org$=Upper$(GadgetItemText(CB\DownListBox,Index)) Off=1 Mask$=Upper$(CB\TextMask) If Mask$<>"" If Mask$=Mid$(Org$,1,Len(CB\TextMask)) Off=Len(CB\TextMask)+1 EndIf EndIf SelTxt$=Mid$(Org$,off,Len(Txt$)) If SelTxt$=Upper(Txt$) SelectGadgetItem(CB\DownListBox,Index) CB\UserInterface\SelectedText=GadgetItemText(CB\DownListBox,Index) Found=True Exit EndIf Next If Found=False CB\UserInterface\SelectedText=Txt$ ComboEXHide___(CB) Else ComboEXActive___(CB) EndIf Default CB\UserInterface\SelectedText=Txt$ End Select Case CB\ESCButton CB\DownActive=False ComboEXHide___(CB) ActivateGadget(CB\Parent) Case CB\DownListBox Local SelObj=SelectedGadgetItem(CB\DownListBox) If SelObj>-1 SetGadgetText(CB\TextField,GadgetItemText(CB\DownListBox,SelObj)) CB\UserInterface\SelectedText=GadgetItemText(CB\DownListBox,SelObj) ComboEXConverChar___(CB) ComboEXHide___(CB) If CB\EnterButtonStatus=CE_EnterDeleteItem If CEx_DeleteItem(CB\UserInterface,TextFieldText(CB\TextField))=False WaitEvent_=0 EndIf EndIf EndIf Case CB\EnterButton Select CB\EnterButtonStatus Case CE_EnterNormal ComboEXHide___(CB) ComboEXConverChar___(CB) CB\UserInterface\SelectedText=TextFieldText(CB\TextField) Case CE_EnterAddItem Local NrOfITems=0 Txt$=CB\UserInterface\SelectedText If Txt$<>"" CEx_AddItem(CB\UserInterface,CB\UserInterface\SelectedText,True);CB\UserInterface\SelectedText,True) Else WaitEvent_=0 EndIf Case CE_EnterDeleteItem If CEx_DeleteItem(CB\UserInterface,TextFieldText(CB\TextField))=False WaitEvent_=0 EndIf Case CE_EnterSelect If CB\DownActive Found=False For Index=0 To CountGadgetItems(CB\UserInterface\Items)-1 If Upper$(GadgetItemText(CB\UserInterface\Items,Index))=Upper$(CB\UserInterface\SelectedText) Found=True Exit EndIf Next If Found SelObj=SelectedGadgetItem(CB\DownListBox) If SelObj>-1 SetGadgetText(CB\TextField,GadgetItemText(CB\DownListBox,SelObj)) CB\UserInterface\SelectedText=GadgetItemText(CB\DownListBox,SelObj) ActivateGadget(CB\Parent) ComboEXConverChar___(CB) ComboEXHide___(CB) Else WaitEvent_=0 EndIf Else CB\UserInterface\SelectedText=TextFieldText(CB\TextField) ActivateGadget(CB\Parent) ComboEXConverChar___(CB) ComboEXHide___(CB) EndIf EndIf End Select Default ComboEXHide___(CB) End Select ; ; Check extern add button. ; If CB\UserInterface\AddButton<>0 If t=CB\UserInterface\AddButton NrOfITems=0 Txt$=CB\UserInterface\SelectedText;TextFieldText(CB\TextField) If Txt$<>"" CEx_AddItem(CB\UserInterface,Txt$,True) Else WaitEvent_=0 EndIf EndIf EndIf ; ;Check extern delete button. ; If CB\UserInterface\DeleteButton<>0 If t=CB\UserInterface\DeleteButton If CEx_DeleteItem(CB\UserInterface,TextFieldText(CB\TextField))=False WaitEvent_=0 EndIf EndIf EndIf Next Case $201 ; ; Close any active pulldown windows when clicking at emty spaces. ; For CB=Each tComboBoxEx__ If CB\DownActive=True ComboEXHide___(CB) Exit EndIf Next Case $101 ; ; Controll arrows in listbox ; Listbox=EventData() If Listbox<>0 And EventSource()=$120 TextField=EventX() Key=EventY() NrOfITems=CountGadgetItems(Listbox)-1 For CB=Each tComboBoxEX__ If CB\DownActive Exit EndIf Next If Key=208 DisableGadget TextField EnableGadget TextField SelObj=SelectedGadgetItem(Listbox) If SelObj<NrOfITems Then SelObj=SelObj+1 SelectGadgetItem(Listbox,SelObj) CB\UserInterface\SelectedText=GadgetItemText(Listbox,SelObj) EndIf If Key=200 DisableGadget TextField EnableGadget TextField SelObj=SelectedGadgetItem(Listbox) If SelObj>0 SelObj=SelObj-1 Else ActivateGadget(CB\TextField) EndIf SelectGadgetItem(Listbox,SelObj) CB\UserInterface\SelectedText=GadgetItemText(Listbox,SelObj) EndIf EndIf End Select Return WaitEvent_ End Function ;;; <summary>Create extended combobox.</summary> ;;; <param name="X"></param> ;;; <param name="Y"></param> ;;; <param name="Width"></param> ;;; <param name="Height"></param> ;;; <param name="Group"></param> ;;; <param name="BoxHeight"></param> ;;; <param name="Style">test <br></br> test </param> ;;; <param name="IconStrip"></param> ;;; <remarks></remarks> ;;; <returns></returns> ;;; <subsystem></subsystem> ;;; <example></example> Function CreateComboBoxEx.tComboEx(X,Y,Width,Height,Group,BoxHeight=100,Style=CE_Default,IconStrip=0) If Group=0 Then Notify("ComboBoxEx needs a parent to work.") Local CB.tComboBoxEX__ Local Out.tComboEx Local Panel CB=New tComboBoxEX__ If CB=Null Then RuntimeError("Can't create tComboBoxEX__") ; ; Mask Style Flag ; Local S_=Style Local ChrFirst = S_ And ( CE_ChrFirst ) Local ChrLower = S_ And ( CE_ChrLower ) Local ChrNormal = S_ And ( CE_ChrNormal ) Local ChrUpper = S_ And ( CE_ChrUpper ) Local EnterAddItem = S_ And ( CE_EnterAddItem ) Local EnterDelItem = S_ And ( CE_EnterDeleteItem ) Local EnterNormal = S_ And ( CE_EnterNormal ) Local EnterSearch = S_ And ( CE_EnterSelect ) Local AutoSearch = S_ And ( CE_AutoSearch ) Local AutoSort = S_ And ( CE_AutoSort ) Local EnterButton = S_ And ( CE_EnterButton ) Local EscButton = S_ And ( CE_EscButton ) Local DisablePull = S_ And ( CE_DisablePull ) Local CharCase=ChrFirst+ChrLower+ChrNormal+ChrUpper Local EnterStatus=EnterAddItem+EnterButton+EnterNormal+EnterDelItem+EnterSearch ; ; Normalize if not set by user. ; If CharCase=0 Then CharCase=CE_ChrNormal If EnterStatus=0 Then EnterStatus=CE_EnterNormal Panel=CreatePanel(X,Y,Width+20,Height,Group,2) CB\X=X CB\Y=Y CB\Width=Width+20 CB\Height=Height CB\ExpandHeight=Height+BoxHeight CB\Panel=Panel CB\TextField=CreateTextField(0,0,Width,Height,Panel,0) If DisablePull=0 CB\DownButton=CreateButton(Chr(94),Width,0,20,Height,Panel,1) CB\PullButtonEnable=True SetGadgetLayout(CB\DownButton,1,0,1,0) Else CB\PullButtonEnable=False EndIf CB\DownWindow=CreateCanvas(0,Height+2,Width,BoxHeight,Panel) CB\DownListBox=CreateListBox(0,0,Width,BoxHeight,CB\DownWindow,IconStrip) CB\CharCase=CharCase CB\SearchMode=AutoSearch CB\AutoSort=AutoSort CB\EnterButtonStatus=EnterStatus CB\Parent=Group CB\ESCButton=CreateButton("",0,0,0,0,CB\Panel,5) SetGadgetLayout(CB\ESCButton,1,0,1,0) CB\EnterButton=CreateButton("",0,0,0,0,CB\Panel,4) HideGadget CB\DownWindow SetGadgetLayout(CB\Panel,1,0,1,0) SetGadgetLayout(CB\TextField,1,0,1,0) SetGadgetLayout(CB\EnterButton,1,0,1,0) SetGadgetLayout(CB\DownWindow,1,0,1,0) ; ; Create user inteface ; Out=New tComboEx Out\TextField=CB\TextField Out\Items=CB\DownListBox Out\Key_Enter=CB\EnterButton Out\Key_Esc=CB\ESCButton Out\Panel=CB\Panel Out\Advance=CB CB\UserInterface=Out Return Out End Function Function CEx_Sort(CB.tComboEx,Txt$="") Local S.tComboSort__ Local BB.tComboSort__ Local BBB.tComboSort__ Local Index=0 Local NrOfItems=CountGadgetItems(CB\Items)-1 If NrOfItems=<0 Then Return False ; ; Conver list to tComboSort type. ; For Index=0 To NrOfItems S=New tComboSort__ S\String=GadgetItemText(CB\Items,Index) S\TrimString=Replace(S\String," ","") Next ClearGadgetItems(CB\Items) ; ; Begin sort process, thanks SkidRacer for this sorting routine. ; b.tComboSort__=First tComboSort__ flag=True While flag flag=False bb.tComboSort__=Last tComboSort__ While bb<>b BBB.tComboSort__=Before BB If BBB=Null Exit If Upper$(BB\TrimString)<Upper$(BBB\TrimString) Insert bbb After bb flag=True Else bb=bbb EndIf Wend b=After bb Wend For S=Each tComboSort__ AddGadgetItem(CB\Items,S\String) Next Delete Each tComboSort__ ; ; Select gadgetitem ; If Txt$<>"" And CountGadgetItems(CB\Items)>0 For Index=0 To CountGadgetItems(CB\Items)-1 If GadgetItemText(CB\Items,Index)=Txt$ Then SelectGadgetItem(CB\Items,Index):Exit Next EndIf End Function ;Not ready, no use... Function CEx_SetAutoSortRange(CB.tComboEx,FromIndex=0,ToIndex=0) CB\Advance\AutoSortFrom=FromIndex CB\Advance\AutoSortTo=ToIndex End Function Function CEx_SetPrefix(CB.tComboEx,Prefix$) SetGadgetText(CB\TextField,Prefix$) ComboEXConverChar___(CB\Advance) CB\PreFix=TextFieldText(CB\TextField) End Function Function CEx_SetTextMask(CB.tComboEx,Mask$) CB\Advance\TextMask$=Upper$(Mask$) End Function Function CEx_LimitTextLenght(CB.tComboEx,Lenght) CB\Advance\TextLimitSize=Lenght End Function Function CEx_LimitTextTo(CB.tComboEx,To_=CE_LimitLetters) CB\Advance\LimitInput=To_ End Function Function CEx_LimitItems(CB.tComboEx,Items=10) CB\Advance\LimitNrItems=Items End Function Function CEx_AddItem(CB.tComboEx,Item$,Sel=False,Icon=0) If Item$<>"" ; ; Check if item allready exists ; For Index=0 To CountGadgetItems(CB\Items)-1 If Upper$(Item$)=Upper$(GadgetItemText(CB\Items,index)) CB\Existed=True SetGadgetText(CB\TextField,Item$) Return False EndIf Next CB\Existed=False ; ; Check items limit. ; If CB\Advance\LimitNrItems>0 NrOfItems=CountGadgetItems(CB\Advance\DownListBox) If NrOfITems>=CB\Advance\LimitNrItems RemoveGadgetItem(CB\Advance\DownListBox,0) EndIf EndIf AddGadgetItem(CB\Advance\DownListBox,Item$,Sel,Icon) If CB\Advance\AutoSort=CE_AutoSort Then CEx_Sort(CB,Item$) CB\SelectedText=Item$ SetGadgetText(CB\TextField,CB\PreFix) Return True Else AddGadgetItem(CB\Items,"") ComboEXHide___(CB\Advance) Return False EndIf End Function Function CEx_DeleteItem(CB.tComboEx,Txt$="") Local NrOfItems=CountGadgetItems(CB\Items)-1 Local Index=0, SelectedItem=SelectedGadgetItem(CB\Items) Local Found=False If NrOfItems=0 Then Return False If Txt$="" If SelectedItem=-1 Then Return False CB\SelectedText=GadgetItemText(CB\Items,SelectedItem) RemoveGadgetItem(CB\Items,SelectedItem) SetGadgetText(CB\TextField,CB\PreFix) Found=True Else For Index=0 To NrOfItems If Upper$(GadgetItemText(CB\Items,Index))=Upper$(Txt$) RemoveGadgetItem(CB\Items,Index) CB\SelectedText=Txt$ Found=True SetGadgetText(CB\TextField,CB\PreFix) NrOfItems=NrOfItems-1 EndIf Next EndIf Return Found End Function ;;; <summary>Set user input format.</summary> ;;; <param name="CB"></param> ;;; <param name="Format">$=HEX %=BIN #=Numbers &=Lowercase convert ¤=Uppercase convert *=no format change.</param> ;;; <remarks></remarks> ;;; <returns></returns> ;;; <subsystem></subsystem> ;;; <example></example> Function CEx_SetFormat(CB.tComboEx,Format$) CB\Advance\Format=Format$ End Function Function CEx_Format___$(CB.tComboEx,Txt$) Local Format$=CB\Advance\Format Local Prefix$=CB\PreFix Local LetterLow$="&" ;Lowcase Local LetterUpp$="¤" ;Uppercase Local Letter$ ="*" ;Don't change case. Local Number$ ="#" ;0-9 Local Hexs$ ="$" ;A-F , 0-9 Local Bins$ ="%" ;0/1 Local TxtSize=Len(Txt$) Local FormSize=Len(Format$) Local CountTxt=1,Get$,Form$,Out$ Local CountForm=1 Local Conv$,Ok=True If Prefix<>"" Then Out=Prefix$:Txt$=Replace(Txt$,Prefix,"") CB\Advance\HexToInt=0 While CountForm<FormSize+1 Get$=Mid$(Txt$, CountTxt ,1) Form$=Mid$(Format$,CountForm,1) Select Form$ Case LetterLow$,LetterUpp$,Letter$ If (Get$>="A" And Get$=<"Z") Or (Get$>="a" And Get$=<"z") Or Get$=" " Or Get$="." Or Get$="," If Form$=LetterLow$ Then Get$=Lower$(Get$) If Form$=LetterUpp$ Then Get$=Upper$(Get$) CountTxt=CountTxt+1 Out$=Out$+Get$ Else Exit EndIf Case Number$ If Get$>="0" And Get$=<"9" Or Get$="," CountTxt=CountTxt+1 Out$=Out$+Get$ Else Exit EndIf Case Hexs$ If (Get$>="A" And Get$=<"F") Or (Get$>="a" And Get$=<"f") Or (Get$>="0" And Get$=<"9"); Or Get$="," CountTxt=CountTxt+1 Out$=Out$+Get$ ; ;Convert Hex to int. ; t2$=Upper$(Out) Local d%=0 For z=1 To Len(t2$) i=Instr("0123456789ABCDEF",Mid$(t2$,z,1)) If i>0 Then d=d*16+i-1 Next CB\Advance\HexToInt=d Else Exit EndIf Case Bins$ If Get$="0" Or Get$="1"; Or Get$="," CountTxt=CountTxt+1 Out$=Out$+Get$ EndIf Default Out$=Out$+Get$ CountTxt=CountTxt+1 End Select CountForm=CountForm+1 Wend Return Out End Function ; ############################################################################################################ ; ; Private Functions ; ; ############################################################################################################ Function ComboEXActive___(CB.tComboBoxEX__) If CB\PullButtonEnable=False Then Return If ComboEXActive__=Null ComboEXActive__=CB ShowGadget(CB\DownWindow) SetGadgetShape(CB\Panel,CB\X,CB\Y,CB\Width,CB\ExpandHeight) CB\DownActive=True ActivateGadget(CB\TextField) ComboHotKey(CB,True) Return EndIf If CB<>ComboEXActive__ HideGadget(ComboEXActive__\DownWindow):ComboEXActive__\DownActive=False ShowGadget(CB\DownWindow):CB\DownActive=True SetGadgetShape(CB\Panel,CB\X,CB\Y,CB\Width,CB\ExpandHeight) ActivateGadget(CB\TextField) ComboEXActive__=CB ComboHotKey(CB,True) EndIf End Function Function ComboHotKey(CB.tComboBoxEX__,Flag) If Flag=True HotKeyEvent(208,0,$101,CB\DownListBox,CB\TextField,208,0,$120) HotKeyEvent(200,0,$101,CB\DownListBox,CB\TextField,200,0,$120) HotKeyEvent(028,0,$401,0,0,0,0,CB\EnterButton) Else HotKeyEvent(208,0,0,0) HotKeyEvent(200,0,0,0) HotKeyEvent(028,0,0,0) EndIf End Function Function ComboEXHide___(CB.tComboBoxEX__) If CB\PullButtonEnable=False Then Return If CB\DownActive=False Then Return CB\DownActive=False ComboEXActive__=Null HideGadget(CB\DownWindow) HideGadget(CB\Panel) SetGadgetShape(CB\Panel,CB\x,CB\y,CB\Width,CB\Height) ShowGadget(CB\Panel) ComboHotKey(CB,False) End Function Function ComboEXConverChar___(CB.tComboBoxEX__,Txt$="") ; ; Set input text to upper/lower. ; Txt$=TextFieldText(CB\TextField) Select CB\CharCase Case CE_ChrUpper SetGadgetText(CB\TextField,Upper$(Txt$)) Case CE_ChrLower SetGadgetText(CB\TextField,Lower$(Txt$)) Case CE_ChrFirst Local Firstletter$=Left(txt$,1) Firstletter$=Upper$(Firstletter$) SetGadgetText(CB\TextField,Firstletter$+Mid$(txt$,2,Len(txt$)-1)) End Select End Function ; ############################################################################################################ ; ; Private Globals ; ; ############################################################################################################ Global ComboEXActive__.tComboBoxEx__ ; Last activated ComboBoxEx pointer. ; ############################################################################################################ ; ; Private Type (Can be used with the Advance pointer in tComboEx.) ; ; ############################################################################################################ Type tComboBoxEX__ Field Parent ; Parent to comboboxEx. Field Panel ; Working area on screen. ( same panel in tComboEx ) Field X,Y,Width,Height Field ExpandHeight ; Field TextField ; User input textfield ( same textfield in tComboEx ) Field TextLimitSize Field Format$ ; Input format. Field TextMask$ Field LimitInput ;0=No limit, 1=Only letters, 2=only numbers. ; Field LimitNrItems ; Field CharCase ; Upper/Lower user input (CE_ChrUpper/CE_ChrLower/CE_ChrNormal) ; Field DownButton ; Handler to PullDown Button. Field DownWindow ; Handler to PullDown Window Field DownListBox ; Handler to PullDown listbox in window. Field DownActive ; True/False if PullDown window is open. ; Field SearchMode ; Search in combolist after text matching user input. Field AutoSort Field AutoSortFrom ;Not in use Field AutoSortTo ;Not in use Field HexToInt ;This is in use when using format(hex) Field UserInterface.tComboEx ;--------------------------- ; ; Special user input keys ; ;--------------------------- ; Enter Field EnterButton ; Handler to Enter button Field EnterButtonStatus ; CE_EnterAddItem = Enter input to the combo list. Field PullButtonEnable ; ESC Field ESCButton End Type ; ; Sort storage. ; Type tComboSort__ Field NoSort,String$,TrimString$ End Type |
Comments
None.
Code Archives Forum