Думаю что в этом случае, рисунки нужно хранить отдельно от EXE, лучше в заархивированом виде.
Вопросы новичка
Сообщений 331 страница 360 из 1000
Поделиться33223.04.2010 20:14:32
лучше в заархивированом виде.
это как?
Поделиться33323.04.2010 20:31:19
Чтобы не забивать оперативную память рисунками, их целесообразно загружать по мере необходимости, а когда не нужны - выгружать. Рисунков то много!
Для уменьшения занимаемого дискового пространства, файлы желательно архивировать, т. е. поместить в один архив, но это не обязательно.
Можно использовать RAR архив (разархивирование с помощью unrar.dll), Zip архив (разархивирование с помощью библиотеки PureZIP) или функции среды из Packer.
Поделиться33423.04.2010 20:34:50
Давайте не будем о каждом примере говорить, а например возьмем dll, я так понимаю с ней легче работать. Я прочитал твою статью о dll и с чего мне можно начать всю эту работу с фотками если учесть, что пользователь из списка будет выбирать название, по которому в IMAGE уже будет загружаться фотка из dll. Как то так.
Поделиться33523.04.2010 20:45:02
Если ты хочешь упрятать ресурсы, то dll это плохое хранилище. Любой юзер, с помощью самого допотопного редактора ресурсов, достанет твои фото.
Поделиться33623.04.2010 20:47:36
мне не нцжно прятать, мне нужно сделать как можно компактней, практичней и легче
Поделиться33723.04.2010 20:51:40
Сейчас нет проблем у пользователей с объемом жестких дисков. Положи их в отдельную папку и не заморачивайся, меньше глюков будет.
Поделиться33823.04.2010 20:56:01
Спасибо, так и сделаю. + к этому раньше возникала ошибка, когда создаешь IMAGE и не помещаешь туда фото. Тогда при запуске проги вылетает ошибка. Можно ли как ниб этого избежать
Поделиться33923.04.2010 21:00:34
Везде в загрузках используй проверку:
if openfile(1,"")
endif
if loadimage(1,"")
endif
с оператором IF-ENDIF
Поделиться34023.04.2010 22:05:08
Можно ли с помощью команд раздела справки file возвратить список файлов, находящихся в папке?
Поделиться34123.04.2010 22:43:21
Требуемые функции находятся в разделе FileSystem
Directory$ = "C:\" ; Lists all entries in the Windows directory (without the contents of sub-directories) If ExamineDirectory(0, Directory$, "*.*") While NextDirectoryEntry(0) If DirectoryEntryType(0) = #PB_DirectoryEntry_File Type$ = " [File] " Else Type$ = " [Sub-Dir] " EndIf Debug DirectoryEntryName(0) + Type$ + "- Size in byte: " + Str(DirectoryEntrySize(0)) Wend FinishDirectory(0) EndIf
Поделиться34224.04.2010 16:38:28
Подскажите почему у меня не действует команда SetGadgetItemState(#Listview_5, 0, 1)? Верней не происходит выделение строчки. Вопрос такой: как с помощью этой команды выделить (сделать активной) первую строчку списка?
PS: Самое главное, что команда SetGadgetState(#Gadget, State) работает, но не правильно, так как она выделает вторую строчку списка, а мне нужно первую
Отредактировано daiomik (24.04.2010 17:27:41)
Поделиться34324.04.2010 17:40:03
Самое главное, что команда SetGadgetState(#Gadget, State) работает, но не правильно, так как она выделает вторую строчку списка, а мне нужно первую
Функция выделяет первую строчку!
If OpenWindow(0, 0, 0, 270, 140, "ListViewGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ListViewGadget(0, 10, 10, 250, 120) For a = 1 To 12 AddGadgetItem (0, -1, "Item " + Str(a) + " of the Listview") ; define listview content Next SetGadgetState(0, 0) ; set (beginning with 0) the tenth item as the active one Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf
Поделиться34424.04.2010 17:43:38
Ха, спасибо, просто до этого момента не так понимал действие команды SetGadgetState
Поделиться34524.04.2010 17:49:20
Directory$ = "C:\" ; Lists all entries in the Windows directory (without the contents of sub-directories)
If ExamineDirectory(0, Directory$, "*.*")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
Type$ = " [File] "
Else
Type$ = " [Sub-Dir] "
EndIf
Debug DirectoryEntryName(0) + Type$ + "- Size in byte: " + Str(DirectoryEntrySize(0))
Wend
FinishDirectory(0)
EndIf
А как на основе данного примера добиться того, что бы файлы искались не только в папке, но и в подпапках и тд. А то данным способом только происходит поиск в одной папке
Поделиться34624.04.2010 18:18:20
А как на основе данного примера добиться того, что бы файлы искались не только в папке, но и в подпапках и тд
Создать рекурсивную процедуру поиска.
Global v=0 Procedure x(Directory$) If Right(Directory$,1)<>"\":Directory$ + "\":EndIf z=ExamineDirectory(#PB_Any, Directory$, "*.*") v=v+1 If v>1000 ; Это чтобы не сканировать весь диск - долго очень End EndIf If z While NextDirectoryEntry(z) EntryName.s=DirectoryEntryName(z) If EntryName = "." Or EntryName = ".." Continue EndIf If DirectoryEntryType(z) = #PB_DirectoryEntry_Directory x(Directory$+EntryName) EndIf Debug Directory$+" "+DirectoryEntryName(z) Wend FinishDirectory(z) EndIf EndProcedure x("C:\")
Поделиться34724.04.2010 22:15:14
Можно ли в ComboBoxGadget создать что то типа сепарейта как в меню, что бы он разделял строки
Поделиться34824.04.2010 22:31:12
Можно ли в ComboBoxGadget создать что то типа сепарейта как в меню, что бы он разделял строки
Можно нарисовать линии.
посмотри справку по функции LINE() , или исходник судоку, там есть рисование линий.
Поделиться34924.04.2010 22:54:22
Можно так сделать
If OpenWindow(0, 0, 0, 270, 140, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ComboBoxGadget(1, 10, 40, 250, 21) For a = 1 To 5 If a=3 AddGadgetItem(1, -1,"---------------------------") EndIf AddGadgetItem(1, -1,"ComboBox item " + Str(a)) Next SetGadgetState(1, 0) Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf
Поделиться35024.04.2010 22:56:42
Можно так сделать
Вот что значит опыт!
Поделиться35124.04.2010 22:57:21
Оригинально, Петр, было бы вообще супер, если бы можно было бы заблокировать данную строчку, то есть сделать неактивной.
Поделиться35224.04.2010 23:30:44
то есть сделать неактивной
Можно, но скорей всего придёстя самому список прорисовывать. Тогда там можно нормальную линию нарисовать.
Но это сплошные API функции!
Поделиться35324.04.2010 23:46:47
ну тогда и этого хватит)
Поделиться35425.04.2010 11:21:37
Не могу разобраться как написать событие выбора записей комбо гаджет, то есть при выборе определенных записей должны происходить определенные действия.
Поделиться35525.04.2010 12:02:44
Вот простенький пример из КОДАРХИВА:
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=1990&highlight= ; Author: freedimension + GPI (extended event loop by Andre, updated for PB4.00 by blbltheworm) ; Date: 15. August 2003 ; OS: Windows ; Demo: No #CBG_DIRECTORY = 1 #txt_Directory = 2 hWndMain = OpenWindow(0, 100, 200, 400, 40, "ComboBoxDirectoryList", #PB_Window_SystemMenu) CreateGadgetList(hWndMain) TextGadget(#txt_Directory, 10,10,150,20,"") ComboBoxGadget(#CBG_DIRECTORY, 220, 10, 170, 200) DlgDirListComboBox_(hWndMain, "C:\", #CBG_DIRECTORY, #txt_Directory, #DDL_DIRECTORY | #DDL_EXCLUSIVE) Repeat event = WaitWindowEvent() If event = #PB_Event_Gadget If EventGadget()=#CBG_DIRECTORY SetGadgetText(#txt_Directory,GetGadgetText(#CBG_DIRECTORY)) EndIf EndIf Until event = #PB_Event_CloseWindow
Поделиться35625.04.2010 12:10:20
Ну я тоже самое делал и у меня ошибка почему то:
If event=#PB_Event_Gadget Select gadget Case #Combo_1 aktiv.s=GetGadgetState(#Combo_1) If aktiv="Мышечная система" ImageGadget(#Image_16, 15, 90, 172, 448,ImageID(6)) ElseIf aktiv="Костная система" ImageGadget(#Image_16, 15, 90, 172, 448,ImageID(7)) EndIf EndSelect EndIf
вот это подчеркивает. Я уже и формат менял и че только не делал: aktiv.s=GetGadgetState(#Combo_1)
Поделиться35725.04.2010 12:14:10
Зачем ты строковой переменной присваиваешь число?
Поделиться35825.04.2010 12:19:59
Если ты хочешь ориентироваться по тектовым записям, то смтри выше написанный код, а если по номеру, то вот он немного переписанный:
#CBG_DIRECTORY = 1 #txt_Directory = 2 hWndMain = OpenWindow(0, 100, 200, 400, 40, "ComboBoxDirectoryList", #PB_Window_SystemMenu) CreateGadgetList(hWndMain) TextGadget(#txt_Directory, 10,10,150,20,"") ComboBoxGadget(#CBG_DIRECTORY, 220, 10, 170, 200) DlgDirListComboBox_(hWndMain, "C:\", #CBG_DIRECTORY, #txt_Directory, #DDL_DIRECTORY | #DDL_EXCLUSIVE) Repeat event = WaitWindowEvent() If event = #PB_Event_Gadget If EventGadget()=#CBG_DIRECTORY SetGadgetText(#txt_Directory,Str(GetGadgetState(#CBG_DIRECTORY))) EndIf EndIf Until event = #PB_Event_CloseWindow
Поделиться35925.04.2010 12:20:19
Зачем ты строковой переменной присваиваешь число?
Да, тупанул, учусь пока Мне даже не эту команду надо было применить, эту: GetGadgetText. Спасибо, разобрался
Поделиться36025.04.2010 13:34:40
У выпадающего списка есть несколько типов событий, а нам нужно отслеживать только закрытие списка после выбора пункта.
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=1990&highlight= ; Author: freedimension + GPI (extended event loop by Andre, updated for PB4.00 by blbltheworm) ; Date: 15. August 2003 ; OS: Windows ; Demo: No #CBG_DIRECTORY = 1 #txt_Directory = 2 hWndMain = OpenWindow(0, 100, 200, 400, 40, "ComboBoxDirectoryList", #PB_Window_SystemMenu) CreateGadgetList(hWndMain) TextGadget(#txt_Directory, 10,10,150,20,"") ComboBoxGadget(#CBG_DIRECTORY, 220, 10, 170, 20) DlgDirListComboBox_(hWndMain, "C:\", #CBG_DIRECTORY, #txt_Directory, #DDL_DIRECTORY | #DDL_EXCLUSIVE) Repeat event = WaitWindowEvent() If event = #PB_Event_Gadget If EventGadget()=#CBG_DIRECTORY If EventType()=1 ; Список закрылся с выбором пункта SetGadgetText(#txt_Directory,GetGadgetText(#CBG_DIRECTORY)) EndIf EndIf EndIf Until event = #PB_Event_CloseWindow
Похожие темы
Вопросы новичка (продолжение…) | Вопросы по PureBasic | 29.06.2024 |
Скорее, это теоретический вопрос о правах в директории. | OffTop | 16.09.2022 |
Вопрос по отладке | Вопросы по PureBasic | 26.01.2017 |
Три вопроса по созданию браузера. | Вопросы по PureBasic | 01.11.2010 |
вопрос о точности типов данных | Вопросы по PureBasic | 20.05.2021 |