Цвет шрифта поля ввода (строка неограниченной длины) на форме - ?

Автор MWW_Ruza, 14 июня 2025, 10:48

« назад - далее »

MWW_Ruza

Добрый день...
Что-то я затупил...
Вроде-как есть метод...
Когда-то, 100 лет назад, даже на мисте обсуждалось:
https://forum.mista.ru/topic.php?id=360721
Но, что-то не получается... Такой код, по сути, из документации:

АтрФормы = СоздатьОбъект("АтрибутФормы");
АтрФормы.УстановитьАтрибут(Форма,"СформСтрока39");
АтрФормы.ЦветШрифта= 255;

Пробовал вставлять и в ПриОткрытиии(), и в ПослеОткрытия(), и в то место, где эта строка непосредственно выводится - бесполезно...

Делал и так, нашел где-то на 1срр:

Сервис = СоздатьОбъект("Сервис");
ФормаРасш = СоздатьОбъект("РасширениеФормы");
ФормаРасш.УстановитьФорму(Форма);
ФормаРасш.ПолучитьАтрибут("СформСтрока39").ЦветШрифта = 255;

Как-то вариант не совсем из документации, но вдруг...
Но, нет, все то-же самое.

Ошибок нет, но и шрифт остается черным...
Это вообще работает? Если да, то, что я не так делаю?

 

MWW_Ruza

Вот такая "бяка":

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

Злоп

я сомневаюсь, что недоступное после ввода можно покрасит текст.
Для пробы покраску делал бы после того как форма отобразится на экране, через ОО.
А если так не получится - ну сделать доступное поле ввода на форме и пихать туда комментарий..?

MWW_Ruza

Цитата: Злоп от 14 июня 2025, 17:32я сомневаюсь, что недоступное после ввода можно покрасит текст.
Сереж, это чуть ли не первое, что мне пришло в голову...
Естественно, я попробовал. Че-там, одну "галочку" снять...
Как был текст в поле ввода черный, так и остался...

Сейчас, немного разгребу текучку, сделаю демо обработку, отдельную, со всеми моими "мудовыми рыданиями"...

MWW_Ruza

Вот... Подразумевается, что ФормЕкс грузится в конфе в ГМ ПриНачалеРаботыСистемы.
Все "эксперименты" там... Закомментированы. Поле ввода доступно.
Пробовал на версии ФормЕкс 199.

vladmenleo

Не работает именно с многострочным текстом. Если убрать галку многострочности, то работает. Formex 190

MWW_Ruza


vladmenleo

А можно вот так изгольнуться. Кидаем на форму простой текст о копируем по правой кнопке в буфер обмена
Процедура ПослеОткрытия()
	ПробСтр = "Мой дядя самых скверных правил, в нетрезвом виде Волгой правил... На тормоза нажать не смог, теперь не в шутку занемог! :-)";
	Сервис = СоздатьОбъект("Сервис");
	ФормаРасш = СоздатьОбъект("РасширениеФормы");
	ФормаРасш.УстановитьФорму(Форма); 
//	ФормаРасш.ПолучитьАтрибут("ПробСтр").ЦветШрифта = 255;
	
	РаскрАтр	= ФормаРасш.ПолучитьАтрибут("ПробСтр");
	РаскрАтр.ЦветШрифта	= 255;
	// ПробСтр1 Реквизит типа текст на форме
	Форма.ПробСтр1.Заголовок("Будем копировать в буфер обмена " + ПробСтр);
	Форма.ПробСтр1.Цвет(0,0,255); // Цвет стандартным методом
	Форма.Обновить();
//	РаскрАтр.ЦветФона	= 255;	// Так вообще вышибает 1С при интерактивной попытке ввода текста в поле. Фон - белый.
	
	//Попытка
	//	АтрФормы = СоздатьОбъект("АтрибутФормы");
	//Исключение
	//	Предупреждение("Недоступен FormEx!");
	//	СтатусВозврата(0);
	//	Возврат;
	//КонецПопытки;
	//АтрФормы.УстановитьАтрибут(Форма,"ПробСтр");
	//АтрФормы.ЦветШрифта = 255;
//	ПробСтр = "Мой дядя самых скверных правил, в нетрезвом виде Волгой правил... На тормоза нажать не смог, теперь не в шутку занемог! :-)";
//	РаскрАтр.Значение = "Мой дядя самых скверных правил, в нетрезвом виде Волгой правил... На тормоза нажать не смог, теперь не в шутку занемог! :-)";
КонецПроцедуры

Процедура Сформировать()
 	ПробСтр = "Мой дядя самых скверных правил, в нетрезвом виде Волгой правил... На тормоза нажать не смог, теперь не в шутку занемог! :-)";   
КонецПроцедуры

Процедура ПриДвиженииМыши(сост, х, у)
	Атр = ФормаРасш.ПолучитьАтрибутПоКоординатам(х,у);
	Если ТипЗначенияСтр(Атр) = "АтрибутФормы" Тогда
		Если Атр.Идентификатор = "ПробСтр1" Тогда
			Атр.УстановитьКурсор(14); // 14 - рука
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Процедура ПриНажатииПравойКнопки(сост, х, у, ФСО)
	Атр = ФормаРасш.ПолучитьАтрибутПоКоординатам(х,у);
	Если ТипЗначенияСтр(Атр) = "АтрибутФормы" Тогда
		Если Атр.Идентификатор = "ПробСтр1" Тогда
			ФСО = 0;
			Буфер = СоздатьОбъект("БуферОбмена");
			Буфер.Установить(Атр.Заголовок);
			Сообщить("Атрибут скопирован в буфер обмена");
			СтрокаИзБуфера = Буфер.Получить();
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Злоп

Что-то совсем не въехал... Это раскраска шрифта многострочного поля ввода?

vladmenleo

Цитата: Злоп от 17 июня 2025, 11:21Это раскраска шрифта многострочного поля ввода
Нет, это раскраска текстового поля и копирование его в буфер обмена, что в-общем-то и хотел ТС

MWW_Ruza

Да не хотел я этого... Просто обосновал, почему поле ввода а не текст на форме. По сути, пофик. Просто вылезло, что шрифт не красится в нем, решил спросить почему :-)

MWW_Ruza

Опять же, в этом примере, как я понял, копируется в буфер все текстовое поле, а я хотел, выделять мышкой нужные фрагменты строки, и копировать только их. Поэтому поле ввода.

vladmenleo

Ну извиняйте. Если в многострочном поле вводе текст не красится, то это наверно к Альфу, чтобы починил баго-фичу

Злоп

Цитата: MWW_Ruza от 17 июня 2025, 11:46Опять же, в этом примере, как я понял, копируется в буфер все текстовое поле, а я хотел, выделять мышкой нужные фрагменты строки, и копировать только их. Поэтому поле ввода.
разбей текст на слова по пробелам и кинь в ТЗ на форму - клик по строке - скопировать в буфер. клик еще раз на другом слове - замещает ранее. или даже возможен режим добавления в буфер. всяко быстрее будет чем выделять мышкой в тексте.

MWW_Ruza

Да уж...

Не нужно мне это вообще... Ну, не та задача, от слова совсем.
То, что может потребоваться изменить, меняется в форрме редактирования строки... Соответственно там все эти поля есть. Можно спокойно скопипастить, без каких-то проблем.
Просто захотел лишнюю "красивость" навести, и обнаружил, что заявленный метод FormEx не работает... Стало интересно почему, может в других ситуациях пригодится... Думал сам туплю чего-то, а тут оказывается - БагоФича...
Алексею на заметку, если он еще совсем не забросил проект.