purebasic.info

PureBasic forum
Текущее время: Вс июл 12, 2020 5:37 am

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Перенос строки по словам
СообщениеДобавлено: Вт мар 27, 2012 10:02 pm 
Не в сети
доцент

Зарегистрирован: Ср май 25, 2011 1:32 pm
Сообщений: 45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Нужно как в чате скайпа перемещать текст на новую строку если она не помещается в EditorGadget. Вот набросал код:
Код:
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
Procedure.s WordBorder(string.s, chr.i);string - это строка , chr - это максимально допустимое количество букв на одной строке
  Length = Len(string)
  p.s=Chr(13)+Chr(10)
  If Length>chr
    OpenWindow(0, 405, 54, 270, 220, "New window ( 0 )",  #PB_Window_SystemMenu |#PB_Window_SizeGadget| #PB_Window_TitleBar )
    EditorGadget(1, 0, 0, 270, 220)
    string=string+" "
    k=CountString(string," ")
    For y=1 To k
      s.s=StringField(string,y," ")
      AddGadgetItem(1,y,s)
    Next
    Repeat
    s1.s=GetGadgetItemText(1,0)
    s2.s=GetGadgetItemText(1,1)
    s3.s=s1+" "+s2
    If Len(s3)<chr
      RemoveGadgetItem(1, 0)
      RemoveGadgetItem(1, 1)
      AddGadgetItem(1,0,s3)
    EndIf
    Until Len(s3)>chr
  EndIf
EndProcedure
WordBorder("Строка слишком длинная чтобы поместиться в окно поэтому её нужно разделить на несколько строк.",46)
Repeat
  event=WaitWindowEvent()
  gadget=EventGadget()
 
Until event=#PB_Event_CloseWindow


Заранее Спасибо!

_________________
Опасность не в том, что компьютер однажды начнет мыслить, как человек, а в том, что человек однажды начнет мыслить, как компьютер.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 27, 2012 10:41 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11708
Благодарил (а): 4 раз.
Поблагодарили: 512 раз.
Велик.
Код:
1
2
; Перенос по словам в EditorGadget'е
SendMessage_(GadgetID(Gadget_Editor),#EM_SETTARGETDEVICE, #Null, 0)


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


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

Зарегистрирован: Ср май 25, 2011 1:32 pm
Сообщений: 45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Большое спасибо Пётр. Хотелось бы узнать список всех типов сообщений windows, ато как оказалось очень полезная вещь :D

_________________
Опасность не в том, что компьютер однажды начнет мыслить, как человек, а в том, что человек однажды начнет мыслить, как компьютер.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перенос строки по словам
СообщениеДобавлено: Ср янв 02, 2019 10:02 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 957
Благодарил (а): 104 раз.
Поблагодарили: 33 раз.
Пункты репутации: 5
Мне нужно прямо противоположное, нужна одна строка в редакторе.
Сейчас при выключении переноса редактор на своё усмотрение переносит строку, при этом в строке нет пробелов и прочего, сплошная строка символов.
не хотят работать как надо, у обоих результат один
Цитата:
SendMessage_(GadgetID(Gadget), #EM_SETTARGETDEVICE, #Null, 1)
SetGadgetAttribute(edi1, #PB_Editor_WordWrap, 1)


если третий параметр 1, то включается режим по одному символу на строку, на четвёртый параметр не реагирует
типа вертикальный текст
Код:
1
SendMessage_(GadgetID(Gadget), #EM_SETTARGETDEVICE, #Null, 1)



методом научного тыка вычислил, что строка длиной примерно меньше 1900 символов вытягивается в одну строку, если больше, редактор начинает мудрить
точную цифру вычислять не стал, где то тут происходит самопроизвольное переключение


если взять StringGadget, то он сожрал и не подавился строкой примерно 19 метров!!!!!!!!
значит таки редактор умеет??? это же один редактор с разными константами
кто может расколупать, какие константы используются для создания этих гаджетов?


пакость вот в чём, когда редактор начинает переносить строки он в этих местах расставляет 0D,0A и получется не одна строка

ещё нарыл, можно подставить свою функцию обработки переносов, есть такие константы, но такое не для меня :oops:

пока писал появилась идея как то скрол припутать, но в StringGadget нет же скрола, как то ж сделано

в общем нужен гаджет который правильно покажет одну строку или много строк, как мне надо, горизонтальный скрол не желателен, но приемлим

надеюсь голова ни у кого не болит?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перенос строки по словам
СообщениеДобавлено: Чт янв 03, 2019 6:16 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1025
Благодарил (а): 2 раз.
Поблагодарили: 59 раз.
Пункты репутации: 9
newJS писал(а):
Мне нужно прямо противоположное, нужна одна строка в редакторе.
Сейчас при выключении переноса редактор на своё усмотрение переносит строку, при этом в строке нет пробелов и прочего, сплошная строка символов.
не хотят работать как надо, у обоих результат один
Цитата:
SendMessage_(GadgetID(Gadget), #EM_SETTARGETDEVICE, #Null, 1)
SetGadgetAttribute(edi1, #PB_Editor_WordWrap, 1)


если третий параметр 1, то включается режим по одному символу на строку, на четвёртый параметр не реагирует
типа вертикальный текст
Код:
1
SendMessage_(GadgetID(Gadget), #EM_SETTARGETDEVICE, #Null, 1)



методом научного тыка вычислил, что строка длиной примерно меньше 1900 символов вытягивается в одну строку, если больше, редактор начинает мудрить
точную цифру вычислять не стал, где то тут происходит самопроизвольное переключение


если взять StringGadget, то он сожрал и не подавился строкой примерно 19 метров!!!!!!!!
значит таки редактор умеет??? это же один редактор с разными константами
кто может расколупать, какие константы используются для создания этих гаджетов?


пакость вот в чём, когда редактор начинает переносить строки он в этих местах расставляет 0D,0A и получется не одна строка

ещё нарыл, можно подставить свою функцию обработки переносов, есть такие константы, но такое не для меня :oops:

пока писал появилась идея как то скрол припутать, но в StringGadget нет же скрола, как то ж сделано

в общем нужен гаджет который правильно покажет одну строку или много строк, как мне надо, горизонтальный скрол не желателен, но приемлем

надеюсь голова ни у кого не болит?

Гаджеты могут быть разными они я так понимаю на апи вот первый типа текста в одну строку без скрола а второй
так и написано что длинна строки ограничена что то вроде 1891(3)на строку поэтому когда копируешь ему строку в его внутреннею память он ставит перенос строки.
Вот так ввёл SendMessage_(hwnd1(0),#WM_CHAR,55,0);ввод 7 где каретка,набором в цикле 3000 символов
и что то не заметил перевода(правда неизвестно сколько на самом дели их,не считать же :D )
а без горизонтального скрола зачем ?ведь надо же смотреть символы всей строки?
Впрочем лучше писать потихоньку свой гаджет чтобы не расходывать память внутри стандартного....
PS:В своём думал ограничить тоже длину строки а после в скинтиле тыр 10-20 (в пурике накопировал,сам удивился раньше вроде бы было меньше),скопировал и не стал ограничивать(это типа автоматом при наличии 0d0a отрисовывается с новой строки),попробуй на скинтиле может устроит? :roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перенос строки по словам
СообщениеДобавлено: Чт янв 03, 2019 6:59 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 957
Благодарил (а): 104 раз.
Поблагодарили: 33 раз.
Пункты репутации: 5
Сергейчик писал(а):
Гаджеты могут быть разными они я так понимаю на апи вот первый типа текста в одну строку без скрола а второй
так и написано что длинна строки ограничена что то вроде 1891(3)на строку поэтому когда копируешь ему строку в его внутреннею память он ставит перенос строки.

Так как эти режимы переключать на лету? в какой книжке написано за ограничение? мне не попалось
Сергейчик писал(а):
Вот так ввёл SendMessage_(hwnd1(0),#WM_CHAR,55,0);ввод 7 где каретка,набором в цикле 3000 символов

а что значит ввод7 где каретка?
Сергейчик писал(а):
попробуй на скинтиле может устроит?

смотрел вчера сайт нерусский, так и не понял где документ скачать по самим командам

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

а как в StringGadget() на лету добавить/удалить #ES_MULTILINE ???
пробовал SendMessage_(), ноль реакции, только при создании гаджета работает
этот гаджет работает как надо, но ненашёл как на лету переключать
удалять/создавать гаджет как то оно неправильно


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перенос строки по словам
СообщениеДобавлено: Чт янв 03, 2019 8:04 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6651
Благодарил (а): 36 раз.
Поблагодарили: 234 раз.
Пункты репутации: 65
newJS писал(а):
а как в StringGadget() на лету добавить/удалить #ES_MULTILINE ???
пробовал SendMessage_(), ноль реакции, только при создании гаджета работает
этот гаджет работает как надо, но ненашёл как на лету переключать
удалять/создавать гаджет как то оно неправильно

Если не мудрить, то всё просто.
Код:
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
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Button_0
  #String_1
  #Button_2
EndEnumeration
;}
#FlagMult = #ES_MULTILINE|#ES_AUTOVSCROLL|#ESB_DISABLE_BOTH
 
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 472, 158, 400, 400, "Window_0", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
      ButtonGadget(#Button_0, 15, 130, 155, 45, "Multi")
      StringGadget(#String_1, 15, 25, 225, 75, "text", #FlagMult)
      ButtonGadget(#Button_2, 15, 185, 155, 50, "No multi")
   
  EndIf
EndProcedure
 
OpenWindow_Window_0()
 
;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #String_1
      ElseIf EventGadget = #Button_0
           str$=GetGadgetText(#String_1)
           StringGadget(#String_1, 15, 25, 225, 75, str$, #FlagMult)
      ElseIf EventGadget = #Button_2
           str$=GetGadgetText(#String_1)
          StringGadget(#String_1, 15, 25, 225, 75, str$)
      EndIf
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;}
 


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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перенос строки по словам
СообщениеДобавлено: Чт янв 03, 2019 1:33 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1025
Благодарил (а): 2 раз.
Поблагодарили: 59 раз.
Пункты репутации: 9
newJS писал(а):
Сергейчик писал(а):
Гаджеты могут быть разными они я так понимаю на апи вот первый типа текста в одну строку без скрола а второй
так и написано что длинна строки ограничена что то вроде 1891(3)на строку поэтому когда копируешь ему строку в его внутреннею память он ставит перенос строки.

Так как эти режимы переключать на лету? в какой книжке написано за ограничение? мне не попалось
Сергейчик писал(а):
Вот так ввёл SendMessage_(hwnd1(0),#WM_CHAR,55,0);ввод 7 где каретка,набором в цикле 3000 символов

а что значит ввод7 где каретка?
Сергейчик писал(а):
попробуй на скинтиле может устроит?

смотрел вчера сайт нерусский, так и не понял где документ скачать по самим командам

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

а как в StringGadget() на лету добавить/удалить #ES_MULTILINE ???
пробовал SendMessage_(), ноль реакции, только при создании гаджета работает
этот гаджет работает как надо, но ненашёл как на лету переключать
удалять/создавать гаджет как то оно неправильно

SendMessage_(), это всего лишь сообщения калбеку окна а все константы реализуются прогером
можно стандартные использовать а можно свои мутить
гаджет этот разработки мялкомягких там и ищи все константы сообщений
SendMessage_(hwnd1(0),#WM_CHAR,55,0) это всего лишь клавиатурный ввод при нажатии клавиши идёт сообщение калбаку сообщение с #WM_CHAR ,запись в внутреннию память строки символа что в wparam в то место где моргающий курсор(каретка)
в данном случае мы программно послали сообщение с 55(цифра 7),
есть ещё SendMessage_(hwnd1(0),#WM_KEYDOWN,13,0);перевод строки.
;
Вот сейчас посмотрел константу форматирования #EM_SETTARGETDEVICE(она возможно устанавливает что то для отрисовки на лету)
SendMessage_(hwnd1(0), #EM_SETTARGETDEVICE,GetDC_(hwnd1(0)),3000)
вообщем wparam это hdc(типа контекст рисования)а после установки 3000 стали символы недоходить до края окна чуть меньше половины у них написано( lparam Ширина линии, используемая для форматирования,Если lParam равно нулю, разрывы строк не создаются) :roll:
PS:при копировании строки в гаджет если в ней есть символы перевода строки если нет констант выреза таковых
то пиши промежуточную функцию(я такую при сравнении символьного числа делал в программировании на фасме есть) :wink:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перенос строки по словам
СообщениеДобавлено: Пт янв 04, 2019 7:54 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 957
Благодарил (а): 104 раз.
Поблагодарили: 33 раз.
Пункты репутации: 5
Виталь, это ты гаджет пересоздаёшь каждый раз? а почему "старый" не удаляешь? куда старый девается?
неправильно как то это, должен быть способ удалять/добавлять константы в гаджете
пример работает, попробую в проге

Сергейчик писал(а):
SendMessage_(hwnd1(0),#WM_CHAR,55,0)

ввод с клавы мне не нужен
Сергейчик писал(а):
Вот сейчас посмотрел константу форматирования #EM_SETTARGETDEVICE(она возможно устанавливает что то для отрисовки на лету)

вообще то она для принтера и она не убивает переносы

задолбался я уже читать про всё это, яйца на шее бантиком завязать бы тому сочинителю этих описаний


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перенос строки по словам
СообщениеДобавлено: Пт янв 04, 2019 10:35 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 957
Благодарил (а): 104 раз.
Поблагодарили: 33 раз.
Пункты репутации: 5
Вобщем пересоздание гаджета создаёт нечто калеченное, мыша не работает, кликать бесполезно, если насильно активировать, то можно с клавиатуры по тексту бегать, можно весь текст увидеть, полос нет, если вывести насильно они блокированы остаются и не разблокируются
так что после пересоздания гаджет не работает, только текст показывает как надо, и всё
удаление перед пересозданием имеет нулевой результат

так что остаётся актуальным вопрос удаления добавления констант, это ж один и тот же редактор с разными константами


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

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6651
Благодарил (а): 36 раз.
Поблагодарили: 234 раз.
Пункты репутации: 65
newJS писал(а):
Вобщем пересоздание гаджета создаёт нечто калеченное, мыша не работает, кликать бесполезно

Что за система?
Ни чего подобного на Win7 x64 не наблюдается. Всё работает, и клавиши и контекстное меню, и мышка, хоть пересоздать гаджет 1000 раз. Хотя вряд ли за один сеанс в реальности кто то станет столько раз пересоздавать гаджет?
Лично я в цикле пересоздавал неоднократно по 1000 раз.
Код:
1
2
3
4
5
6
7
8
ElseIf EventGadget = #Button_0
        For i = 1 To 1000
           str$=GetGadgetText(#String_1)
           StringGadget(#String_1, 15, 25, 225, 75, str$, #FlagMult)
           str$=GetGadgetText(#String_1)
           StringGadget(#String_1, 15, 25, 225, 75, str$)
         Next
 



Более того, в конечном случае, после 5-7 тысяч реинкарнаций, не наблюдается утечка памяти, что наверно говорит о том, что старые гаджеты Бейсиком " утилизируются" на низком уровне и память подчищается.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перенос строки по словам
СообщениеДобавлено: Сб янв 05, 2019 6:14 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 957
Благодарил (а): 104 раз.
Поблагодарили: 33 раз.
Пункты репутации: 5
kvitaliy писал(а):
Что за система?

хрюндель

да пример работает, а в проге категорически отказалось, да прокрутки нет


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перенос строки по словам
СообщениеДобавлено: Сб янв 05, 2019 7:21 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6651
Благодарил (а): 36 раз.
Поблагодарили: 234 раз.
Пункты репутации: 65
newJS писал(а):
да пример работает, а в проге категорически отказалось

Встречался с таким явлением. Не конкретно этот пример, а вообще.
Бывает чистый пример работает, а в проге нет. Чаще всего удается найти компромисс, исправив код проги, надо смотреть в каждом конкретном случае.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Перенос строки по словам
СообщениеДобавлено: Вс янв 06, 2019 7:38 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 957
Благодарил (а): 104 раз.
Поблагодарили: 33 раз.
Пункты репутации: 5
Да, меня тоже такое посетило, но возвращаться и искать нет смысла из-за отсутствия скрола.
Ещё раз на этой основе попробовать пересоздавать редактор и стринг, но опять же, стринг не задуман на большие строки, нет скрола.
Или таки пробовать создать CreateWindow() с нужными константами и как то константы переключать, но это пока крутовато для меня.
Пока редактор как может так и работает. :D

P.S.
Неужели в винде не предусмотрено добавление/удаление констант? хотя тут тоже нет гарантии что все констаны отработают как надо, может оказаться что только пересоздание с нуля необходимо.


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

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6651
Благодарил (а): 36 раз.
Поблагодарили: 234 раз.
Пункты репутации: 65
Вертикальный скролл добавляется легко - #WS_VSCROLL
Если понятия не позволяют создавать каждый раз новый гаджет, то можно просто прятать один гаджет и показывать другой. HideGadget это вполне легальный приём.
Код:
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
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Button_0
  #String_1
  #Button_2
  #String_2
EndEnumeration
;}
#FlagMult =  #ES_MULTILINE|#WS_VSCROLL|#ES_AUTOVSCROLL|#ESB_DISABLE_BOTH
 ;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 472, 158, 400, 400, "Window_0", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
      ButtonGadget(#Button_0, 15, 130, 155, 45, "Multi")
      StringGadget(#String_1, 15, 25, 225, 75, "text hjkdslafhal рарш рагшцура урйаруйшгщ аура iuhfouiwehfuioewhfuiheqfh", #FlagMult)
      StringGadget(#String_2, 15, 25, 225, 75, "text hjkdslafhal рарш рагшцура урйаруйшгщ аура iuhfouiwehfuioewhfuiheqfh"): HideGadget(#String_2,1)
      ButtonGadget(#Button_2, 15, 185, 155, 50, "No multi")
   
  EndIf
EndProcedure
 
OpenWindow_Window_0()
 
;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #String_1
      ElseIf EventGadget = #Button_0
           str$=GetGadgetText(#String_2)
           HideGadget(#String_2,1)
           HideGadget(#String_1,0)
      ElseIf EventGadget = #Button_2
           str$=GetGadgetText(#String_1)
           HideGadget(#String_1,1)
           HideGadget(#String_2,0)
      EndIf
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
 


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


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

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


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

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


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

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