Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Scintilla ActiveX Control (число прочтений - 10411 )
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Scintilla ActiveX Control
18. Июля 2008 :: 16:18
Печать  
Пример использования текстового редактора Scintilla в качестве активикс контрола.
В архиве находится ert и ScintillaCtrl.ocx (www.scintilla.org/axsci.zip) который я немного доработал.
SciLexer.dll брать из комплекта колорера. Чтобы работало в режиме "предприятие", SciLexer.dll должен лежать в КаталогеПрограммы.
« Последняя редакция: 22. Июля 2008 :: 13:42 - metaeditor »  

ScintillaAxCtrl.zip ( 49 KB | Загрузки )

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #1 - 18. Июля 2008 :: 16:31
Печать  
у, шайтан. А эвентов как в 1С-ном редакторе нету случаем, что-бы SQLIntel встроить?
А то так зае... достал этот тупое 1С-ное поле редактирования текста....
  
Наверх
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #2 - 18. Июля 2008 :: 16:46
Печать  
скажи какие нужны события, может и смогу их добавить...
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #3 - 18. Июля 2008 :: 17:02
Печать  
Спасибки! Еще чуть чуть и будет миниСап Улыбка
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #4 - 18. Июля 2008 :: 17:22
Печать  
trdm писал(а) 18. Июля 2008 :: 16:31:
у, шайтан. А эвентов как в 1С-ном редакторе нету случаем, что-бы SQLIntel встроить?

я тут подумал... +100! и про шайтана и про события Улыбка


а можно ли таким образом будет поправить обработку прямо из предприятия? Улыбка
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #5 - 19. Июля 2008 :: 11:26
Печать  
добавил метод LoadFromFile()
исправил вылет при открытии больших модулей, оказывается весь этот текст передавался параметром в событие Modified, что приводило к stack overflow, три часа убил на поиски.

есть одна проблема, пока нельзя получить текст из редактора, есть метод GetText в который надо передавать подготовленный буфер, но ни через 1с ни через скриптКонтрол неполучается этого сделать, говорит несоответствие типов. я ещё покапаюсь...
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #6 - 19. Июля 2008 :: 11:51
Печать  
нужно подумать насчет интерфейса оповещений.
теоретически за основу можно взять интерфейс к текстовому документу от опенконфа.
также нужен доступ к какому нить обекту типа меню, чтобы обработать вставку текста.
  
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #7 - 19. Июля 2008 :: 11:55
Печать  
trdm писал(а) 19. Июля 2008 :: 11:51:
нужно подумать насчет интерфейса оповещений.
теоретически за основу можно взять интерфейс к текстовому документу от опенконфа.
также нужен доступ к какому нить обекту типа меню, чтобы обработать вставку текста.

Ну это можно сделать наследника и там svcsvc или сервис.выбратьзначение. Это не самая главная проблема.

Вот текст ert править прямо в предприятии бы...
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #8 - 19. Июля 2008 :: 12:10
Печать  
Arta писал(а) 19. Июля 2008 :: 11:55:
Вот текст ert править прямо в предприятии бы...


может через ActiveMD? ... там есть методы FileToStream/StreamToFile... вот только непомню, умеет ли она работать с ert или только с md
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #9 - 19. Июля 2008 :: 12:33
Печать  
metaeditor писал(а) 19. Июля 2008 :: 12:10:
может через ActiveMD? ... там есть методы FileToStream/StreamToFile... вот только непомню, умеет ли она работать с ert или только с md

Да вот вчера весь вечер искал ее Улыбка Нашлась...
Вроде только с md работает.

metaeditor писал(а) 19. Июля 2008 :: 12:10:
там есть методы FileToStream/StreamToFile...

Это в compound.dll, но я не игрался еще с ней.

Ну и на крайняк всегда есть gcomp Улыбка
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #10 - 19. Июля 2008 :: 12:57
Печать  
Да, все работает на ура.

Код
Выбрать все
Compound = СоздатьОбъект("Amber.Compound");
Рез = Компонента.Stream2file(текущийФайл, "MD Programm text", КаталогВременныхФайлов() + "test.txt", 1);
Если Рез <> 0 Тогда Возврат КонецЕсли;
текущийФайл = КаталогВременныхФайлов() + "test.txt";
 

  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #11 - 21. Июля 2008 :: 20:18
Печать  
metaeditor писал(а) 19. Июля 2008 :: 11:26:
есть одна проблема, пока нельзя получить текст из редактора, есть метод GetText в который надо передавать подготовленный буфер, но ни через 1с ни через скриптКонтрол неполучается этого сделать, говорит несоответствие типов. я ещё покапаюсь...

Как-то загадочно сделан в этом контроле метод GetText...
Он вроде бы должен конвертить из ANSI в Unicode, а он тупо копирует байты.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Scintilla ActiveX Control
Ответ #12 - 22. Июля 2008 :: 13:41
Печать  
вот, сделал работу с текстом аналогичную опенконфу

свойства
Text, SelStartLine, SelStartCol, SelEndLine, SelEndCol, Range(,,,), LineLen()

методы
MoveCaret, SetRange(,,,,)

SetRange заменяет propput-свойство Range, т.к синтаксис 1С не пропускает выражения вида
Range(1,0,5,11) = "sometext";
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать