Aktuelle Zeit: 30.10.2020 19:23

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Autocomplete bei Comboxgadgets
BeitragVerfasst: 11.09.2006 17:06 
Offline

Registriert: 15.09.2004 23:26
Hallo! Sorry, dass ich meine Anfrage noch einmal poste, aber es scheint, als wäre sie im Originalthread untergegangen.

Ich habe folgenden Code von Karl für PB4 angepasst:
Code:
#comboTest = 0



Procedure cmbAutoComplete(WindowID, Message, wParam, lParam)
 
  Protected comboWert.s, comboIndex.l, comboLang.l, comboStart.l, parameter.l
 
  result = #PB_ProcessPureBasicEvents
 
 
  Select Message
    Case #WM_COMMAND
      Select lParam
        Case GadgetID(0)
          Select (wParam >> 16 & $FFFF)
            Case #CBN_EDITUPDATE
              comboWert = GetGadgetText(#comboTest)
              comboIndex = SendMessage_(lParam, #CB_FINDSTRING, -1, @comboWert)
              comboStart = Len(comboWert)
              ;Länge des eingegebenen Textes
              If comboIndex >= 0
                SendMessage_(lParam, #CB_SETCURSEL, comboIndex, 0)
                comboLang = Len(GetGadgetText(#comboTest))
                ;Länge des gefundenen Textes
                parameter = (comboLang << 16 & $FFFFFFFF) + comboStart
                SendMessage_(lParam, #CB_SETEDITSEL, 0, parameter)
              EndIf
          EndSelect
      EndSelect
  EndSelect

  ProcedureReturn result
 
EndProcedure

Procedure InitWindow()
 
  ;Window zeichnen und ComboBox aus einer externen Datei füllen (jede Zeile = ein Eintrag)
 
  If OpenWindow(0, 0, 0, 400, 200, #PB_Window_SystemMenu, "Test")
    If CreateGadgetList(WindowID(0))
      ComboBoxGadget(#comboTest, 10, 10, 180, 150, #PB_ComboBox_Editable)
    EndIf
    ReadFile(0, "cmb.txt")
    While ~Eof(0)
      AddGadgetItem(0, -1, ReadString())
    Wend
    CloseFile(0)
  EndIf

EndProcedure


InitWindow()
SetWindowCallback(@cmbAutoComplete())

Repeat
 
Until WaitWindowEvent() = #PB_Event_CloseWindow

End

Bei beiden Versionen (für 3.94 und 4.0) kann ich, solange das Gadget erkannt hat, dass man einen Eintrag aus der Liste eingeben möchte und diesen Eintrag markiert in das Gadget schreibt, die Delete- und Backspace-Taste nicht mehr verwenden. Das funktioniert erst wieder, wenn man etwas ins Gadget schreibt, das nicht in der Liste steht. Kann man das noch korrigieren?

Wie kann ich den Code so umstricken, dass ich quasi eine Prozedur habe "SetComboBoxGadgetAutoComplete(Gadget)" habe? Ich kenne mich mit den API-Sachen nicht so aus. Der obige Code ist ja nur ein bestimmtes Gadget gedacht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 11.09.2006 20:00 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
Das Problemkommt durch das Markieren. Durch die Loeschtasten loescht
nur den markierten Text. Dies wiederum loest CBN_EDITUPDATE aus.
Das ganze Spiel geht nun von vorne los ...

_________________
Suche


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 12.10.2006 17:28 
Offline
Benutzeravatar

Registriert: 21.07.2005 13:57
Wohnort: zu Hause
Ich hab das heute erst gesehen, aber mit einem kleinen Kniff kann man das Problem beseitigen:


Code:
...
If GetAsyncKeyState_(#vk_back) Or GetAsyncKeyState_(#vk_delete)
  ;tu nix
Else
  comboWert = GetGadgetText(#comboTest)
  comboIndex = SendMessage_(lParam, #CB_FINDSTRING, -1, @comboWert)
  comboStart = Len(comboWert)
  ;Länge des eingegebenen Textes
  If comboIndex >= 0
    SendMessage_(lParam, #CB_SETCURSEL, comboIndex, 0)
    comboLang = Len(GetGadgetText(#comboTest))
    ;Länge des gefundenen Textes
    parameter = (comboLang << 16 & $FFFFFFFF) + comboStart
    SendMessage_(lParam, #CB_SETEDITSEL, 0, parameter)
  EndIf
EndIf
...

_________________
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Autocomplete bei Comboxgadgets
BeitragVerfasst: 30.09.2020 12:04 
Offline
Benutzeravatar

Registriert: 19.02.2010 20:19
Wohnort: Darmstadt
Hallo,

ich habe 2 comboxgadets - wie kann ich Autocomplete verwenden?
Kann ich 2 SetWindowCallback() aufrufen?

Danke für eine Hilfe

Gruß MarcelX

_________________
Win-10, PB 5.31 (Windows - x86)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Autocomplete bei Comboxgadgets
BeitragVerfasst: 30.09.2020 12:13 
Offline
Benutzeravatar

Registriert: 19.02.2010 20:19
Wohnort: Darmstadt
Gelöst - mit Block für GadgetID(0) auf GadgetID(1) kopiert in der Procedure cmbAutoComplete
Code:
        Case GadgetID(0)
...
        Case GadgetID(1)
...

_________________
Win-10, PB 5.31 (Windows - x86)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 25 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye