Suchfunktion in ListBox Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Wick3d
Posts: 14
Joined: 04 Apr 2014, 03:24

Suchfunktion in ListBox

12 Jan 2017, 07:10

Hallo Leute,

ich habe mir etwas vorgenommen (hoffentlich nicht ZU groß für mich :D)
Hierbei fange ich für mich mit dem schwierigsten an: Die Suchfunktion

Ich habe ein GUI, welches ein Edit-Feld und eine Listbox hat. In der Box werden später locker über 40 Wörter sein.

Was ich möchte:
Sobald man in das Edit-Feld eingibt (z.B. "wel"), möchte ich das die Listbox auf die Wörter reduziert wird, wo "wel" drin vorkommt egal an welcher stelle dies vorkommt.
Die anklickbare Auswahl in der Box soll sich also mit jedem weiteren Buchstaben verringen.

Hier mein bisheriges Test-GUI:
(Ich weis ich ersetze hier nur, sobald ich etwas eingebe, den Listeninhalt, gegen ein "Hallo")

Code: Select all

#SingleInstance, Force
#Persistent
; ---------------------------------------------

;FileRead, Content, C:\Users\Administrator\Documents\Apps\FunctionList.txt
;StringReplace, List, Content, `n,|, All

List=Halllo|Hallihallo|Furz|Blaa

Gui, Add, Edit, vString gSearch w600 x10,
Gui, Add, ListBox, vListBoxVar h400 w600 x10, %List%
Gui, Show, AutoSize
return

Search:
Gui, Submit, nohide

GuiControl, , ListBoxVar, |Hallo

return
Ich denke ihr könnt mir bestimmt helfen =)
Ich brauche einfach einen "Schubs" in die richtige Richtung.

Gruß
Alex
garry
Posts: 1505
Joined: 22 Dec 2013, 12:50

Re: Suchfunktion in ListBox

12 Jan 2017, 10:07

ein Versuch

Code: Select all

List=Halllo|Hallihallo|Furz|Blaa
Gui, Add, Edit, vSrch gSearch w600 x10,
Gui, Add, ListBox, vListBoxVar h400 w600 x10, %List%
Gui, Show, AutoSize
return
Guiclose:
exitapp

Search:
Gui,1: Submit, Nohide
GuiControl,1:,ListBoxVar,|
Loop,parse,list,`|
   {
   x:=a_loopfield
   if x=
      continue
   IfInString,x, %srch%
     GuiControl,1:,ListBoxVar,%x%
   }
return
Wick3d
Posts: 14
Joined: 04 Apr 2014, 03:24

Re: Suchfunktion in ListBox

12 Jan 2017, 11:58

Genau so :D
Klasse, darauf kann ich weiter aufbauen.

Kannst du mir vielleicht eine kleine Erläuterung dazu geben?
Ich möchte es nicht nur benutzen sondern verstehen.
Gerade dieses "a_loopfile" ist neu für mich und mit der Beschreibung in der Onlinehilfe kann ich leider nicht viel anfangen.

Also dieser Teil wäre interessant

Code: Select all

GuiControl,1:,ListBoxVar,|
Loop,parse,list,`|
   {
   x:=a_loopfield
   if x=
      continue
   IfInString,x, %srch%
     GuiControl,1:,ListBoxVar,%x%
   }
Danke
garry
Posts: 1505
Joined: 22 Dec 2013, 12:50

Re: Suchfunktion in ListBox  Topic is solved

12 Jan 2017, 15:17

Code: Select all

;---
List=Halllo|Hallihallo|Furz|Blaa
;...
GuiControl,1:,ListBoxVar,|             ;- lösche zuerst listbox
Loop,parse,list,`|                     ;- zeigt einzeln den Text an von List (oben) , zuerst Halllo , Separator ist | 
   {
   x:=a_loopfield                      ;- dies ist zuerst Halllo ( der erste Text vor dem Separator | )
   if x=                               ;- wenn leer denn sucht loop weiter
      continue
   msgbox, 262208, ,%x%,2              ; für Test  msgbox für 2 Sekunden
   IfInString,x, %srch%
     GuiControl,1:,ListBoxVar,%x%     ;- zeige in Listbox das an welches mit search übereinstimmt
   }
;...
noch 2 Beispiele :

Code: Select all

;- Fileappend Beispiel
FileSelectFile, y, 3,%a_desktop%, Choose text file:,Supported Files (*.txt;*.csv)
If y =
  ExitApp
fileread,aac,%y%                ;- read txt-file to memory aac
Loop,parse,aac,`n,`r            ;- parse each line by `n ascii-10 (EndOfLine ascii 13,10 )
    e .= A_LoopField . "|`r`n"  ;- collect to variable e ( LineEnd new is = | ( example ) )
f2=%a_scriptdir%\NEW.txt
ifnotexist,%f2%
  fileappend,%e%,%f2%           ;- write once to %f2%
e=
aac=
return

/*
Loop, read, %A_ScriptDir%\test.txt
{
IfInString, A_LoopReadLine, String1
 {
 ;... do something
*/
hier noch ein Beispiel mit Listbox
https://autohotkey.com/boards/viewtopic ... it=listbox
Wick3d
Posts: 14
Joined: 04 Apr 2014, 03:24

Re: Suchfunktion in ListBox

14 Jan 2017, 04:18

Danke für die Erklären.
Nun verstehe ich besser was passiert.
ichdotcom
Posts: 7
Joined: 14 Nov 2017, 04:42

Re: Suchfunktion in ListBox

17 Oct 2018, 02:52

Hallo Ihr lieben Leutz, ich ersuche euch um Hilfe.

Ich bin durch meine Arbeit an ein Suchfunktionsskript gestoßen und wollte es für meine Zwecke verändern.

Das eigentliche Problem ist das mir der Inhalt der Datei nicht auf Gui :7 angezeigt wird sondern immer nur auf der 1.

Ich schätze mal ich bin blind oder es ist nicht möglich.
Könnt ihr mir bitte helfen?!

Vielen Dank im Voraus.

Code: Select all

#Singleinstance force

F1= Mitarbeiter.csv ;Welche Datei wird abgerufen?
Gui, 7:Font,  Arial ;Schriftart ggf. anpassen?

T1=60       ;column1 width
T2=60    	;column2 width
T3=60       ;column3 width
T4=75       ;column4 width
T5=150      ;column5 width
T6=100      ;column6 width

T1A:=T1
T2A:=T1+T2
T3A:=T1+T2+T3 
T4A:=T1+T2+T3+T4 
T5A:=T1+T2+T3+T4+T5  
T6A:=T1+T2+T3+T4+T5+T6 ;listview width

T5B:=T6A+40         ;guishow width


Gui, 7:Font, S12 Bold, 
Gui, 7:Add, Text,, Vorgesetzter oder Ansprechpartner direkt suchen
Gui, 7:Font, , 
Gui, 7:Add, Text,, Ist der gesuchte Vorgesetzte gefunden, bitte auf die E-Mailadresse doppelt Klicken um ihn anzuschreiben!
Gui, 7:Font, Bold, 
Gui, 7:Font, S8 Bold, 
Gui, 7:Font, , 
Gui, 7:Add, ListView,grid r1  w730 0x200000 -hscroll -vscroll altsubmit vMyListView gMyListView, Anrede|Vorname|Nachname|Position|E-Mail|Telefonnummer| ;Die Variable R steht für die Rows-Anzahl (Default 12 für PG)
Gui, 7:Add ,  Text,   w180 h20, Suchfunktion (Name eingeben):
Gui, 7:Color,, yellow
Gui, 7:Add ,  Edit,   w150 h20 vURLX gSEARCH1 border, ;Suchfunktion
Gui, 7:Add,Button,default x0  y0 w0   h0  gSEARCH1 , ;Suchfunktion
gui, 7:show


LV_ModifyCol(1,T1)
LV_ModifyCol(2,T2)
LV_ModifyCol(3,T3)
LV_ModifyCol(4,T4)
LV_ModifyCol(5,T5)
LV_ModifyCol(6,T6)


Gui, 7:Font, S8 cwhite, Arial
Gui, 7:Add, Edit, w%T6A% h0 ReadOnly vC,



gosub,LB1

LB1:
Gui, default
Gui,7:Listview,Mylistview
LV_Delete()
loop,read, %F1%,

{
stringsplit,BX,A_LoopReadLine,`;,
LV_Add("",BX1,BX2,BX3,BX4,BX5,BX6)
}


return

MyListView:
GuiControlGet, MyListView
if A_GuiEvent = Normal
{
LV_GetText(C1,A_EventInfo,1)
LV_GetText(C2,A_EventInfo,2)
GuiControl,7: ,C,%C1% %C2%
}



;Doppelklick Möglich!
if A_GuiEvent = DoubleClick
{
MouseGetPos,x,y
 {

if x<%T1A%
return

if x<%T2A%
return

if x<%T3A%
return

if x<%T4A%
return


;E-Mail Adresse verschicken
if x<%T5A%
  {
DATES=%A_DD%-%A_MM%-%A_YYYY%
LV_GetText(C5,A_EventInfo,5)
stringsplit,CX,C5,`@,
run,mailto:%C5%?
return
  }

if x<%T6A%
  {
DATES=%A_DD%-%A_MM%-%A_YYYY%
LV_GetText(C6,A_EventInfo,6)
run,tel:%C6%
return
  }
 }
}
return

;---- Liest die Datei aus ---------------
SEARCH1:
Gui,7:submit,nohide
if URLX=
   gosub,LB1
   RF:=LV_GetNext("F")
   RF:=1
   Loop % LV_GetCount()
      {
      LV_GetText(C3,RF,3)
      CX=%C1% %C2% %C3%
       ifinstring,CX,%URLX%
        {
        RF:=(RF+1)
        continue
         }
      LV_Delete(RF)
      }
 return


;--- Liest die Zeile ----
SEARCH2:
Gui,7:submit,nohide
LV_Delete()
loop,read, %F1%
  {
  LR=%A_loopreadline%
  stringsplit,C,LR,`;,
  CX=%C1% %C2% %C3%
  ifinstring,CX,%URLX%
       {
       LV_Add("",C1,C2,C3)
       }
  }
return
User avatar
jNizM
Posts: 2334
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: Suchfunktion in ListBox

17 Oct 2018, 02:57

Moin,

wenn du mit mehreren Gui's arbeitest, darfst du nicht vergessen den Default (incl Gui-Name oder Gui-Index) bei Aufgaben an den Anfang zu setzten:

Gui, 1:Default oder Gui, 7:Default

Ref: https://autohotkey.com/docs/commands/Gui.htm#Default
[AHK] 1.1.30.00 x64 Unicode | [WIN] 10 Pro (Version 1803) x64 | [GitHub] Profile
Donations are appreciated if I could help you
ichdotcom
Posts: 7
Joined: 14 Nov 2017, 04:42

Re: Suchfunktion in ListBox

17 Oct 2018, 03:48

Das habe ich nun geändet, leider wird mir der Inhalt der Datei immer noch nicht angezeigt.
Wenn ich nun oben die ganzen Steuerelemente auf die erste Gui, oder kopiere und dann das kopierte auf die erste Gui setze,
so dass mir 2 Guis angezeigt werden, dann wird mir die Datei nur in der ersten Gui angezeigt und nicht in der 7ten..

Code: Select all

#Singleinstance force

F1= Mitarbeiter.csv ;Welche Datei wird abgerufen?
Gui, 7:Font,  Arial ;Schriftart ggf. anpassen?

T1=60       ;column1 width
T2=60    	;column2 width
T3=60       ;column3 width
T4=75       ;column4 width
T5=150      ;column5 width
T6=100      ;column6 width

T1A:=T1
T2A:=T1+T2
T3A:=T1+T2+T3 
T4A:=T1+T2+T3+T4 
T5A:=T1+T2+T3+T4+T5  
T6A:=T1+T2+T3+T4+T5+T6 ;listview width

T5B:=T6A+40         ;guishow width


Gui, 7:Font, S12 Bold, 
Gui, 7:Add, Text,, Vorgesetzter oder Ansprechpartner direkt suchen
Gui, 7:Font, , 
Gui, 7:Add, Text,, Ist der gesuchte Vorgesetzte gefunden, bitte auf die E-Mailadresse doppelt Klicken um ihn anzuschreiben!
Gui, 7:Font, Bold, 
Gui, 7:Font, S8 Bold, 
Gui, 7:Font, , 
Gui, 7:Add, ListView,grid r1  w730 0x200000 -hscroll -vscroll altsubmit vMyListView gMyListView, Anrede|Vorname|Nachname|Position|E-Mail|Telefonnummer| ;Die Variable R steht für die Rows-Anzahl (Default 12 für PG)
Gui, 7:Add ,  Text,   w180 h20, Suchfunktion (Name eingeben):
Gui, 7:Color,, yellow
Gui, 7:Add ,  Edit,   w150 h20 vURLX gSEARCH1 border, ;Suchfunktion
Gui, 7:Add,Button,default x0  y0 w0   h0  gSEARCH1 , ;Suchfunktion
gui, 7:show

Gui, Font, S12 Bold, 
Gui, Add, Text,, Vorgesetzter oder Ansprechpartner direkt suchen
Gui, Font, , 
Gui, Add, Text,, Ist der gesuchte Vorgesetzte gefunden, bitte auf die E-Mailadresse doppelt Klicken um ihn anzuschreiben!
Gui, Font, Bold, 
Gui, Font, S8 Bold, 
Gui, Font, , 
Gui, Add, ListView,grid r1  w730 0x200000 -hscroll -vscroll altsubmit vMyListView gMyListView, Anrede|Vorname|Nachname|Position|E-Mail|Telefonnummer| ;Die Variable R steht für die Rows-Anzahl (Default 12 für PG)
Gui, Add ,  Text,   w180 h20, Suchfunktion (Name eingeben):
Gui, Color,, yellow
Gui, Add ,  Edit,   w150 h20 vURLX gSEARCH1 border, ;Suchfunktion
Gui, Add,Button,default x0  y0 w0   h0  gSEARCH1 , ;Suchfunktion
gui, show


LV_ModifyCol(1,T1)
LV_ModifyCol(2,T2)
LV_ModifyCol(3,T3)
LV_ModifyCol(4,T4)
LV_ModifyCol(5,T5)
LV_ModifyCol(6,T6)


Gui, 7:Font, S8 cwhite, Arial
Gui, 7:Add, Edit, w%T6A% h0 ReadOnly vC,



gosub,LB1

LB1:
Gui, 1:default
Gui,7:Listview,Mylistview
LV_Delete()
loop,read, %F1%,

{
stringsplit,BX,A_LoopReadLine,`;,
LV_Add("",BX1,BX2,BX3,BX4,BX5,BX6)
}


return

MyListView:
GuiControlGet, MyListView
if A_GuiEvent = Normal
{
LV_GetText(C1,A_EventInfo,1)
LV_GetText(C2,A_EventInfo,2)
GuiControl,7: ,C,%C1% %C2%
}



;Doppelklick Möglich!
if A_GuiEvent = DoubleClick
{
MouseGetPos,x,y
 {

if x<%T1A%
return

if x<%T2A%
return

if x<%T3A%
return

if x<%T4A%
return


;E-Mail Adresse verschicken
if x<%T5A%
  {
DATES=%A_DD%-%A_MM%-%A_YYYY%
LV_GetText(C5,A_EventInfo,5)
stringsplit,CX,C5,`@,
run,mailto:%C5%?
return
  }

if x<%T6A%
  {
DATES=%A_DD%-%A_MM%-%A_YYYY%
LV_GetText(C6,A_EventInfo,6)
run,tel:%C6%
return
  }
 }
}
return

;---- Liest die Datei aus ---------------
SEARCH1:
Gui,7:submit,nohide
if URLX=
   gosub,LB1
   RF:=LV_GetNext("F")
   RF:=1
   Loop % LV_GetCount()
      {
      LV_GetText(C3,RF,3)
      CX=%C1% %C2% %C3%
       ifinstring,CX,%URLX%
        {
        RF:=(RF+1)
        continue
         }
      LV_Delete(RF)
      }
 return


;--- Liest die Zeile ----
SEARCH2:
Gui,7:submit,nohide
LV_Delete()
loop,read, %F1%
  {
  LR=%A_loopreadline%
  stringsplit,C,LR,`;,
  CX=%C1% %C2% %C3%
  ifinstring,CX,%URLX%
       {
       LV_Add("",C1,C2,C3)
       }
  }
return

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 6 guests