purebasic.info

PureBasic forum
Текущее время: Чт дек 12, 2019 4:33 am

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Несколько наивных вопросов.
СообщениеДобавлено: Пн ноя 25, 2019 6:32 pm 
Не в сети
доцент

Зарегистрирован: Пн янв 23, 2017 11:04 am
Сообщений: 42
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Ковыряюсь тут с DOS кодом, но дело, увы, идет очччень медленно. Опыта просто нет, и, видимо, не предвидится :cry: (поэтому, если кто хочет за разумные $ помогать- велком).
А пока, плз, если можете, ответье на вопросы в этом коде:
Код:
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
Enumeration
  #Enter1
EndEnumeration
#Brown=1262987
 
   OpenWindow(1, 550, 250, 501, 501, "222222", #PB_Window_MinimizeGadget)
   SetWindowColor(1, 0)
 
   TextGadget(#Enter1,100, 110, 170, 20, "Enter",#SS_NOTIFY)
   SetGadgetColor(#Enter1, #PB_Gadget_FrontColor,#Brown) ;как сделать, для всех надписей(гаджетов) в этом окне такой FrontColor был по умолчанию?
   SetGadgetColor(#Enter1, #PB_Gadget_BackColor, #Black) ;как сделать, для всех надписей(гаджетов) в этом окне такой BackColor был по умолчанию?
 
    Repeat
  Event.l = WaitWindowEvent()
  Select Event
      Case #PB_Event_Gadget
         Select EventGadget()
          Case #Enter1
            Select EventType()
              Case #PB_EventType_LeftClick  ; Если поставить сюда #PB_EventType_LeftDoubleClick , то по двойному клику работать не будет, как это сделать?            
                Debug "gggg"
              EndSelect
       EndSelect
  EndSelect
   
   Until Event = #PB_Event_CloseWindow
   CloseWindow(1)
 


И еще, чтоб 2 раза не вставать с дивана )) (не плодить темы). По-видимому, возможно, сделать так, чтобы дочернее окно забыло о родительском, т.е. чтоб оно начало жить своей жизнью, никак не влияя на окно, которое его породило. Только намекните, плз, что надо использовать.

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Несколько наивных вопросов.
СообщениеДобавлено: Вт ноя 26, 2019 9:09 am 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 341
Благодарил (а): 14 раз.
Поблагодарили: 41 раз.
Пункты репутации: 2
Goga писал(а):
чтоб оно начало жить своей жизнью
:?
Код:
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
Global *Long
 
Enumeration
  #Enter1
  #Enter2
  #Brown=1262987
EndEnumeration
 
Procedure GadgetProc(hWnd.l, uMsg.l, wParam.l, lparam.l)
  If uMsg = #WM_LBUTTONDBLCLK
    Debug "GadgetProc  WM_LBUTTONDBLCLK"
  EndIf  
  ProcedureReturn CallWindowProc_(*Long, hWnd, uMsg, wParam, lparam)
EndProcedure
 
OpenWindow(1, 550, 250, 501, 501, "222222", #PB_Window_MinimizeGadget)
SetWindowColor(1, 0)
 
TextGadget(#Enter1, 100, 110, 170, 20, "Enter", #SS_NOTIFY)
SetGadgetColor(#Enter1, #PB_Gadget_FrontColor, #Brown)
SetGadgetColor(#Enter1, #PB_Gadget_BackColor, #Black)
 
TextGadget(#Enter2, 300, 110, 170, 170, "", #SS_NOTIFY)
 
*Long = SetWindowLong_(GadgetID(#Enter2), #GWL_WNDPROC, @GadgetProc())
SetParent_(GadgetID(#Enter2), 0)
 
Repeat
  Event.l = WaitWindowEvent()
  If Event = #WM_LBUTTONDBLCLK And WindowEvent() = #PB_Event_Gadget
    Select EventGadget()
      Case #Enter1
        Debug "#Enter1"
    EndSelect    
  EndIf  
Until Event = #PB_Event_CloseWindow
End



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Несколько наивных вопросов.
СообщениеДобавлено: Вт ноя 26, 2019 1:22 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11551
Благодарил (а): 4 раз.
Поблагодарили: 476 раз.
Goga писал(а):
как сделать, для всех надписей(гаджетов) в этом окне такой FrontColor был по умолчанию?
Код:
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
Enumeration
#Enter1
EndEnumeration
#Brown=1262987
 
Global gBackStaticBrush =  CreateSolidBrush_(#Black)
 
Procedure WindowCallback(hWnd, uMsg, WParam, LParam)
 
  If uMsg = #WM_CTLCOLORSTATIC
    SetTextColor_(wParam, #Brown)
    SetBkMode_(wParam, #Black)
    ProcedureReturn gBackStaticBrush
  EndIf
 
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
 
 
OpenWindow(1, 550, 250, 501, 501, "222222", #PB_Window_MinimizeGadget)
SetWindowColor(1, 0)
SetWindowCallback(@WindowCallback(), 1)
 
TextGadget(#Enter1,100, 110, 170, 20, "Enter",#SS_NOTIFY)
; SetGadgetColor(#Enter1, #PB_Gadget_FrontColor,#Brown) ;как сделать, для всех надписей(гаджетов) в этом окне такой FrontColor был по умолчанию?
; SetGadgetColor(#Enter1, #PB_Gadget_BackColor, #Black) ;как сделать, для всех надписей(гаджетов) в этом окне такой BackColor был по умолчанию?
 
Repeat
  Event.l = WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Enter1
          Select EventType()
            Case #PB_EventType_LeftClick  ; Если поставить сюда #PB_EventType_LeftDoubleClick , то по двойному клику работать не будет, как это сделать?            
              Debug "gggg"
          EndSelect
      EndSelect
  EndSelect
 
Until Event = #PB_Event_CloseWindow
CloseWindow(1)

Goga писал(а):
По-видимому, возможно, сделать так, чтобы дочернее окно забыло о родительском, т.е. чтоб оно начало жить своей жизнью, никак не влияя на окно, которое его породило.
Окна обычно не мешают друг другу. Вот к примеру.
Код:
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
Procedure Child_Event()
  Event = Event()
  Window = EventWindow()
 
  Select Event
    Case #PB_Event_Timer
      SetGadgetText(GetWindowData(Window), FormatDate("%hh:%ii:%ss", Date()))
    Case #PB_Event_CloseWindow
      UnbindEvent(#PB_Event_CloseWindow, @Child_Event(), Window)
      UnbindEvent(#PB_Event_Timer, @Child_Event(), Window, 0)
      RemoveWindowTimer(Window, 0)
      CloseWindow(Window)
  EndSelect
EndProcedure
 
Procedure Child()
  id=OpenWindow(#PB_Any, #PB_Ignore, #PB_Ignore, 200, 150, "child", #PB_Window_SystemMenu, WindowID(0))
  If id
    SetWindowData(id, TextGadget(#PB_Any,20, 0, 160, 30,"", #PB_Text_Right))
    AddWindowTimer(id, 0, 500)
    BindEvent(#PB_Event_CloseWindow, @Child_Event(), id)
    BindEvent(#PB_Event_Timer, @Child_Event(), id, 0)
  EndIf
EndProcedure
 
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 400, 300, "parent")
  ButtonGadget(2, 100, 100, 100, 25, "click")
   
  Repeat
    Event = WaitWindowEvent()
    If EventWindow() = 0
      Select Event
        Case #PB_Event_Gadget
          If EventGadget() = 2
            Child()
          EndIf
        Case #PB_Event_CloseWindow
          Break
      EndSelect
    EndIf
  ForEver
EndIf

Каждый клик по кнопке создаст окно. Число окон ограничено только ОС и доступной памятью.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Несколько наивных вопросов.
СообщениеДобавлено: Вт ноя 26, 2019 2:14 pm 
Не в сети
доцент

Зарегистрирован: Пн янв 23, 2017 11:04 am
Сообщений: 42
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Спасибо вам всем за ответы. Вариант Петра , в общем-то, то, что нужно, поизучаю, очень я помучилсясо всем этим.( в моих изысканиях дочернее окно либо блокировало действие родительского, либо переставало работать, если работать в родительском). Также большое спасибо за способ сделать по дефолту цвет шрифта- очень экономит место, когда описываешь тридцать гаджетов)

Остался из темы еще один вопрос- чтобы текстовый гаджет реагировал только на двойной клик мышкой. Я тут могу и сам наколхозить код- тут, к счастью, особых вопросов нет, тут лишь желание, скорее, академическое. Я хотел это сделать элегантней, но, либо я что-то не понимаю, либо это какой-то глюк PB? :shock:

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Несколько наивных вопросов.
СообщениеДобавлено: Ср ноя 27, 2019 7:27 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 392
Благодарил (а): 1 раз.
Поблагодарили: 18 раз.
Пункты репутации: 0
Goga писал(а):
Ковыряюсь тут с DOS кодом, ...


О чём речь?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Несколько наивных вопросов.
СообщениеДобавлено: Чт ноя 28, 2019 5:53 pm 
Не в сети
доцент

Зарегистрирован: Пн янв 23, 2017 11:04 am
Сообщений: 42
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
jobless писал(а):
Goga писал(а):
Ковыряюсь тут с DOS кодом, ...


О чём речь?

пытаюсь конвертировать dos программу в винду

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Несколько наивных вопросов.
СообщениеДобавлено: Чт ноя 28, 2019 7:18 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 392
Благодарил (а): 1 раз.
Поблагодарили: 18 раз.
Пункты репутации: 0
Goga писал(а):
jobless писал(а):
Goga писал(а):
Ковыряюсь тут с DOS кодом, ...


О чём речь?

пытаюсь конвертировать dos программу в винду


Ну очень информативный ответ :D

Помощь то в чём нужна? Конкретика будет?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Несколько наивных вопросов.
СообщениеДобавлено: Пт ноя 29, 2019 4:37 pm 
Не в сети
доцент

Зарегистрирован: Пн янв 23, 2017 11:04 am
Сообщений: 42
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Ну, по-моему, ответ был такой же, как и вопрос.
Я не программист (и не собираюсь им становится), но прогу нужно все таки (когда-нибудь)) переконвертить. Занимаюсь ей время от времени, чаще с большими перерывами. И натыкаюсь на проблемы, которые требуют опыта и, соответсвенно, времени для решения. А у меня часто нет ни того, ни другого. А спрашивать все время форум как-то неудобно, хотелось бы иметь возможность адресно просить помощи... Ну, вообщем, я думаю, я дал всю инфу.

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Несколько наивных вопросов.
СообщениеДобавлено: Пт ноя 29, 2019 5:08 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6567
Благодарил (а): 32 раз.
Поблагодарили: 222 раз.
Пункты репутации: 59
напишу тут альтернативный способ присваивать всем гаджетам какие либо свойства.
Если все гаджеты имеют в коде сплошную нумерацию, например так
Код:
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
;{ Gadgets
Enumeration
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Text_5
  #Text_6
  #Text_7
   
  #Text_GPU_name
  #Text_Temperatur
  #Text_Usage_GPU
  #Text_Usage_Memory_GPU
  #Text_GPU_freq
  #Text_Memory_freq
  #Text_FanSpeed
  #Text_Power_GPU
   
  #Text_20
  #Text_21
  #Text_22
  #Text_23
  #Text_24
  #Text_25
  #Text_26
  #Text_27
   
EndEnumeration
;}  



То обычный цикл решает проблему просто и понятно:
Код:
1
2
3
4
For i = #Text_0 To #Text_27
  SetGadgetColor(i, #PB_Gadget_FrontColor,#Brown) ;такой FrontColor  по умолчанию
  SetGadgetColor(i, #PB_Gadget_BackColor, #Black) ; такой BackColor  по умолчанию
Next


_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Несколько наивных вопросов.
СообщениеДобавлено: Пт ноя 29, 2019 6:19 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 392
Благодарил (а): 1 раз.
Поблагодарили: 18 раз.
Пункты репутации: 0
Goga писал(а):
.... хотелось бы иметь возможность адресно просить помощи... Ну, вообщем, я думаю, я дал всю инфу.


Я ждал как минимум намёка на то, что ваша программа делает и на чём написана, что бы понимать интересно мне предложить вам помощь или тема совсем не моя.
А "dos программа" это ноль информации.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Несколько наивных вопросов.
СообщениеДобавлено: Сб ноя 30, 2019 11:27 am 
Не в сети
доцент

Зарегистрирован: Пн янв 23, 2017 11:04 am
Сообщений: 42
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
все написал в лс

_________________
.


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

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


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

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


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

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