purebasic.info

PureBasic forum
Текущее время: Ср окт 17, 2018 10:41 am

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: убрать скролл у ListViewGadget no scroll bar
СообщениеДобавлено: Пт июл 20, 2018 8:21 am 
Не в сети
док

Зарегистрирован: Сб окт 31, 2009 7:44 am
Сообщений: 168
Благодарил (а): 92 раз.
Поблагодарили: 5 раз.
Пункты репутации: 0
собственно вопрос. не работает команда
Код:
1
SetWindowLongPtr_(GadgetID(#ListViewGadget),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#ListViewGadget), #GWL_STYLE) !  #WS_VSCROLL)


стиль #GWL_STYLE, значение без скрола 5000000. В отладчике передаётся это значение.
Похоже, что-то не так делаю, потому что с
Код:
1
2
3
ListView_handl= CreateWindowEx_(#WS_EX_CLIENTEDGE,"listbox",#Null, #WS_CHILD+#WS_VISIBLE+#WS_GROUP+#WS_TABSTOP+#LBS_NOTIFY+#LBS_HASSTRINGS+#LBS_NOINTEGRALHEIGHT+#WS_VSCROLL,0,0,250,120,WindowID(#Window),0,GetModuleHandle_(0),#Null)
SetWindowLongPtr_(GadgetID(#ListViewGadget),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#ListViewGadget), #GWL_STYLE) !  #WS_VSCROLL)
 


тоже не работает (при добавлении элементов более высоты гаджета).
Если же создавать "listbox" без флага #WS_VSCROLL, то скрола не появляется.

код для тестирования:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Enumeration
  #Window2
  #ListViewGadget  
EndEnumeration
; nst2.i=(#WS_VISIBLE|#WS_CHILD)
;  MessageRequester("",Hex(nst))
;  nst.i=nst | #WS_VSCROLL
  OpenWindow(#Window2,0,0,250,120,"Window",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
;  ListView_handl= CreateWindowEx_(#WS_EX_CLIENTEDGE,"listbox",#Null, #WS_CHILD+#WS_VISIBLE+#WS_GROUP+#WS_TABSTOP+#LBS_NOTIFY+#LBS_HASSTRINGS+#LBS_NOINTEGRALHEIGHT+#WS_VSCROLL,0,0,250,120,WindowID(#Window2),0,GetModuleHandle_(0),#Null)
   ListViewGadget(#ListViewGadget, 0, 0, 250, 120)
   SetWindowLongPtr_(GadgetID(#ListViewGadget),#GWL_STYLE,GetWindowLongPtr_(GadgetID(#ListViewGadget), #GWL_STYLE) !  #WS_VSCROLL)
 
    For a = 0 To 12
;       SendMessage_ (ListView_handl, #LB_ADDSTRING,0, "Item " + Str(a) + " of the Listview")
 AddGadgetItem(#ListViewGadget,a,"Item " + Str(a) + " of the Listview")
    Next
 
    Repeat
  Event = WaitWindowEvent()
  EventType = EventType()
Until  Event=#PB_Event_CloseWindow



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: убрать скролл у ListViewGadget no scroll bar
СообщениеДобавлено: Пт июл 20, 2018 12:08 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 219
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Пункты репутации: 0
Среди стандартных флагов нету,и в дополнительных тоже нету.
бросаю все флаги которые вычислил, моэжет и криво писал но разберешся. числа в хексе.
flag=мои наблюдения
4=список всегда пуст
8=многострочное выделение(триггерный эффект)по одной строке
$10=выделение есть но список невидим
$200=выделение не на всю строку а только буквы
точнее список в две колонки, но криво обработывает
$800=выделение многострочное и построчное(частенько нада)
++++$1000=прокрутка (нижняя неактивная, как сделать активной ненашел)
$4000=выделение прямоугольником пунктиром(синего нету)
$40000=$400000 рамка
$800000=рамка с черной каймой
$1000000=игнорирует размеры и вписывается во все окно
$8000000=устройство неактивно, текст отображается
$20000000=устройство неотображается
:-)$80000000=устройство отделилось от окна и стоит на рабочем столе
кажется прилипло к рабочему столу, потому, что исходные координаты похожи.

а чтобы изменить слить более расширено читай на странице, у меня была похожая проблема, там найдеш всё viewtopic.php?f=7&t=4871.

к стати тем методом который ты пробуеш далеко не все гаджеты поддаются рихтовке.

Есть еще один способ кинуть в контейнет, но так чтобы скрол перекрывался контейнером.
Еще ты забыл прописать свои константы, и тебе что без основного окна нужно, ну т. е. буз кнопки закрыть, или ты просто проверяеш что АПИшка работает.
Код:
1
2
3
4
5
6
7
8
9
  If OpenWindow(0, 0, 0, 320, 150, "ContainerGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ContainerGadget(0, 8, 8, 220, 133, #PB_Container_Raised)
      ListViewGadget(1, 0, 0, 225, 120)
      For a = 0 To 12
;       SendMessage_ (ListView_handl, #LB_ADDSTRING,0, "Item " + Str(a) + " of the Listview")
 AddGadgetItem(1,a,"Item " + Str(a) + " of the Listview")
    Next
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf


_________________
искатель истины


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: убрать скролл у ListViewGadget no scroll bar
СообщениеДобавлено: Пт июл 20, 2018 1:41 pm 
Не в сети
док

Зарегистрирован: Сб окт 31, 2009 7:44 am
Сообщений: 168
Благодарил (а): 92 раз.
Поблагодарили: 5 раз.
Пункты репутации: 0
balex1978
свойсва "listbox" описаны, не надо их методом тыка изучать. Скролл-бар - это свойство, его можно отключить или сразу - при создании (в примере раскомментировать строку) или после создания с помощью утилит типа spy. Свойство это #WS_VSCROLL, численные значения тоже известны.. Дело за технической реализацией:)
п.с. ещё один вопрос: listbox (он же ListViewGadget) имеют свойсво #LBS_SORT - автоматическая сортировка. Зачем пишут простыни кода, вместо включения этого флага? По умолчанию он отключен.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: убрать скролл у ListViewGadget no scroll bar
СообщениеДобавлено: Пт июл 20, 2018 5:40 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 219
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Пункты репутации: 0
тебе видней, я просто дал все расширение вмето тех несчастных двух пуриковских: #PB_ListView_Multiselect, #PB_ListView_ClickSelect. И не все то что в АПИ описано будет с пурика во флагах работать, Федя иногда фильтрует :) , либо чегото свое ставит :( .

Я тоже когдато с этим долбился и всем форумом нашли что можно менять то, что как говорит оф-разработчик устанавливается при создании, манипулируй как хоч. Но тебе видней, а ссыль дал, а тебе только прочитать и аналогичное сделать, я для редактора ричэдита делал онже EditorGadget.
Если нежалко код выложи который скрывает скрол...

А помоему у него в свойствах нет скрытия, можно только при создании через CreateWindow or CreateWindowEx function, use the LISTBOX class, я думаю пурик намерено ставит флажек показываать скрол темболее в процесе его невозможно потом показать. Проще использавать тот код что выше, прикрывая гаджетом ContainerGadget().

_________________
искатель истины


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: убрать скролл у ListViewGadget no scroll bar
СообщениеДобавлено: Пт июл 20, 2018 8:41 pm 
Не в сети
док

Зарегистрирован: Сб окт 31, 2009 7:44 am
Сообщений: 168
Благодарил (а): 92 раз.
Поблагодарили: 5 раз.
Пункты репутации: 0
всем спасибо. Решение найдено:
ShowScrollBar_( GadgetID(#ListViewGadget), #SB_VERT, 0)
вызывать надо после заполнения списка.
п.с. подозреваю, этот стиль меняется только через отсылку этого или ещё какого-то хитрого сообщения, что и делают программы типа Spy.
п.с.2. написал аналогичные функции на fasm и EasyCode - через SetWindowLongPtr стиль не меняется.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: убрать скролл у ListViewGadget no scroll bar
СообщениеДобавлено: Сб июл 21, 2018 5:44 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 684
Благодарил (а): 75 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
bizdon писал(а):
всем спасибо. Решение найдено:
ShowScrollBar_( GadgetID(#ListViewGadget), #SB_VERT, 0)

не спеши радоваться, где то оно у меня отказалось работать, было дело, как выкрутился не помню и какой гаджет был тоже не помню


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: убрать скролл у ListViewGadget no scroll bar
СообщениеДобавлено: Сб июл 21, 2018 11:51 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 219
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.
Пункты репутации: 0
...а танци с бубном у костра продолжаются. Но за подсказку спасибо. из какогото справочника-
ShowScrollBar
Описание:
function ShowScrollBar(Wnd: HWnd; Bar: Word; Show: Bool);
Отобpажает или пpячет, в зависимости от значения Show, полосу пpокpутки.
Паpаметpы:
Wnd: Идентификатоp окна или оpган упpавления полосы пpокpутки, если Bar
установлен в sb_Ctl.
Bar: Одна из констант sb_Both, sb_Ctl, sb_Horz или sb_Vert. См. pаздел
"Константы полосы пpокpутки, sb_" в главе 1.
Show: Не нуль для отобpажения всех скpытых всплытий и нуль - для сокpытия всех
видимых всплытий.
функция находится в файле user32.dll

ну да, прокрутил в конец и опять она сдесь, каждый раз ее ловить, а если текста моговасто будет и прога тормозить через загрузку ЦП этот глюк будить постоянно мелькать.
А если SetWindowLongPtr неменяется то наверно и ничего непроисходит. Пробуй изначально создать через CreateWindow, ну и собственно чем ненравится скрывать ContainerGadget, ктото у буржуев спер для того чтобы показать скрол побольше чем уже имеется, там и подгледел.
А мож воспользоваться EditorGadget там уж эту головоломку решили.

_________________
искатель истины


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

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 7


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

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