Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Поле ввода (многострочный) (число прочтений - 5318 )
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Поле ввода (многострочный)
30. Марта 2019 :: 19:18
Печать  
То-ли где-то читал, то-ли померещилось, но встала необходимость показать текст с
с выделенными словами. Жирностью или цветом (не имеет значения). Поможете?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #1 - 31. Марта 2019 :: 16:07
Печать  
Расширения для "Поле ввода" не было, но нынче АктивХ`ов бесплатных и достаточно качественных все прибавляется и прибавляется, а с 1с++ мы с ними работать можем.

VXLib очень достойный кандидат на изучение.

А тут вообще титаническая работа была сделана: http://www.vbforums.com/showthread.php?698563-CommonControls-(Replacement-of-the...)
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #2 - 31. Марта 2019 :: 17:43
Печать  
Djelf писал(а) 31. Марта 2019 :: 16:07:
Расширения для "Поле ввода" не было, но нынче АктивХ`ов бесплатных и достаточно качественных все прибавляется и прибавляется, а с 1с++ мы с ними работать можем.

VXLib очень достойный кандидат на изучение.

А тут вообще титаническая работа была сделана: http://www.vbforums.com/showthread.php?698563-CommonControls-(Replacement-of-the...)


Заинтересовал. Спасибо. Если бы еще ссылочку на готовый примерчик... Круглые глаза
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #3 - 01. Апреля 2019 :: 06:34
Печать  
Ну, с VXPLib я тебя слегка обманул, это не полноценный ЭУ, его надо видимо dynwrap`ом тыкать. На нем Robert RToolTips делал: https://infostart.ru/public/15212/

А с заменой ms`овского лицензионного контрола все просто.
Берем с гихаба весь архив https://github.com/Kr00l/VBCCR, вытаскиваем \VBCCR-master.zip\VBCCR-master\ActiveX Control Version\Bin\VBCCR16.OCX, regsvr32 и все.

Код (C++)
Выбрать все
Перем RichTextBox; //:VBCCR16.RichTextBox
Процедура Сформировать()
	оФорма = СоздатьОбъект("Форма");
	ТекстБокс = оФорма.СоздатьЭлементУправленияНаФорме(Форма, "АктивИкс", "ИдКнопки");
	ТекстБокс.СоздатьЭУ("VBCCR16.RichTextBox");
	Объект = ТекстБокс.Объект;
	Объект.SelRTF = "{\rtf1
	| Привет!
	| \par
	| {\i Это} некий
	| отформатированный {\b текст}.\par
	|}";
КонецПроцедуры
 



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


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #4 - 01. Апреля 2019 :: 06:46
Печать  
Вот еще кучка, относительно недавно ставших бесплатными контролов https://www.timosoft-software.de/screenshots/
Их создавать примерно так надо TBarCtlsA.ToolBar
Но чтобы были все плюшки от этих контролов нужно манифест к 1C`на  ComCtl32.dll v.6 делать.
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #5 - 01. Апреля 2019 :: 11:31
Печать  
Djelf писал(а) 01. Апреля 2019 :: 06:46:
... Но чтобы были все плюшки от этих контролов нужно манифест к 1C`на  ComCtl32.dll v.6 делать.


Класс! Не подскажешь как в 1с реализовать манифест?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #6 - 01. Апреля 2019 :: 11:47
Печать  
recop писал(а) 01. Апреля 2019 :: 11:31:
Djelf писал(а) 01. Апреля 2019 :: 06:46:
... Но чтобы были все плюшки от этих контролов нужно манифест к 1C`на  ComCtl32.dll v.6 делать.


Класс! Не подскажешь как в 1с реализовать манифест?


Манифест не сложно.
1cv7l.exe.manifest в папку бин, для 1cv7l.exe или можно редактором ресурсов внутрь exe засунуть.
Конфигуратор не используй на такой версии!!!
Будет отличие в формате хранения компаунда, т.е. если перейти на ComCtl32.dll v.6 и изменить обработку - старый ComCtl32.dll может ее не открыть (напишет неверный формат файла).

Код (C++)
Выбрать все
  <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
- <dependency>
- <dependentAssembly>
  <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
  </dependentAssembly>
  </dependency>
- <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
- <application>
  <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
  <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
  </application>
  </compatibility>
  </assembly>
 

  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #7 - 01. Апреля 2019 :: 11:57
Печать  
Я так понимаю, что ты выложил содержание файла 1cv7l.exe.manifest? Если так, то кодировка win или dos? И ComCtl32.dll v.6 есть в системе или его качать?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #8 - 01. Апреля 2019 :: 12:09
Печать  
recop писал(а) 01. Апреля 2019 :: 11:57:
Я так понимаю, что ты выложил содержание файла 1cv7l.exe.manifest? Если так, то кодировка win или dos? И ComCtl32.dll v.6 есть в системе или его качать?

Да хоть в кои-8! Русских букв то нет...

А версию уже сам смотри https://docs.microsoft.com/en-us/windows/desktop/controls/common-control-version...

  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #9 - 01. Апреля 2019 :: 12:11
Печать  
Т.е. 6.10 уже не подойдёт?

Код
Выбрать все
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.1.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
 

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


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #10 - 01. Апреля 2019 :: 12:19
Печать  
Я с этим сильно не экспериментировал т.к. не все контролы меняют внешний вид и получается зоопарк стилей в форме.
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #11 - 01. Апреля 2019 :: 13:41
Печать  
Djelf писал(а) 01. Апреля 2019 :: 12:19:
Я с этим сильно не экспериментировал т.к. не все контролы меняют внешний вид и получается зоопарк стилей (Смех) в форме.

Ты же сам говорил, что некоторые контролы они сами рисуют. Если эксперимент остался сбрось в личку пожалуйста. Всё равно у меня почти всё заменено, но... накопил в глобальном модуле, теперь выковыриваю потихоньку Улыбка
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #12 - 01. Апреля 2019 :: 13:46
Печать  
recop писал(а) 01. Апреля 2019 :: 13:41:
Djelf писал(а) 01. Апреля 2019 :: 12:19:
Я с этим сильно не экспериментировал т.к. не все контролы меняют внешний вид и получается зоопарк стилей (Смех) в форме.

Ты же сам говорил, что некоторые контролы они сами рисуют.


Да, сами рисуют, вот поэтому у них стиль и не меняется, а например у списка значений на форме - меняется.
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #13 - 01. Апреля 2019 :: 20:21
Печать  
Немного поизгалялся над формой список значений, как раз, был бы кстати...

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


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #14 - 02. Апреля 2019 :: 09:42
Печать  
Хм, я вспомнил что где то видел недостающий элемент...
В TomoSoft`е и видел!

ButtonControls https://www.timosoft-software.de/downloads/buttoncontrols/
XVPLib http://vxplib.sourceforge.net

Код (C++)
Выбрать все
Перем CommandButton; //:BtnCtlsA.CommandButton

Процедура CommandButton_OwnerDraw(action,state,hdc,rect)
	VXPQuickHTML=СоздатьОбъект("VXPLib.VXPQuickHTML");
	VXPQuickHTML.SetSourceText("
	|<body bgcolor=black gfc=red grad=vert>
	|<txt align=center>
	|<font color=white size=12>Форматирование текста
	|<hr color=blue width=60 align=center>
	|<b>bold </b><i>italic </i><u>underline </u><s>stricke </s></font>
	|</txt><br>");
	VXPQuickHTML.Draw(hdc,0,0);
КонецПроцедуры

Процедура Сформировать()
	ТекФорма = СоздатьОбъект("Форма");
	АктивИкс = ТекФорма.СоздатьЭлементУправленияНаФорме(Форма, "АктивИкс", "CommandButton");
	АктивИкс.СоздатьЭУ("BtnCtlsA.CommandButton");
	CommandButton=АктивИкс.Объект;
	CommandButton.Style=2; //sOwnerDrawn
КонецПроцедуры //Сформировать
 



  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #15 - 02. Апреля 2019 :: 16:45
Печать  
А почему OLE-объект АктивИкса дергается при движении над ним курсора мыши?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #16 - 03. Апреля 2019 :: 06:31
Печать  
recop писал(а) 02. Апреля 2019 :: 16:45:
А почему OLE-объект АктивИкса дергается при движении над ним курсора мыши?


Там же эвенты еще навешаны, Enabled=0 отключит ввод в элемент и дергаться перестанет.
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #17 - 03. Апреля 2019 :: 09:18
Печать  
Djelf писал(а) 01. Апреля 2019 :: 13:46:
Да, сами рисуют, вот поэтому у них стиль и не меняется, а например у списка значений на форме - меняется.


У меня два вида не закрытых атрибутов список с пометками и кнопка. Как бы решить Круглые глаза
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #18 - 03. Апреля 2019 :: 15:14
Печать  
А что решать то? Кнопки ты сам уже рисуешь, а список значений легко имитируется табличным полем, можно даже ПоставщикДанныхСЗ нарисовать, это не сложно.
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #19 - 03. Апреля 2019 :: 16:46
Печать  
Тут вопрос возник: перетащить форму без заголовка (за назначенный атрибут или ещё как). На просторах примирительно к 1с не нашёл. Может не там искал?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #20 - 04. Апреля 2019 :: 07:13
Печать  
recop писал(а) 03. Апреля 2019 :: 16:46:
Тут вопрос возник: перетащить форму без заголовка (за назначенный атрибут или ещё как). На просторах примирительно к 1с не нашёл. Может не там искал?


А в чем проблема то? АЛьФ починил Окна.ПоложениеОкна.

Записываешь координаты первоначального нажатия в ПриНажатииЛевойКнопки и сбрасываешь их в 0 в ПриОтжатииЛевойКнопки, а в ПриДвиженииМыши двигаешь форму объектом Окна на дельту от текущей и записанной координаты.
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #21 - 04. Апреля 2019 :: 18:30
Печать  
Даже не догадался... Djelf, дорогой, чтоб я без тебя делал? Улыбка Спасибо.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #22 - 05. Апреля 2019 :: 06:33
Печать  
[quote author=032D222B21470 link=1553973526/20#20 date=1554362016 [/quote]
ПриОтжатииЛевойКнопки сработает если отжали за пределами окна приложения?
  

1&&2&&3
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #23 - 05. Апреля 2019 :: 06:58
Печать  
trad писал(а) 05. Апреля 2019 :: 06:33:
ПриОтжатииЛевойКнопки сработает если отжали за пределами окна приложения?


Кончено нет.  Идеально не получится, метода ПриПокиданииМышкойФормы (MouseLeave) нет, т.е. при резком движении мышью можно уйти с перетаскиваемой формы. Не думаю что это типичное поведение пользователя.
Ну можно в глобальник засунуть обработку, тогда будет надежнее.
Или прикрутить любой ActivX от TimoSoft, в них есть методы MouseLeave и MouseHover.
  
Наверх
www  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #24 - 07. Апреля 2019 :: 09:53
Печать  
trad писал(а) 05. Апреля 2019 :: 06:33:
ПриОтжатииЛевойКнопки сработает если отжали за пределами окна приложения?


Срабатывает.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #25 - 08. Апреля 2019 :: 06:42
Печать  
Чудо!
  

1&&2&&3
Наверх
 
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Поле ввода (многострочный)
Ответ #26 - 09. Апреля 2019 :: 18:53
Печать  
Никакого чуда. В аспекте обсуждаемого вопроса: перемещение формы. Курсор перемещая форму всегда остается в пределах формы, даже в случае выхода модальной формы за пределы (такое 1с77 допускает) основного приложения.
Но вопрос перемещения формы без заголовка, все равно оказался дохлым. Т.к. при использовании любого диалогового окна, при лишнем клике, легко возникает ситуация, когда форма вопроса или предупреждения попадает под вызвавшую её форму модального типа. И всё, вернуть диалог на поверхность вызывающей формы можно только щелкнув по заголовку окна, которого нет. Ctrl+Alt+Del - это всё, что может помочь в подобной ситуации. Печаль
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать