PureBasic - форум

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

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


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка


Вопросы новичка

Сообщений 661 страница 690 из 1000

661

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

ты просто наверно местами строковые гаджеты перепутал....

все верно..мне именно в такой последовательности нужно.. Вот смотри..Если в первое поле ввести 10 а во второе 5, то по идее должно получиться 0,4, а в дебугере 0,050000

Отредактировано daiomik (25.08.2010 12:07:07)

0

662

Всё рабатает правильно!
На форулу посмотри. Там y умножается на самого себя, поэтому x делится на достаточно большое число.

0

663

))правильно сказал haav. Это я гаджеты перепутал). Теперь все ок

0

664

Как можно узнать дату файла, который рассполагается на сервере.. Допустим узнать дату следующего файла: http://www.algsite.ru/data.txt

0

665

Вот что ответил сервер

HTTP/1.1 200 OK

Server: nginx

Date: Sat, 28 Aug 2010 10:25:08 GMT

Content-Type: text/plain

Connection: keep-alive

Last-Modified: Sun, 22 Aug 2010 10:55:33 GMT

ETag: "410634-16-48e675ef91340"

Accept-Ranges: bytes

Content-Length: 22

0

666

Вот мне нужно узнать дату последнего его изменения, типа так: 22.05.2010  Какими командами ты пользовался?

Отредактировано daiomik (28.08.2010 14:29:10)

0

667

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

командами ты пользовался?

GetHTTPHeader

Код:
InitNetwork()

  Header$ = GetHTTPHeader("http://www.algsite.ru/data.txt")
  Repeat
   Index+1
   Line$ = StringField(Header$, Index, #LF$)
   Debug Line$
  Until Line$ = ""

0

668

Что то не могу найти в стринг команд, которые могли бы найти что - либо. В данном случае мне нужно вывести только строчку
Last-Modified: Sun, 22 Aug 2010 10:55:33 GMT

0

669

Используй FindString.

0

670

Спасибо, помогло!

0

671

Можно ли как нибудь при перетаскивании окна "прилепить" его к краю экрана?

0

672

Для этого нужно знать размеры экрана (функции из раздела Desktop) и координаты окна (функции в разделе Window)
Определяем координаты окна относительно экрана и если оно находится близко к краю, перемещаем его в самый край с помощью ResizeWindow.

0

673

Ок, разобрался

0

674

А случайно нет в сети исходника визуального редактора пурика? :idea:

0

675

Не видел.

0

676

Доброго времени. Есть три структуры:

Structure name1; это кусок блока
a.s
b.s
c.s
EndStructure

Structure name2; это блок на странице
d.s
e.s
;сдесь должен быть  структурированный newlist f.name1()
EndStructure

Structure name3; это страница
g.s
h.s
;сдесь должен быть  структурированный newlist j.name2()
EndStructure

Вопрос как всё это правильно офомить(в смысле код) и как мне обратиться к переменной a

0

677

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

Вопрос как всё это правильно офомить(в смысле код) и как мне обратиться к переменной a

http://pure-basic.narod.ru/docs/books/s … s_List.htm

0

678

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

Вопрос как всё это правильно офомить(в смысле код) и как мне обратиться к переменной a

Версия пурика должна быть не ниже 4.50!

Код:
Structure name1; это кусок блока
a.s
b.s
c.s
EndStructure 

Structure name2; это блок на странице
d.s
e.s
List f.name1()
EndStructure

Structure name3; это страница
g.s
h.s
List j.name2()
EndStructure

xx.name3
AddElement(xx\j())
AddElement(xx\j()\f())
xx\j()\f()\a = "Структура"
Debug xx\j()\f()\a

0

679

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

Версия пурика должна быть не ниже 4.50!

Где бы её под линь взять? :(
Демо не прокатит у меня уже больше 800 строк.

0

680

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

0

681

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

как сделать что бы из файла рисунка делался он на рабочий стол

http://purebasic.info/phpBB2/viewtopic.php?t=1100

0

682

Делал смену обоев для семёрки (не вникал, в ХР не работает, надо переделать)

Код:
Enumeration
  #Window_0 
  #image
  #next
  #open 
  #Ima
  #File_path
  #List
  #min
  #oma
  #text
  #text2
  #avto
  #ico
  #tray
  #menu
  #Fr_3D 
EndEnumeration 
 
UsePNGImageDecoder() 
UseJPEGImageDecoder()

Global Rep.s, NbSongs, File.s, Nasd.s, SongPlaying, Wal.s, rez

Procedure Direct()      ; сканирование папки
   NbSongs = 0     
       SetGadgetText(#File_path, GetPathPart(Rep))
       ClearGadgetItems(#List)
            If ExamineDirectory(0, GetPathPart(Rep), "*.*")
              Repeat
                FileType = NextDirectoryEntry(0)
                If FileType
                  FileName.s = DirectoryEntryName(0)
                  If FileName.s <> "." And FileName.s <> ".."
                    Ext$ = LCase(Right(FileName.s,4)) 
                    If Ext$ = ".png" Or Ext$ = ".jpg" Or Ext$ = ".jpg"
                        AddGadgetItem(#List, -1, FileName.s)
                        NbSongs = NbSongs + 1
                    EndIf
                  EndIf
                EndIf
              SetGadgetState(#List, SongPlaying )
              Until FileType = 0        
            EndIf
 EndProcedure
 
 Procedure wallpaper()  ; смена обоев
  File.s = GetGadgetText(#File_path)+GetGadgetText(#List) ; получаем путь из суммы директории и имени с плей листа  

  LoadImage(#oma, File.s)     
    x_min.f=ImageWidth (#oma)  ; ширина картинки
    y_min.f=ImageHeight(#oma)  ; высота картинки
    rez_min=(160/x_min)*y_min       
    SetGadgetState(#min, ResizeImage(#oma, 160, rez_min) )
   
    x.f= GetSystemMetrics_(#SM_CXSCREEN) ; ширина монитора
    y.f=GetSystemMetrics_(#SM_CYSCREEN)  ; высота монитора
 
     LoadImage(#Ima, File.s)  
    
    x_im.f=ImageWidth (#Ima)  ; ширина картинки
    y_im.f=ImageHeight(#Ima)  ; высота картинки
    
    rez=(x/x_im)*y_im  

  If x_min.f< x.f
    If CreateImage(#image, x, rez) 
     StartDrawing(ImageOutput(#image)) 
      DrawImage(ImageID(#Ima), 0, 0, x, rez) 
     StopDrawing()
     #file = "oooo.bmp" 
     SaveImage(#image, #file, #PB_ImagePlugin_BMP) 
     SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, #file, #SPIF_UPDATEINIFILE)
    EndIf 
   Else
     SystemParametersInfo_(#SPI_SETDESKWALLPAPER, 0, File.s, #SPIF_UPDATEINIFILE)
  EndIf  
  ; DeleteFile("oooo.bmp")  
 EndProcedure                
 
Procedure Avto()        ; авто просмотр
  If GetGadgetState(#avto)  And Rep <> ""
    SongPlaying = GetGadgetState(#List)+ 1
    If SongPlaying < NbSongs
      SetGadgetState(#List, SongPlaying )                            
    EndIf
    wallpaper()   
  EndIf
EndProcedure

Procedure Min()         ; миниатюра
  File.s = GetGadgetText(#File_path)+GetGadgetText(#List) ; получаем путь из суммы директории и имени с плей листа
  Debug File.s
     If File <> "" 
      LoadImage(#oma, File.s)     
        x_min.f=ImageWidth (#oma)  ; ширина картинки
        y_min.f=ImageHeight(#oma)  ; высота картинки
        rez_min=(160/x_min)*y_min       
      SetGadgetState(#min, ResizeImage(#oma, 160, rez_min) )
      SetGadgetText(#text2, Str(x_min)+ " x "+ Str(y_min))
      ResizeGadget(#Fr_3D, 195, 30, 170, rez_min+15)
     EndIf
EndProcedure

CatchImage(#min,?Im1,  ?Im1End -?Im1 )
CatchImage(#ico,?Im2,  ?Im2End -?Im2 ) 
 

If OpenWindow (#Window_0,0,0,380,210,"Смена обоев рабочего стола",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered) ;|#PB_Window_Invisible  #PB_Window_MinimizeGadget|
    ButtonGadget(#next,210,5,80,20,"Следующий")
    ButtonGadget(#open, 50,5,80,20,"Открыть")  
    ListViewGadget(#List, 10,  30, 170, 170)
    
    Frame3DGadget(#Fr_3D, 195,  30, 170, 115, "")

    ImageGadget(#min,200,40,160,100,ImageID(#min))
    TextGadget(#text, 200,170,160,15,"Предварительный просмотор") 
    TextGadget(#text2,200,190,160,15,"",#PB_Text_Center)
   
    CheckBoxGadget(#avto,320,5,40,20,"Авто")
    SetGadgetState(#avto, 0)
   
    TextGadget(#File_path,0,0,0,0,"Путь")
   
;------------Чтение пути-----------------------------
 If OpenPreferences("wolp.pcs")
     Rep.s = ReadPreferenceString("Путь", "Нет")
     Poz.s = ReadPreferenceString("Позиция", "Нет")
     Wal.s = ReadPreferenceString("Обои", "Нет")
    ClosePreferences()
 EndIf
 SongPlaying =    Val(Poz.s)
   Direct()
   Min()
   wallpaper()
;----------------------------------------------------

  If CreatePopupMenu(#menu)
    MenuItem(0, "Скрыть")
    MenuBar()
    ;MenuItem(1, "Показать")
    MenuItem(2, "Выход")
  EndIf


 AddSysTrayIcon(#tray, WindowID(#Window_0), ImageID(#ico))     
 SetTimer_(WindowID(#Window_0),Event,10000,@Avto())
EndIf

Repeat
Event =  WaitWindowEvent() 
Window = EventWindow() 
Gadget = EventGadget()
    mx.l = WindowMouseX(#Window_0) ; координаты x 
    my.l = WindowMouseY(#Window_0) ; координаты y
    
   If ((mx > 200 And mx < 360) And (my > 40 And my < 140)) 
    SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука  
   EndIf
    
   Select Event  
     Case #PB_Event_SysTray
      Select EventType()
       Case #PB_EventType_LeftClick
        HideWindow(#Window_0,0)
       Case #PB_EventType_RightClick
        DisplayPopupMenu(#menu, WindowID(#Window_0))
      EndSelect
     
     Case #PB_Event_Menu
        Select EventMenu()
          Case 0
            HideWindow(#Window_0,1)
          Case 1
            ;HideWindow(#Window_0,0)
          Case 2
            Event = #PB_Event_CloseWindow
        EndSelect
           
      Case #WM_LBUTTONDBLCLK    ; обработка события на двойной клик
         If Gadget = #List Or Gadget = #min
         ; SetCursor_(LoadCursor_(0,#IDC_HAND)) ; курсор рука
          File.s = GetGadgetText(#File_path)+GetGadgetText(#List)
          Wal.s = File.s 
          wallpaper() 
         EndIf
       Case #PB_Event_Gadget
          Select EventGadget()
             Case #next
             If Rep <> ""
              SongPlaying = GetGadgetState(#List)+ 1
              If SongPlaying < NbSongs
               SetGadgetState(#List, SongPlaying )                            
              EndIf
              wallpaper()
              EndIf
             Case #open
               Rep.s = OpenFileRequester("","","*.*|*.*",0) 
               Direct()
               ;---Совпадение списка и открыт. картинки-------------------
                Nasd.s= GetFilePart(Rep.s) ; извлекаем имя          
                For n=0 To 1000
                 SetGadgetState(#List, n)
                 If Nasd.s =GetGadgetText(#List)
                 SetGadgetState(#List, n)
                 Break
                 EndIf
                Next
              Min()                             
             Case #List
              Min()
          EndSelect  
   EndSelect
   Select message
     Case #WM_KEYDOWN 
  
              If Rep <> ""
              SongPlaying = GetGadgetState(#List)+ 1
              If SongPlaying < NbSongs
               SetGadgetState(#List, SongPlaying )                            
              EndIf
              wallpaper()
              EndIf
   EndSelect
If Event = #PB_Event_CloseWindow
;{----Запись параметров перед выходом-----------
  OpenPreferences("wolp.pcs")
   WritePreferenceString("Путь",File.s)
   WritePreferenceString("Позиция",Str(GetGadgetState(#List)))
   WritePreferenceString("Обои",Wal.s)
  ClosePreferences()      
;}---------------------------------------------
Break
EndIf
ForEver

DataSection
 Im1:
 IncludeBinary "wal.png" 
 Im1End:
 Im2:
 IncludeBinary "иконка.ico" 
 Im2End:
EndDataSection

0

683

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

Делал смену обоев для семёрки (не вникал, в ХР не работает, надо переделать)

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

0

684

Если есть желание можете добавить Random
ScrollWalpapers

0

685

Как то столкнулся с таким вопросом. Проблему решил по своему "огибаемым путем". Но вот вопрос остался. В программе более одного окна. Я удаляю один гаджет, потом надо добавить скажем 2 или 3 на это же окно, но добавляется на другое... Что не так у меня?

Код:
Enumeration
  #Window_0
  #Window_1
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #Button_1
  #Button_2
  #Button_3
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 220, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )

  EndIf
EndProcedure

Procedure Open_Window_1()
  If OpenWindow(#Window_1, 272, 125, 600, 300, "New window ( 1 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )

      ButtonGadget(#Button_0, 85, 55, 170, 70, "")
      ButtonGadget(#Button_1, 385, 90, 140, 80, "")
      

  EndIf
EndProcedure
Open_Window_1()
Open_Window_0()
Repeat
  event=WaitWindowEvent()
  If event= #PB_Event_Gadget
    If EventGadget()=#Button_0
      FreeGadget(#Button_1)
      SetActiveWindow(#Window_1)
      ButtonGadget(#Button_2, 350, 90, 140, 40, "")
      ButtonGadget(#Button_3, 395, 90, 140, 40, "")
    EndIf
    EndIf
Until event=#PB_Event_CloseWindow

0

686

С помощью UseGadgetList нужно указать куда добавлять гаджеты

Код:
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 220, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )

  EndIf
EndProcedure

Procedure Open_Window_1()
  If OpenWindow(#Window_1, 272, 125, 600, 300, "New window ( 1 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )

      ButtonGadget(#Button_0, 85, 55, 170, 70, "")
      ButtonGadget(#Button_1, 385, 90, 140, 80, "")
      

  EndIf
EndProcedure
Open_Window_1()
Open_Window_0()
Repeat
  event=WaitWindowEvent()
  If event= #PB_Event_Gadget
    If EventGadget()=#Button_0
      UseGadgetList(WindowID(#Window_1))
      FreeGadget(#Button_1)
      SetActiveWindow(#Window_1)
      ButtonGadget(#Button_2, 350, 90, 140, 40, "")
      ButtonGadget(#Button_3, 395, 90, 140, 40, "")
    EndIf
    EndIf
Until event=#PB_Event_CloseWindow

0

687

Благодарю! И еще один вопросик  :blush:
Куча разных кнопок в программе. Нажал на кнопку левой кнопкой выполнилось действие. Нажал правой появилось контекстное меню. Как узнать на какой кнопке запустил контекстное меню. Мне на ум приходит только абракадабра с GetCursor()

0

688

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

Как узнать на какой кнопке запустил контекстное меню.

Код:
; Эта процедура определяет находится ли курсор мышки над заданым окном или гаджетом
Procedure IsMouseOver(wnd) 
 GetWindowRect_(wnd,re.RECT) 
 GetCursorPos_(pt.POINT) 
 Result.l = PtInRect_(@re, pt\x | (pt\y<<32) )
ProcedureReturn Result 
EndProcedure

+1

689

Сейчас попробую ее, забыл про нее совсем...
Спасибо.

0

690

Че то не могу ее пристроить. o.O

Код:
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #Button_1
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 220, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ButtonGadget(#Button_0, 40, 50, 135, 60, "")
      ButtonGadget(#Button_1, 305, 75, 160, 70, "")
     If CreatePopupImageMenu(5, #PB_Menu_ModernLook)
      MenuItem(1, "Добавить")
      MenuItem(2, "Удалить")
      
    EndIf
    EndIf
  EndIf
EndProcedure
Open_Window_0()
Repeat
  event=WaitWindowEvent()
  If event=#WM_RBUTTONDOWN

    DisplayPopupMenu(5, WindowID(#Window_0))
  EndIf


Until event=#PB_Event_CloseWindow

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка