Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Как установить многострочность у реквизита строка? (число прочтений - 13847 )
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как установить многострочность у реквизита строка?
Ответ #15 - 10. Декабря 2012 :: 09:56
Печать  
Вообще то 1cpp и формекс никак не конфликтуют между собой.

Формекс то у тебя какой хоть версии ? И 1срр какой ?
И порядок загрузки какой у них ?
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Как установить многострочность у реквизита строка?
Ответ #16 - 10. Декабря 2012 :: 10:37
Печать  
kti писал(а) 10. Декабря 2012 :: 05:38:
Цитата:
элемент формы можно сделать видимым даже если слой, которому он принадлежит - скрыт.

Да, это я знаю, просто так было-бы красивее, написал юзер сообщение, добавилась закладка, создались элементы.. а так приходится в цикле все элементы гасить, а нужные проявлять

Цитата:
Т.е. у тебя есть 2 элемента формы типа "многострочная строка".
При активизации закладки ты присваиваешь им значения чата выбранного пользователя из аккумуляторов.
В какой-то момент (или при смене закладки или сразу после изменения) значения чата текущего пользователя записываешь во внутренные аккумуляторы.

Да, именно так! На этой закладке есть кнопка закрыть, с формулой
Код
Выбрать все
Атрибут.Формула="УдалитьЗакладку(" +НоваяЗакладка_ИД + ")"; 


при ее нажатии, слой удаляется, данные записываются (для истории), можно и не записывать..
Когда приходит сообщение, закладка создается (но не открывается), и заголовок моргает (через      ФормаРасш.ПодсветкаЗакладки(i, 0)Подмигивание

Цитата:
Собственно, слои, как таковые, даже и не нужны становятся.

в принципе, да. Можно просто кнопки наставить и управлять видимостью.



НАФИГА управлять видимостью?
Точнее даже не так - ЗАБЕЙ на множество реквизитов формы.
Тебе нужен ровно один набор для "вкладки чата" (я так понимаю, хочешь сделать что-то типо как в Квипе?).
Все, что дальше требуется - это по событию "ПриВыбореЗакладки" ассоциировать этот набор с новым текущим пользователем чата.
Собственно - лог и текущее сообщение гоняешь через аккумуляторы (юзай, например, список значений).
Кнопки работают с текущим пользователем (т.е. юзверь нажал кнопку "Хистори" - смотришь в текщую закладку, чтоб определить текщего пользователя и открываешь его историю; нажал юзверь кнопку "Отправить сообщение" - опять же, смотришь кто сейчас текущий пользователь и отправляешь сообщение ему).
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Как установить многострочность у реквизита строка?
Ответ #17 - 10. Декабря 2012 :: 10:50
Печать  
Код
Выбрать все
Перем ТекЮзер;
Перем сзЛог, сзСообщение;

Процедура ПриВыбореЗакладки(Номер,Значение)
    сзЛог.Установить(ТекЮзер, ТекстЛога);
    сзСообщение.Установить(ТекЮзер, ТекстСообщения);

    ТекЮзер = Значение;
    ТекстЛога = сзЛог.Получить(ТекЮзер);
    ТекстСообщения = сзСообщения.Получить(ТекЮзер);
КонецПроцедуры

Процедура ЗакрытьВкладку()
    сзЗакладки = Форма.Закладки;
    НомерЗакладки = сзЗакладки.НайтиЗначение(ТекЮзер);
    Если НомерЗакладки > 0 Тогда //паранойа
	  сзЗакладки.УдалитьЗначение(НомерЗакладки);
	  // если нужно - удаляем лог и сообщение из аккумуляторов
	  Если сзЗакладки.РазмерСписка() = 0 Тогда
		Форма.Закрыть();
	  Иначе
		НомерЗакладки = Макс(1, НомерЗакладки - 1);
		сзЗакладки.ТекущаяСтрока(НомерЗакладки);
		ПриВыбореЗакладки(НомерЗакладки, сзЗакладки.ПолучитьЗначение(НомерЗакладки));
	  КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Процедура ОтправитьСообщение() // обработчик кнопки Отправить
    ОтправитьСообщениеПользователю(ТекЮзер, ТекстСообщения);
    ТекстЛога = ТекстЛога + "
    |>> " + ТекстСообщения;
КонецПроцедуры 

  
Наверх
 
IP записан
 
kti
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 06. Декабря 2012
Re: Как установить многострочность у реквизита строка?
Ответ #18 - 10. Декабря 2012 :: 13:13
Печать  
Да, так будет проще (использовать один набор элементов), придется переделывать обработку.. а то я уже нагородил огород (20 memo, 20 кнопок) все в цикле включается/выключается..

Если я правильно понял: ТекстЛога и ТекстСообщения - это и есть поля ввода (типа многострочный)?
Наверное все-равно в процудуре ПриВыбореЗакладки(Номер,Значение) придется их каждый раз включать, а иначе как они появятся.. Нерешительный

Для полноты картины у вас не хватает ДобавитьЗакладку(ТекЮзер, ТекстСообщения);
буду осиливать, спасибо
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Как установить многострочность у реквизита строка?
Ответ #19 - 11. Декабря 2012 :: 02:34
Печать  
kti писал(а) 10. Декабря 2012 :: 13:13:
Если я правильно понял: ТекстЛога и ТекстСообщения - это и есть поля ввода (типа многострочный)?

Да, это элементы формы (поле ввода, тип - строка, многострочная)

Цитата:
Наверное все-равно в процудуре ПриВыбореЗакладки(Номер,Значение) придется их каждый раз включать, а иначе как они появятся.. Нерешительный

А что мешает держать их ВСЕГДА видимыми? Или я тебя не понимаю.


Цитата:
Для полноты картины у вас не хватает ДобавитьЗакладку(ТекЮзер, ТекстСообщения);

Ну, я тебе дал мысль для развития. Полного кода от меня ты все-равно не получишь, хотя бы потому, что я не знаю всей полноты задачи.

  
Наверх
 
IP записан
 
kti
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 06. Декабря 2012
Re: Как установить многострочность у реквизита строка?
Ответ #20 - 11. Декабря 2012 :: 05:30
Печать  
Цитата:
А что мешает держать их ВСЕГДА видимыми? Или я тебя не понимаю.

Все правильно, в Вашем варианте они всегда видимые, у меня еще есть первая закладка (со списком пользователей)
Обработку переделал, пока все устраивает, спасибо за идею  Очень довольный

Попутный вопросик (не относящийся к теме), как лучше обмениваться информацией между базами. Т.е. хочу чтобы одна база опрашивала сервер на предмет новых сообщений, а обработка у каждого юзера эти данные обрабатывала (т.е. выводила).
Опрос будет где-то раз в секунду, через файловый обмен как-то не камильфо, OLE тоже
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как установить многострочность у реквизита строка?
Ответ #21 - 11. Декабря 2012 :: 05:34
Печать  
Смотри в сторону нетаинет
(там же есть пример чата)
http://www.rikcenter.ru/downloads.php
  
Наверх
 
IP записан
 
kti
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 06. Декабря 2012
Re: Как установить многострочность у реквизита строка?
Ответ #22 - 12. Декабря 2012 :: 02:51
Печать  
Цитата:
Смотри в сторону нетаинет

в принципе то что нужно, спасибо
только не пойму, библиотека бесплатна?
и как она будет работать если IP сервера и клиента совпадают? (на терминале)
насколько она стабильна, кто-нибудь юзал?
чат с пользователями сайта, будет работать сутками, и не хотелось-бы наблюдать вылеты 1с
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Как установить многострочность у реквизита строка?
Ответ #23 - 12. Декабря 2012 :: 03:26
Печать  
Компонента бесплатна.
Внутри одного IP оно работает точно так же, как и все остальные - путём разделения по номеру порта. Разводить порты - это уже твоя головная боль.
Стабильность нормальная. У нас круглосуточно работал робот обмена, и не помню чтобы он вылетал из-за компоненты.
  
Наверх
 
IP записан
 
kti
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 06. Декабря 2012
Re: Как установить многострочность у реквизита строка?
Ответ #24 - 12. Декабря 2012 :: 06:23
Печать  
Понял, спасибо, будем реализовывать..
только я не понял, какие могут быть заморочки с портом
создаем сервер
СоздатьСервер(<НомерПорта>);

потом работа сервера с клиентом происходит по этому порту
у клиента порта вообще нет, он его находит как-то сам (по ИдСоединения)
или я что-то непонимаю  Нерешительный

еще один момент: процедуры обработки должны быть в глобальном модуле, т.е. полностью внешний отчет не получится сделать? (хотя бы на стороне клиента)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как установить многострочность у реквизита строка?
Ответ #25 - 12. Декабря 2012 :: 06:45
Печать  
делай доп глобальник - будут в глобальнике
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Как установить многострочность у реквизита строка?
Ответ #26 - 12. Декабря 2012 :: 14:01
Печать  
Если сервер у тебя только один - то никаких заморочек. Если же каждый клиент чата является IP-сервером (а это вполне нормально), то надо каждому порты как-то назначать.
  
Наверх
 
IP записан
 
Leonid
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Местоположение: Nikopol (Ukraine)
Зарегистрирован: 05. Мая 2019
Пол: Мужской
Re: Как установить многострочность у реквизита строка?
Ответ #27 - 05. Мая 2019 :: 19:29
Печать  
Здравствуйте.
Допиливаю конфу для 1С7.7 ТиС 032 для медучреждения. Есть документы, содержащие реквизиты типа Строка с длиной 300 -500 символов. Это типа результаты исследований. Ввод текста (точнее его варианты на выбор) в эти реквизиты делаю через элементы справочника. В этом механизме все в порядке и работает как надо. Но в в дальнейшем, когда уже выбран вариант текста, пытаюсь его получить в отдельном окне для его возможного редактирования через:

Код
Выбрать все
Процедура ВводПоля(РеквизитДокумента)   // РеквизитДокумента передается в процедуру
    Перем Инф;
    Инф= РеквизитДокумента;
    Если ВвестиСтроку(Инф, "Введите значение ", 999, 1,) = 1 Тогда
        РеквизитДокумента = Инф;
    Иначе
        Возврат;
    КонецЕсли;
КонецПроцедуры 


Но в этом окне текст все равно в одну строку и работать с такой длиной очень неудобно, также как и в окне ввода реквизита на форме.
Подскажите, как получить многострочное отображение содержимого реквизита на форме.
  
Наверх
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как установить многострочность у реквизита строка?
Ответ #28 - 06. Мая 2019 :: 06:47
Печать  
Вместо ВвестиСтроку сделать обработку с тестовым реквизитом на форме с установленным флагом многострочности.
  

FormEx developer
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Как установить многострочность у реквизита строка?
Ответ #29 - 06. Мая 2019 :: 08:24
Печать  
Сделай так:

Код
Выбрать все
ВвестиСтроку(Инф, "Введите значение ", 0, 1,) 



  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать