purebasic.info

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

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Выделение текста
СообщениеДобавлено: Вт дек 25, 2012 8:58 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Нужен был TextGadget с возможностью выделять текст. Такого контрола нет. Придумал так:
Код:
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
ProcedureDLL SetTextGadgetSelectMode(Gadget, State) ;Разрешить или запретить выделять текст TextGadget'а
  x = GadgetX(Gadget)
  y = GadgetY(Gadget)
  width = GadgetWidth(Gadget)
  height = GadgetHeight(Gadget)
  text$ = GetGadgetText(Gadget)
  font = GetGadgetFont(Gadget)
  backcolor = GetGadgetColor(Gadget,#PB_Gadget_BackColor)
  If BackColor = -1
    BackColor = RGB(240,240,240)
  EndIf
  frontcolor = GetGadgetColor(Gadget,#PB_Gadget_FrontColor)
  FreeGadget(Gadget)
  If State = 1
    StringGadget(Gadget, x, y, width, height, text$,#PB_String_BorderLess|#PB_String_ReadOnly)
    SetGadgetFont(Gadget,font)
    SetGadgetColor(Gadget,#PB_Gadget_FrontColor,FrontColor)
    SetGadgetColor(Gadget,#PB_Gadget_BackColor, BackColor)
  ElseIf State = 0
    TextGadget(Gadget, x, y, width, height, text$)
    SetGadgetFont(Gadget,font)
    SetGadgetColor(Gadget,#PB_Gadget_FrontColor,FrontColor)
    SetGadgetColor(Gadget,#PB_Gadget_BackColor, BackColor)
  EndIf
EndProcedure
If OpenWindow(0,5,5,100,90,"Window")
  TextGadget(1,5,5,90,25,"Text Selected!!")
  ButtonGadget(2,5,35,90,25,"Selected",#PB_Button_Toggle)
  Repeat
    event = WaitWindowEvent()
    gadget = EventGadget()
    If event = #PB_Event_CloseWindow
      End
    ElseIf event = #PB_Event_Gadget And gadget = 2
      SetTextGadgetSelectMode(1,GetGadgetState(2))
    EndIf
  ForEver
EndIf


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 25, 2012 9:38 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Так не проще будет?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
If OpenWindow(0,5,5,100,90,"Window")
  Text$="Text"
  StringGadget(0,10,10,70,20,Text$,#PB_String_BorderLess|#PB_String_ReadOnly):HideGadget(0,1)
  TextGadget(1,10,10,70,20,Text$)
  ButtonGadget(2,5,35,90,25,"Selected",#PB_Button_Toggle)
  Repeat
    event = WaitWindowEvent()
    gadget = EventGadget()
    If event = #PB_Event_CloseWindow
      End
    ElseIf event = #PB_Event_Gadget And gadget = 2
      If GetGadgetState(2)
      HideGadget(0,0)
      HideGadget(1,1)
      Else
      HideGadget(1,0)
      HideGadget(0,1)
      EndIf
    EndIf
  ForEver
EndIf
 


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 26, 2012 7:11 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Никита Однороб писал(а):
Нужен был TextGadget с возможностью выделять текст. Такого контрола нет. Придумал так:

Че придумал-то, раскрасил background у TextGadget, это далеко не выделение текста
Можно без всякого огорода
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
If OpenWindow(0,5,5,100,90,"Window") 
   TextGadget(1,5,5,90,25,"Text Selected!!")
   ButtonGadget(2,5,35,90,25,"Selected",#PB_Button_Toggle)
   Repeat
     event = WaitWindowEvent()
     gadget = EventGadget()
     If event = #PB_Event_CloseWindow
       End
     ElseIf event = #PB_Event_Gadget And gadget = 2
         SetGadgetColor(1,#PB_Gadget_BackColor, RGB(240,240,240))
     EndIf
   ForEver
EndIf


_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 26, 2012 7:49 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
pablov, в чем смысл твоего кода? Открой свойства какого нибудь файла. Там размер можно выделять, контекстное меню позволяет копировать. Выделить можно и фрагмент и полностью.
Пи.си. Зачем раскрашивать бекколор 240,240,240? Текст с таким цветом и создается - это стандартный цвет окна.

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 26, 2012 8:29 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Никита Однороб писал(а):
pablov, в чем смысл твоего кода?

А в чем твоего?
Никита Однороб писал(а):
Открой свойства какого нибудь файла. Там размер можно выделять, контекстное меню позволяет копировать. Выделить можно и фрагмент и полностью.

Класс окна "размер" - Edit, по нашему StringGadget с флагом тока чтение
Код:
1
2
3
4
5
6
7
8
9
10
If OpenWindow(0,5,5,100,90,"Window") 
   StringGadget(1,5,5,90,25,"Text Selected!!", #PB_String_ReadOnly | #PB_String_BorderLess)
   Repeat
     event = WaitWindowEvent()
     gadget = EventGadget()
     If event = #PB_Event_CloseWindow
       End
     EndIf
   ForEver
EndIf


Никита Однороб писал(а):
Зачем раскрашивать бекколор 240,240,240?

Дак это ты раскрашивал
Никита Однороб писал(а):
If BackColor = -1

    BackColor = RGB(240,240,240) ; Это что

  EndIf

  frontcolor = GetGadgetColor(Gadget,#PB_Gadget_FrontColor)

  FreeGadget(Gadget)

  If State = 1

    StringGadget(Gadget, x, y, width, height, text$,#PB_String_BorderLess|#PB_String_ReadOnly)

    SetGadgetFont(Gadget,font)

    SetGadgetColor(Gadget,#PB_Gadget_FrontColor,FrontColor)

    SetGadgetColor(Gadget,#PB_Gadget_BackColor, BackColor) ; Это что
[/code]

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение текста
СообщениеДобавлено: Ср фев 19, 2014 12:52 pm 
Не в сети
доцент

Зарегистрирован: Ср фев 19, 2014 12:31 pm
Сообщений: 27
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Доброго времени суток.
Как выделить строку (Item) цветом в EditorGadget? Интересует именно EditorGadget.

Я поглядываю в сторону SetPixel но может есть что для EditorGadget.

_________________
PureBasic 4.60


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

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11300
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
http://www.purearea.net/pb/CodeArchiv/G ... +Styles.pb
http://www.purearea.net/pb/CodeArchiv/G ... ributes.pb

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


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

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


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

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


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

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