purebasic.info

PureBasic forum
Текущее время: Пн окт 22, 2018 12:15 am

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




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: FileWidget
СообщениеДобавлено: Ср дек 28, 2011 2:12 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Сб май 21, 2011 10:27 pm
Сообщений: 246
Откуда: Брест , Беларусь
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Этот виджет аналог OpenFileRequester , строго не судите , писал пару минут
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
 
;FileWidget - это аналог функции OpenFileRequester с своими особенностями и неудобствами
;
;  kirill2000d    Кирилл Дубейко
;  
;
 
 
ProcedureDLL FreeG(startpoint=100)
  While IsGadget(startpoint)
  startpoint=startpoint+1
  Wend
  ProcedureReturn startpoint
EndProcedure
ProcedureDLL FreeW(startpoint=100)
  While IsWindow(startpoint)
  startpoint=startpoint+1
  Wend
  ProcedureReturn startpoint
EndProcedure
 
ProcedureDLL.s FileWidget(Directory$,Flags$="",Buttons$="Open|Open|Cancel",Additions$="")
 
Window=FreeW(5)
gwwin=OpenWindow(Window, 895, 277, 600, 530, StringField(Buttons$,1,"|"),   #PB_Window_SizeGadget | #PB_Window_TitleBar |#PB_Window_ScreenCentered)
 
   gwsave=0
   If FindString(Flags$,"s",0)
      gwsave=1
   EndIf
 
      gwecm=FreeG()
      If FindString(Flags$,"d",0)=0
         ExplorerComboGadget(gwecm, 0, 0, 570, 25, "")
      Else
         ExplorerComboGadget(gwecm, 0, 0, 570, 25, "",#PB_Explorer_NoMyDocuments)
         gwfl=#PB_Explorer_NoMyDocuments
      EndIf
      If FindString(Flags$,"a",0)
         gwfl=gwfl+#PB_Explorer_AlwaysShowSelection
      EndIf
      If FindString(Flags$,"p",0)
         gwfl=gwfl+#PB_Explorer_NoParentFolder
      EndIf
      If FindString(Flags$,"c",0)
         gwfl=gwfl+#PB_Explorer_NoDirectoryChange
      EndIf
      gwexp=FreeG()
      ExplorerListGadget(gwexp, 0, 30, 600, 390, Directory$,gwfl)
      SetGadgetItemAttribute(gwexp, 0, #PB_Explorer_ColumnWidth, 250)
 
      gwstr=FreeG()
      StringGadget(gwstr, 0, 440, 480, 20, "")
      gwbu1=FreeG()
      ButtonGadget(gwbu1, 490, 440, 100, 24, StringField(Buttons$,2,"|"), #PB_Button_Default)
      gwbu2=FreeG()
      ButtonGadget(gwbu2, 490, 470, 100, 24, StringField(Buttons$,3,"|"))
      gwcmb=FreeG()
      ComboBoxGadget(gwcmb, 0, 470, 480, 20)
      AddGadgetItem(gwcmb,0,GetFilePart(Directory$))
      SetGadgetState(gwcmb,0)
      DisableGadget(gwcmb,1)
      gwchb=0
      If Additions$
        gwchb=FreeG()
        CheckBoxGadget(gwchb, 5, 500, 80, 20, Additions$)
      EndIf
      gwok=0
     
   Repeat
     Event = WaitWindowEvent()
     Type=EventType()
     Select Event
     
       Case #PB_Event_SizeWindow
 
          ResizeGadget(gwecm,0,0,WindowWidth(Window)-30,25)
          ResizeGadget(gwexp,0,30,WindowWidth(Window),WindowHeight(Window)-120+((Not(gwchb)))*20)
          ResizeGadget(gwstr,0,WindowHeight(Window)-90+((Not(gwchb)))*20,WindowWidth(Window)-120,20)
          ResizeGadget(gwbu1,WindowWidth(Window)-110,WindowHeight(Window)-90+((Not(gwchb)))*20,100,24)
          ResizeGadget(gwbu2,WindowWidth(Window)-110,WindowHeight(Window)-60+((Not(gwchb)))*20,100,24)
          ResizeGadget(gwcmb,0,WindowHeight(Window)-60+((Not(gwchb)))*20,WindowWidth(Window)-120,20)
          If gwchb And IsGadget(gwchb)
             ResizeGadget(gwchb,5,WindowHeight(Window)-30,WindowWidth(Window)-120,20)
          EndIf
       Case #PB_Event_Gadget
         Select EventGadget()
           Case gwecm : SetGadgetText(gwexp,GetGadgetText(gwecm))
           Case gwexp :
            If Type=#PB_EventType_LeftClick
               file$=GetGadgetItemText(gwexp,GetGadgetState(gwexp))
               SetGadgetText(gwstr,file$)
            EndIf
            If Type=#PB_EventType_LeftDoubleClick
               file$=GetGadgetText(gwexp)+GetGadgetItemText(gwexp,GetGadgetState(gwexp))
               ;SetGadgetText(gwstr,file$)
               If gwsave=0 And FileSize(file$)=-1
                  MessageRequester("","File not found",16)
                  Continue
               EndIf
               gwok=1
               Break
            EndIf
            Case gwbu2:Break
            Case gwbu1:
              file$=GetGadgetText(gwexp)+GetGadgetText(gwstr)
               ;SetGadgetText(gwstr,file$)
               If gwsave=0 And FileSize(file$)=-1
                  MessageRequester("","File not found",16)
                  Continue
               EndIf
               gwok=1
               Break
         EndSelect
       
       Case #PB_Event_Menu
         Select EventMenu()
           Case 1 :
         EndSelect
     
     EndSelect
   Until Event = #PB_Event_CloseWindow
   If gwchb And IsGadget(gwchb) And GetGadgetState(gwchb)
      SetEnvironmentVariable("GWCHD",Str(GetGadgetState(gwchb)))
   EndIf
   If IsWindow(Window)
      CloseWindow(Window)
   EndIf
   If gwok=1
      ProcedureReturn file$
   EndIf
 
EndProcedure
ProcedureDLL FileWidgetAddition()
  ProcedureReturn Val(GetEnvironmentVariable("GWCHD"))
EndProcedure
 
Debug FileWidget("D:\*.*","","Открыть|ДА|НЕТ","65")
 
If FileWidgetAddition()
   Debug "Check Box was called"
EndIf
 


_________________
Выпьем ещё раз - чтобы выпить в следущий раз! (С) Иван Пашкевич


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

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