PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » Мои программы


Мои программы

Сообщений 1 страница 15 из 15

1

С разрешением Петра создаю данную тему, чтобы выкладывать сюда свои созданные программы. Хоть я новечек, поэтому строго не судите, так как для Вас это будет легко. И так первый проект (InfaFile) по получении информации о файле:

Код:
Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Text_0
  #Text_1
  #Text_3
  #Text_5
  #Text_7
  #Text_9
  #Button_1
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 333, 230, 305, 108, "InfoFile",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateGadgetList(WindowID(#Window_0))
      TextGadget(#Text_0, 85, 10, 90, 15, "")
      TextGadget(#Text_1, 10, 10, 65, 15, "Имя файла:")
      TextGadget(#Text_3, 10, 50, 100, 15, "Размер файла(кб):")
      TextGadget(#Text_5, 110, 50, 70, 15, "")
      TextGadget(#Text_7, 10, 30, 70, 15, "Путь файла:")
      TextGadget(#Text_9, 80, 30, 230, 15, "")
      ButtonGadget(#Button_1, 10, 80, 130, 25, "Открыть новый файл")
      
    EndIf
  EndIf
EndProcedure

Procedure Vibor_faila()
file.s=OpenFileRequester("Выбор файла","","Любой файл|*.*",0)
If file<>""
 If ReadFile(0,file)
  name.s=GetFilePart(file)
  size=FileSize(file)
  CloseFile(0)
  Open_Window_0()
  SetGadgetText(#Text_9,file)
  SetGadgetText(#Text_0,name)
  SetGadgetText(#Text_5,Str(size))
 Else
  MessageRequester("Ошибка","Не удалось загрузить данный файл")
 EndIf
ElseIf file=""
 End
EndIf 
EndProcedure 

Vibor_faila()

Repeat
event=WaitWindowEvent()
Gadget=EventGadget()
If event=#PB_Event_Gadget
 If gadget=#Button_1
  Vibor_faila()
 EndIf
EndIf  
Until event=#PB_Event_CloseWindow

Отредактировано daiomik (10.04.2010 17:42:18)

0

2

Вот мой простой Мини Плеер. Хочу попросить, что бы вы малец доработали его, так как сам не могу найти в чем баг.
1) почему то баланс громкости работает  не правильно. (Убедитесь попробовав сами)
2) видимо пример, по которому я разбирал прикрутку трек бара к проигрыванию был не полным, поэтому трек бар работает не та, верней видимо какой та команды не хватает. PS. В коде есть строчка таймера SetTimer_(WindowID(#Window_0), 1, 500, @MoviePos()) которая далее не где не используется. Может проблема вней.
Прошу доработать данный пример, если вам это не сложно.

Код:
Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Button_1
  #TrackBar_0
  #TrackBar_1
  #Button_2
  #Button_3
  #Button_5
  #TrackBar_2
  #Text_0
  #Text_1
  #Button_10
  #Text_len_All
  #Text_Lens_Idet
EndEnumeration
Procedure MoviePos()
 If IsMovie(0)
 EndIf
EndProcedure
Procedure dis()
DisableGadget(#Button_2,0)
DisableGadget(#Button_3,0)
DisableGadget(#Button_5,0)
DisableGadget(#TrackBar_0,0)
DisableGadget(#TrackBar_1,0)
DisableGadget(#TrackBar_2,0)
SetGadgetText(#Button_3,"Пауза")
EndProcedure

Global FontID1
FontID1 = LoadFont(1, "Times New Roman", 10, #PB_Font_Bold)

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 358, 264, 326, 87, "Мини плеер",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ButtonGadget(#Button_1, 5, 5, 60, 20, "Открыть")
      TrackBarGadget(#TrackBar_0, 75, 10, 215, 20, 0, 100)
      TrackBarGadget(#TrackBar_1, 155, 65, 70, 20, 0, 100)
      SetGadgetState(#TrackBar_1,25)
      ButtonGadget(#Button_2, 5, 65, 45, 20, "Плей")
      ButtonGadget(#Button_3, 55, 65, 45, 20, "Пауза")
      ButtonGadget(#Button_5, 105, 65, 45, 20, "Стоп")
      TrackBarGadget(#TrackBar_2, 250, 65, 70, 20, 0, 200)
      SetGadgetState(#TrackBar_2,100)
      TextGadget(#Text_0, 155, 50, 65, 15, "громкость", #PB_Text_Center)
      TextGadget(#Text_1, 255, 50, 60, 15, "баланс", #PB_Text_Center)
      ButtonGadget(#Button_10, 300, 5, 20, 20, "?")
      SetGadgetFont(#Button_10, FontID1)
      TextGadget(#Text_len_All, 230, 25, 55, 15, "", #PB_Text_Right)
      TextGadget(#Text_Lens_Idet, 80, 25, 55, 15, "")
      DisableGadget(#Button_2,1)
      DisableGadget(#Button_3,1)
      DisableGadget(#Button_5,1)
      DisableGadget(#TrackBar_0,1)
      DisableGadget(#TrackBar_1,1)
      DisableGadget(#TrackBar_2,1)
    EndIf
  EndIf
EndProcedure

InitMovie()
Open_Window_0()
SmartWindowRefresh(#Window_0, 1) ;для уменьшения мерцания экрана
SetTimer_(WindowID(#Window_0), 1, 500, @MoviePos())

Repeat
event=WaitWindowEvent()
Gadget=EventGadget()

If event=#PB_Event_Gadget 
Select Gadget
 Case #Button_1
   file.s=OpenFileRequester("Выбор файла","","Аудио форматы|*.mp3;*.wav",0)
   If file<>""
    prov.s=GetGadgetText(#Button_3)
    If prov="Прод"
    dis()
    Else
    EndIf
    LoadMovie(0,file)
    dis()
    SetGadgetAttribute(#TrackBar_0, #PB_TrackBar_Maximum, MovieLength(0))
    MovieAudio(0, GetGadgetState(#TrackBar_1), GetGadgetState(#TrackBar_2)-100)
    SetGadgetState(#TrackBar_0,0)
    PlayMovie(0,WindowID(#Window_0))
   ElseIf file=""
   EndIf 
 Case #Button_3
   If GetGadgetText(#Button_3)="Пауза"
    PauseMovie(0)
    SetGadgetText(#Button_3,"Прод")
    DisableGadget(#TrackBar_0,1)
    DisableGadget(#TrackBar_1,1)
    DisableGadget(#TrackBar_2,1)
   Else
    ResumeMovie(0) 
    SetGadgetText(#Button_3,"Пауза")
    DisableGadget(#TrackBar_0,0)
    DisableGadget(#TrackBar_1,0)
    DisableGadget(#TrackBar_2,0)
   EndIf 
 Case #Button_2
   PlayMovie(0,WindowID(#Window_0))
 Case #Button_5
   StopMovie(0)
   MovieSeek(0,1)
 Case #Button_10
   MessageRequester("О программе","Мини плеер - программа для прослушивания музыки. 2010 daiomik")
 Case #TrackBar_0
   If IsMovie(0)
     MovieSeek(0,GetGadgetState(#TrackBar_0))
   EndIf
 Case #TrackBar_1,#TrackBar_2
   MovieAudio(0, GetGadgetState(#TrackBar_1), GetGadgetState(#TrackBar_2)-100) 
EndSelect
EndIf
Until event=#PB_Event_CloseWindow

0

3

daiomik написал(а):

почему то баланс громкости работает  не правильно. (Убедитесь попробовав сами)

Вроде правильно, а что не так?

daiomik написал(а):

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

Библиотека Movie не возвращает текущую позицию. :(

daiomik написал(а):

В коде есть строчка таймера SetTimer_(WindowID(#Window_0), 1, 500, @MoviePos()) которая далее не где не используется.

Она создаёт таймер, по которому вызывается процедура MoviePos() каждые 500 мс.

0

4

Пётр написал(а):

Вроде правильно, а что не так?

Когда я отвожу бегунок вправо замолкает правая колонка и начинает играть левая, хотя должно вроде бы быть наоборот.

Пётр написал(а):

Библиотека Movie не возвращает текущую позицию.

Жалко что нельзя доработать пример. Ну даладно, видимо стандартными средствами хорошего плеера не сделаешь, только API использовать нужно

Отредактировано daiomik (11.04.2010 22:53:15)

0

5

Можно ещё Bass.dll использовать http://purebasic.info/phpBB2/viewtopic. … mp;start=0

0

6

Вот мой первый тест на PB. Rar 12кб, 203 строки. Оцените работу.
PS: Для интереса, не смотрите код, прежде чем начнете проходить тест. Можете пройти его несколько раз,  допустив ошибки. Ну вообщем все условия соблюдены.

0

7

А почему так мало вопросов? Даже не успел понять, как уже все.  :D

0

8

haav написал(а):

А почему так мало вопросов?

учусь. Пробовал технику оценки. Да и вообще первый раз все таки

0

9

Думаю что лучше всё сделать в одном окне используя контейнеры.

0

10

Пётр написал(а):

Думаю что лучше всё сделать в одном окне используя контейнеры.

Мне уже Стас подсказал как правильней сделать: либо контейнеры, либо массив, либо связанный список. Выбор за мной.  В след. раз будет по профессиональней работка:)

Отредактировано daiomik (14.04.2010 23:21:21)

0

11

Здравствуйте! Простите если не в тему, просто тоже захотелось чего нибудь добавить. Вот, что-то типа склада радиолюбителя, еще весьма сырая, но уже более менее функциональная. Прошу пробовать и критиковать. Склад радиолюбителя

0

12

Похоже что базу данных нужно регистрировать на компе, потому что у меня при запуске программы, таблица пустая.
Лучше было бы использовать базу типа SQLite. Ее не нужно регистрировать.

0

13

ldir написал(а):

Прошу пробовать и критиковать.

Интересная программа. Особенно понравился подход, как показано, где лежит деталь-полка, ящик, банка  :D
Не понял цена расходная и приходная цена - это для торговли что ли?
Основной недостаток всех подобных программ - это надо постоянно вносить руками в неё изменения. Кабы она сама знала, что куплено, а что уже использовано, цены бы такой программе не было!
К стати, в mdb можно и изображения хранить, было бы не плохо добавить такую возможность.
P.S.
По последнему пункту - беру слова обратно. Оказывается есть контекстное меню, где можно посмотреть документацию на элемент и поиск в Интернете.

Отредактировано ВиниПур (03.07.2012 12:18:29)

0

14

ВиниПур

ВиниПур написал(а):

подход, как показано, где лежит деталь-полка, ящик, банка

Это собственно и было основной задачей, сделать поиск как можно легче. Вообще эту программу попросил меня сделать мой шеф, так как он занимается ремонтом радиоаппаратуры и постоянно искать на в коробочках которые на полочках в шкафчике ему уже видимо надоело.

цена расходная и приходная цена - это для торговли что ли?

Вроде как да, в смысле на радиорынке купил, занес приходную и расходную и вроде как уже навар есть. А вообще-то я думал сделать печать разных там накладных, счетов, актов выполненных работ, но сейчас сомневаюсь надо-ли это кому-то. Будет необходимость - постараюсь сделать.

Основной недостаток всех подобных программ - это надо постоянно вносить руками в неё изменения

Тут ничего не поделаешь, необходимо человеческое вмешательство.

P.S. Спасибо за критику. Т.к. это моя первая программа на PB, мне очень важно мнение общества.

0

15

Код:
Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Text_0
  #Text_1
  #Text_3
  #Text_4
  #Text_5
  #Text_7
  #Text_9
  #Button_1
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 333, 230, 400, 200, "Свойства",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateGadgetList(WindowID(#Window_0))
      TextGadget(#Text_0, 110, 10, 100, 20, "")
      TextGadget(#Text_1, 10, 10, 90, 15, "Имя файла:")
      TextGadget(#Text_3, 10, 70, 120, 15, "Размер")
      TextGadget(#Text_4, 10, 90, 100, 15, "файла(кб):")
      TextGadget(#Text_5, 110, 90, 100, 15, "")
      TextGadget(#Text_7, 10, 30, 90, 20, "Путь файла:")
      TextGadget(#Text_9, 110, 30, 300, 40, "")
      ButtonGadget(#Button_1, 100, 150, 150, 30, "Открыть новый файл")
      
    EndIf
  EndIf
EndProcedure

Procedure Vibor_faila()
file.s=OpenFileRequester("Выбор файла","","Все файлы(*.*)|*.*",0)
If file<>""
 If ReadFile(0,file)
  name.s=GetFilePart(file)
  size=FileSize(file)
  CloseFile(0)
  Open_Window_0()
  SetGadgetText(#Text_9,file)
  SetGadgetText(#Text_0,name)
  SetGadgetText(#Text_5,Str(size))
 Else
  MessageRequester("Ошибка","Не удалось загрузить данный файл")
 EndIf
ElseIf file=""
 End
EndIf 
EndProcedure 

Vibor_faila()

Repeat
event=WaitWindowEvent()
Gadget=EventGadget()
If event=#PB_Event_Gadget
 If gadget=#Button_1
  Vibor_faila()
 EndIf
EndIf  
Until event=#PB_Event_CloseWindow

0


Вы здесь » PureBasic - форум » PureBasic для Windows » Мои программы