FreeBasic
Главная
Вход
Регистрация
Суббота, 21.12.2024, 17:34Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
ListViewGadget
WinmagДата: Воскресенье, 03.11.2019, 10:41 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 3
Репутация: 0
Статус: Offline
Привет, задача найти определенный текст в ListViewGadget и сделать данный item видимым, найти и выделить это не проблема в библиотеке windows9, но как прокрутить программно данный listview что определенный item стал видимым?

Добавлено (03.11.2019, 11:12)
---------------------------------------------
Нашел только вот этот вариант https://www.purebasic.fr/english/viewtopic.php?p=486835 на purebasic
но при написании данного листинга на freebasic, не происходит пролистывание

 
haavДата: Воскресенье, 03.11.2019, 15:14 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Как один из вариантов:


Код
#Include "window9.bi"

#Define constSizeIcon 32

sub SetTopIndexListview( iGadget as long , iItem as long ) 
   
   #Ifdef __FB_WIN32__
   SetFocus(GadgetID(iGadget))
   #Else
   gtk_widget_grab_focus(GadgetID(iGadget))
   #EndIf
   
   SetSelectListViewItem(1,iItem)
   
   #Ifdef __FB_WIN32__
   SendMessage(GadgetID(iGadget), LVM_SCROLL, 0, iItem*constSizeIcon)
   #Else
   dim as GtkWidget ptr listbox = GadgetId(iGadget)
   
   dim as long iCountItems = GetItemCountListView(iGadget)
   
   dim as any ptr pVertAdj
   
   dim as long iAdjValue , iUpper , iPageSize , hSingleLine , hRest , iNewPosition
   
   pVertAdj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(gtk_widget_get_parent(listbox)))
   
   iAdjValue = gtk_adjustment_get_value(pVertAdj)
   
   iUpper = gtk_adjustment_get_upper(pVertAdj)
   
   iPageSize = gtk_adjustment_get_page_size(pVertAdj)
   
   hSingleLine = iUpper/iCountItems
   
   iNewPosition = hSingleLine * iItem 
   
   gtk_adjustment_set_value (pVertAdj, iNewPosition)      
   #EndIf
   
End sub

CenterWindow(OpenWindow("",10,10,300,360))
UpdateInfoXserver()
ListViewGadget(1,10,10,150,300,,,,constSizeIcon)
AddListViewColumn(1, "1 Столбец",0,0,133)

For aa As Integer=0 To 15
   AddListViewItem(1,"item ?"+Str(aa),0,aa,0)
Next

#Ifdef __FB_WIN32__
ButtonGadget(2,190,10,100,60,"Установим 6 пункт первым видимым",BS_MULTILINE)
#Else
ButtonGadget(2,190,10,100,60,!"Установим 6\nпункт первым\nвидимым")
#EndIf

Do
   Var event=WaitEvent
   Select Case event
         
      Case EventClose
         End
      Case EventGadget
         If EventNumber=2 Then
            SetTopIndexListview(1,6)
         endif
   End Select
Loop


Не знаю , как этот код поведет себя при различных ситуациях (например при изменении шрифта). В общем тут уже сам тестируй и думай что к чему.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
  • Страница 1 из 1
  • 1
Поиск: