purebasic.info

PureBasic forum
Текущее время: Чт июл 19, 2018 12:52 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: поиск в ListIconGadget
СообщениеДобавлено: Ср май 15, 2013 2:06 pm 
Не в сети
профессор

Зарегистрирован: Вт мар 24, 2009 11:54 am
Сообщений: 357
Благодарил (а): 14 раз.
Поблагодарили: 18 раз.
Пункты репутации: 19
Ниже приведенный код (к сожалению) ищет в 1 колонке по средствам Win API , а в остальных через цикл (for next).

Как можно через АПИ сделать поиск в определенной колонке?

код из код архива
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#Window_0 = 0  
 
#Gadget_0 = 0  
#Gadget_1 = 1  
#Gadget_2 = 2  
 
Procedure FindStringLIG(searchString.s)  
 
  SendMessage_(GadgetID(#Gadget_0), #LVM_FIRST + $54, $8, 1)  
 
  fItem.LV_FINDINFO  
  fItem\flags   = #LVFI_STRING  
  fItem\psz     = @searchString  
 
  itemNumber = SendMessage_(GadgetID(#Gadget_0), #LVM_FINDITEM, -1, fItem) ; find Item  
   
  If itemNumber > -1  
    Goto SCROLL_AND_SELECT  
  Else  
    For i = 0 To CountGadgetItems(#Gadget_0) - 1  
      If searchString = GetGadgetItemText(#Gadget_0, i, 1)  
        itemNumber = i  
        Goto SCROLL_AND_SELECT  
      EndIf  
    Next  
  EndIf  
   
  Goto PROC_ERROR  
 
  SCROLL_AND_SELECT:
    pItem.POINT  
 
    SendMessage_(GadgetID(#Gadget_0), #LVM_GETITEMPOSITION, itemNumber , pItem) ; get item position  
    SendMessage_(GadgetID(#Gadget_0), #LVM_SCROLL, pItem\x, pItem\y - 150)     ; scroll to item position  
 
    sItem.LV_ITEM  
    sItem\mask      = #LVIF_STATE  
    sItem\state     = #LVIS_SELECTED  
    sItem\stateMask = #LVIS_SELECTED  
 
    SendMessage_(GadgetID(#Gadget_0), #LVM_SETITEMSTATE, itemNumber , sItem)    ; set item state as selected      
    ;SetActiveGadget(#Gadget_0)
    Goto PROC_END  
   
  PROC_ERROR:
    MessageRequester("Fehler", "Eintrag '" + searchString + "' nicht gefunden :(", #MB_ICONEXCLAMATION | #MB_OK)  
 
  PROC_END:
EndProcedure  
 
Procedure Open_Window_0()  
  If OpenWindow(#Window_0, 283, 124, 532, 314, "Suche in ListViewGadget",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )  
    If CreateGadgetList(WindowID(#Window_0))  
      ListIconGadget(#Gadget_0, 0, 0, 530, 270, "Spalte 1", 100, #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_FullRowSelect)  
        AddGadgetColumn(#Gadget_0, 1, "Spalte 2", 100)  
 
        For i = 0 To 200  
          AddGadgetItem(#Gadget_0, -1, "foo " + Str(i) + Chr(10) + "bar " + Str(i))  
        Next  
         
      ButtonGadget(#Gadget_1, 300, 280, 150, 20, "Suche")  
      StringGadget(#Gadget_2, 100, 280, 150, 20, "")  
    EndIf  
  EndIf  
EndProcedure  
 
Open_Window_0()  
 
Repeat  
  event = WaitWindowEvent()  
 
  If event = #PB_Event_Gadget  
    Select EventGadget()  
      Case #Gadget_1  
        FindStringLIG(GetGadgetText(#Gadget_2))  
 
    EndSelect  
  EndIf  
   
Until event = #PB_Event_CloseWindow  
End



Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB