Думаю что в этом случае, рисунки нужно хранить отдельно от 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 |