mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 05:04:11 +00:00
262 lines
13 KiB
Plaintext
262 lines
13 KiB
Plaintext
Перем _РедакторHTML; // Кэш
|
||
|
||
Функция РедакторHTML() Экспорт
|
||
Если Истина
|
||
И _РедакторHTML = Неопределено
|
||
И ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента")
|
||
Тогда
|
||
_РедакторHTML = ЭлементФормы.Документ.defaultView;
|
||
Если _РедакторHTML <> Неопределено И Не ЗначениеЗаполнено(_РедакторHTML.version1C) Тогда
|
||
_РедакторHTML = Неопределено;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Возврат _РедакторHTML;
|
||
КонецФункции
|
||
|
||
Процедура УстановитьГраницыВыделения(НачальнаяСтрокаИлиПозиция, НачальнаяКолонкаИлиКонечнаяПозиция, КонечнаяСтрока = Неопределено, КонечнаяКолонка = Неопределено) Экспорт
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
Если КонечнаяСтрока = Неопределено Тогда
|
||
РедакторHTML.setSelectionByLength(НачальнаяСтрокаИлиПозиция, НачальнаяКолонкаИлиКонечнаяПозиция);
|
||
Иначе
|
||
РедакторHTML.setSelection(НачальнаяСтрокаИлиПозиция, НачальнаяКолонкаИлиКонечнаяПозиция, КонечнаяСтрока, КонечнаяКолонка);
|
||
КонецЕсли;
|
||
Иначе
|
||
Если КонечнаяСтрока = Неопределено Тогда
|
||
ЭлементФормы.УстановитьГраницыВыделения(НачальнаяСтрокаИлиПозиция, НачальнаяКолонкаИлиКонечнаяПозиция);
|
||
Иначе
|
||
ЭлементФормы.УстановитьГраницыВыделения(НачальнаяСтрокаИлиПозиция, НачальнаяКолонкаИлиКонечнаяПозиция, КонечнаяСтрока, КонечнаяКолонка);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПолучитьГраницыВыделения(НачальнаяСтрока, НачальнаяКолонка, КонечнаяСтрока, КонечнаяКолонка) Экспорт
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ВыделениеТекста = РедакторHTML.getSelection();
|
||
НачальнаяСтрока = ВыделениеТекста.startLineNumber;
|
||
НачальнаяКолонка = ВыделениеТекста.startColumn;
|
||
КонечнаяСтрока = ВыделениеТекста.endLineNumber;
|
||
КонечнаяКолонка = ВыделениеТекста.endColumn;
|
||
Иначе
|
||
ЭлементФормы.ПолучитьГраницыВыделения(НачальнаяСтрока, НачальнаяКолонка, КонечнаяСтрока, КонечнаяКолонка);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ПолучитьТекст() Экспорт
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
Текст = РедакторHTML.getText();
|
||
ИначеЕсли ТипЗнч(ЭлементФормы) = Тип("ПолеВвода") Тогда
|
||
Текст = ЭлементФормы.Значение;
|
||
Иначе
|
||
Текст = ЭлементФормы.ПолучитьТекст();
|
||
КонецЕсли;
|
||
Возврат Текст;
|
||
|
||
КонецФункции
|
||
|
||
Функция УстановитьТекст(Текст, Активировать = Ложь) Экспорт
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
РедакторHTML.updateText(Текст);
|
||
Если Активировать Тогда
|
||
РедакторHTML.editor.focus();
|
||
КонецЕсли;
|
||
ИначеЕсли ТипЗнч(ЭлементФормы) = Тип("ПолеВвода") Тогда
|
||
ЭлементФормы.Значение = Текст;
|
||
Иначе
|
||
ЭлементФормы.УстановитьТекст(Текст);
|
||
КонецЕсли;
|
||
Возврат Истина;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПолучитьСтроку(НомерСтроки) Экспорт
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
Текст = РедакторHTML.getLineContent(НомерСтроки);
|
||
Иначе
|
||
Текст = ЭлементФормы.ПолучитьСтроку(НомерСтроки);
|
||
КонецЕсли;
|
||
Возврат Текст;
|
||
|
||
КонецФункции
|
||
|
||
Функция КоличествоСтрок() Экспорт
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
Текст = РедакторHTML.getLineCount();
|
||
Иначе
|
||
Текст = ЭлементФормы.КоличествоСтрок();
|
||
КонецЕсли;
|
||
Возврат Текст;
|
||
|
||
КонецФункции
|
||
|
||
Функция ВыделенныйТекст(НовыйТекст = Неопределено) Экспорт
|
||
|
||
Перем НачальнаяСтрока, НачальнаяКолонка, КонечнаяСтрока, КонечнаяКолонка;
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
Если НовыйТекст = Неопределено Тогда
|
||
Результат = РедакторHTML.selectedText();
|
||
Иначе
|
||
РедакторHTML.selectedText(НовыйТекст);
|
||
// https://github.com/salexdv/bsl_console/issues/64#issue-873784658
|
||
ПолучитьГраницыВыделения(НачальнаяСтрока, НачальнаяКолонка, КонечнаяСтрока, КонечнаяКолонка);
|
||
УстановитьГраницыВыделения(КонечнаяСтрока, КонечнаяКолонка, КонечнаяСтрока, КонечнаяКолонка);
|
||
КонецЕсли;
|
||
Иначе
|
||
Если НовыйТекст = Неопределено Тогда
|
||
Результат = ЭлементФормы.ВыделенныйТекст;
|
||
Иначе
|
||
ЭлементФормы.ВыделенныйТекст = НовыйТекст;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ТолькоПросмотр(НовыйРежим = Неопределено) Экспорт
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
Если НовыйРежим = Неопределено Тогда
|
||
Результат = РедакторHTML.ReadOnly;
|
||
Иначе
|
||
РедакторHTML.setReadOnly(НовыйРежим);
|
||
КонецЕсли;
|
||
Иначе
|
||
Если НовыйРежим = Неопределено Тогда
|
||
Результат = ЭлементФормы.ТолькоПросмотр;
|
||
Иначе
|
||
ЭлементФормы.ТолькоПросмотр = НовыйРежим;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗаменитьСтроку(НомерСтроки, Текст) Экспорт
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
РедакторHTML.setLineContent(НомерСтроки, Текст); // https://github.com/salexdv/bsl_console/issues/90
|
||
//УстановитьГраницыВыделения(НомерСтроки, 1 , НомерСтроки, СтрДлина(ПолучитьСтроку(НомерСтроки)) + 1);
|
||
//ВыделенныйТекст(Текст);
|
||
Иначе
|
||
ЭлементФормы.ЗаменитьСтроку(НомерСтроки, Текст);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ВставитьСтроку(НомерСтроки, Текст) Экспорт
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
РедакторHTML.insertLine(НомерСтроки, Текст); // Не реализован
|
||
Иначе
|
||
ЭлементФормы.ВставитьСтроку(НомерСтроки, Текст);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ДобавитьСтроку(Текст) Экспорт
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ДлинаТекста = СтрДлина(ПолучитьТекст());
|
||
РедакторHTML.setText(Символы.ПС + Текст, ДлинаТекста);
|
||
Иначе
|
||
ЭлементФормы.ДобавитьСтроку(Текст);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура Очистить() Экспорт
|
||
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
РедакторHTML.eraseText();
|
||
Иначе
|
||
ЭлементФормы.Очистить();
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПоказатьОшибку(НомерСтроки, НомерКолонки = 1) Экспорт
|
||
Если ТипЗнч(ЭлементФормы) = Тип("ПолеHTMLДокумента") Тогда
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
РедакторHTML.markError(НомерСтроки, НомерКолонки);
|
||
Иначе
|
||
ЭлементФормы.УстановитьГраницыВыделения(НомерСтроки, 1, НомерСтроки, 150);
|
||
КонецЕсли;
|
||
КонецПроцедуры
|
||
|
||
Процедура ПолучитьПозициюКаретки(ВКОбщая, Форма, Панель) Экспорт
|
||
|
||
РедакторHTML = РедакторHTML();
|
||
Если РедакторHTML <> Неопределено Тогда
|
||
Координаты = РедакторHTML.getPositionOffset();
|
||
ВременноеПолеВвода = Форма.ЭлементыФормы.Добавить(Тип("ПолеВвода"), "ыва3т5е4е", Истина, Панель);
|
||
ВременноеПолеВвода.Лево = 0;
|
||
ВременноеПолеВвода.Верх = 0;
|
||
ВременноеПолеВвода.Высота = 20;
|
||
ВременноеПолеВвода.Ширина = 1;
|
||
Форма.ТекущийЭлемент = ВременноеПолеВвода;
|
||
ВКОбщая.ПолучитьПозициюКаретки(Координаты.left, Координаты.top + 8);
|
||
Форма.ЭлементыФормы.Удалить(ВременноеПолеВвода);
|
||
Иначе
|
||
ВКОбщая.ПолучитьПозициюКаретки(0, 0);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры |