Concept pour LibEditorPlus : AutoCompletion
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Concept pour LibEditorPlus : AutoCompletion
Voilà, je souhaiteraisa ajouter cette fonctionnalité à ma librairie LibEditorPlus mais je ne vois pas comment faire donc si quelques uns avait l'idée de m'aider par des idées, des bouts de codes, des axes à suivre, cela m'aiderait ! Merci !
PS : A toutes les améliorations que l'on m'a demandé, elles seront terminées bientot ! Enfin j'espère !
PS : A toutes les améliorations que l'on m'a demandé, elles seront terminées bientot ! Enfin j'espère !
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Re: Concept pour LibEditorPlus : AutoCompletion
Les sources de JaPBeProgi1984 a écrit :Voilà, je souhaiteraisa ajouter cette fonctionnalité à ma librairie LibEditorPlus mais je ne vois pas comment faire donc si quelques uns avait l'idée de m'aider par des idées, des bouts de codes, des axes à suivre, cela m'aiderait ! Merci !
PS : A toutes les améliorations que l'on m'a demandé, elles seront terminées bientot ! Enfin j'espère !
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
JaPBe est basé sur la DLL de Scintilla que j'essaie de reproduire car je n'arrive pas du tout à l'utiliser !
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Pas grave mais j'attends vos idées...
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
c'est pas tres dur !
tu tiens a jour une liste de nom de fonction (par exemple)
puis a chaque frappe de l'utilisateur (a chaque charactere entré)
tu compare le mot en cours d'ecriture avec chacun des mot de la liste (celle qui contien les fonction d'un basic par exemple ! )
par comparaison , j'entend que tu regarde si ce que le gars viens d'entrer (le mot en cour d'ecriture )
correspond au 2 ,3,ou 4 premiere lettre de chaque mot de la liste
si tu as une correspondance , tu affiche ce mot (celui de la liste)
en lieu et place de celui que le gars tappe !
en te referent a l'espace precedent, pour le depart !!
enfin moi je ferai comme ça !

tu tiens a jour une liste de nom de fonction (par exemple)
puis a chaque frappe de l'utilisateur (a chaque charactere entré)
tu compare le mot en cours d'ecriture avec chacun des mot de la liste (celle qui contien les fonction d'un basic par exemple ! )
par comparaison , j'entend que tu regarde si ce que le gars viens d'entrer (le mot en cour d'ecriture )
correspond au 2 ,3,ou 4 premiere lettre de chaque mot de la liste
si tu as une correspondance , tu affiche ce mot (celui de la liste)
en lieu et place de celui que le gars tappe !
en te referent a l'espace precedent, pour le depart !!
enfin moi je ferai comme ça !

- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Je vais essayer un truc avec une ComboxGadget, genre à la VisualBasic ou à la Scintilla ! Vé faire un petit test !
Mais n'hésitez pas à poster ! cela sert toujours à tout le monde le brainstorming !
Mais n'hésitez pas à poster ! cela sert toujours à tout le monde le brainstorming !
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Récupéré sur code archive dans la section other/OOP
Ça fait ce que tu veux faire je pense.
A+
Guimauve
Ça fait ce que tu veux faire je pense.
A+
Guimauve
Code : Tout sélectionner
; English forum: http://purebasic.myforums.net/viewtopic.php?t=8048&highlight=
; Author: Justin
; Date: 25. October 2003
;Autocomplete object
;Justin 10/03
; Just to play a little with the new functions. An object that makes an autocomplete
; in an editbox / listbox. It's a working example, note that you have to use setsel()
; if the selected listbox index changes outside the object, i did this to improve the
; speed, rather than checking the selected index for every edit change inside the object.
; Only for windows.
Interface IPBAutoComplete
FindStr(str$)
SetEdit(id)
SetListBox(id)
SetSel(isel)
EndInterface
Structure PBAutoCompleteFunctions
FindStr.l
SetEdit.l
SetListBox.l
SetSel.l
EndStructure
Structure OPBAutoComplete
*VTable.PBAutoCompleteFunctions
hwndedit.l
hwndlistbox.l
idedit.l
idlistbox.l
iselected.l
EndStructure
;finds and select the passed string
Procedure FindStr(*Object.OPBAutoComplete,str$)
hwndlistbox=*Object\hwndlistbox
istr=SendMessage_(hwndlistbox,#LB_FINDSTRING,-1,str$)
If istr<>-1
;skip if item is selected
If *Object\iselected=istr : ProcedureReturn : EndIf
textlen=Len(str$)
newtextlen=SendMessage_(hwndlistbox,#LB_GETTEXTLEN,istr,0)
seltextlen=newtextlen-textlen
;select
SendMessage_(hwndlistbox,#LB_SETCURSEL,istr,0)
;set edit text
SetGadgetText(*Object\idedit,GetGadgetItemText(*Object\idlistbox,istr,-1))
;set selected text
SendMessage_(*Object\hwndedit,#EM_SETSEL,textlen,newtextlen)
;update index
*Object\iselected=istr
EndIf
EndProcedure
;sets the editbox for this object
;id : editbox id
Procedure SetEdit(*Object.OPBAutoComplete,id)
*Object\idedit=id
*Object\hwndedit=GadgetID(id)
EndProcedure
;sets the listbox for this object
;id : listbox id
Procedure SetListBox(*Object.OPBAutoComplete,id)
*Object\idlistbox=id
*Object\hwndlistbox=GadgetID(id)
EndProcedure
;sets the selected listbox index
;iselected : index of selected item
;you are responsable to update this index every time it changes
;-1 = no selection
Procedure SetSel(*Object.OPBAutoComplete,iselected)
*Object\iselected=iselected
EndProcedure
PBAutoCompleteFunctions.PBAutoCompleteFunctions\FindStr=@FindStr()
PBAutoCompleteFunctions.PBAutoCompleteFunctions\SetEdit=@SetEdit()
PBAutoCompleteFunctions.PBAutoCompleteFunctions\SetListBox=@SetListBox()
PBAutoCompleteFunctions.PBAutoCompleteFunctions\SetSel=@SetSel()
OPBAutoComplete.OPBAutoComplete\VTable=PBAutoCompleteFunctions
;-----------------------------------------------------------------
;CODE
;GADGET IDs
#String0=0
#ListView1=1
;WINDOW ID
#Window1=0
;WINDOW
OpenWindow(#Window1,150,70,550,350,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_TitleBar,"Auto Complete")
CreateGadgetList(WindowID(#Window1))
StringGadget(#String0,10,8,310,24,"")
ListViewGadget(#ListView1,11,49,308,262)
AddGadgetItem(#ListView1,-1,"Red")
AddGadgetItem(#ListView1,-1,"Green")
AddGadgetItem(#ListView1,-1,"Blue")
AddGadgetItem(#ListView1,-1,"Yellow")
AddGadgetItem(#ListView1,-1,"Black")
AddGadgetItem(#ListView1,-1,"White")
AddGadgetItem(#ListView1,-1,"Pink")
AddGadgetItem(#ListView1,-1,"Purple")
AddGadgetItem(#ListView1,-1,"Gray")
AddGadgetItem(#ListView1,-1,"Orange")
ActivateGadget(#String0)
;create object
OAutoCP.IPBAutoComplete=@OPBAutoComplete
;init object
OAutoCP\SetEdit(#String0)
OAutoCP\SetListBox(#ListView1)
OAutoCP\SetSel(-1) ;no items selected
;EVENT LOOP
Repeat
EvID=WaitWindowEvent()
Select EvID
Case #PB_Event_Gadget
Select EventGadgetID()
Case #String0
Select EventType()
Case #PB_EventType_Change
str$=GetGadgetText(#String0)
OAutoCP\FindStr(str$)
EndSelect
Case #ListView1 ;important to update selected index in object
isel=GetGadgetState(#ListView1)
;update selected index
OAutoCP\SetSel(isel)
;set selected in edit
str$=GetGadgetItemText(#ListView1,isel,-1)
SetGadgetText(#String0,str$)
EndSelect
EndSelect
Until EvID=#PB_EventCloseWindow
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Génial, je vais essayer de mélanger avec une ComboGagdetText quand j'aurais réussi à le faire dans une EditorGadget !
Merci encore ! C'est génial !
Merci encore ! C'est génial !
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Mais quelqu'un aurait il des informations sur l'objet : OAutoCP.IPBAutoComplete=@OPBAutoComplete ?
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net