Переключение на Главную Страницу Страницы: [1] 2 3 ... 5 ОтправитьПечать
Очень популярная тема (более 25 ответов) Элемент управления Scintilla (число прочтений - 40335 )
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Элемент управления Scintilla
30. Июля 2008 :: 09:30
Печать  
1sci.dll - внешняя компонента для 1С:Предприятие

ВК реализует элемент управления Scintilla.
Не требует регистрации в реестре.
Реализует интерфейс v7Control, следовательно создается на форме и через FormEx, и через класс Форма в 1с++ версий 2.5 и старше

Методы аналогичны методам "родного" ЭУ Scintilla и описаны в документации (http://scintilla.sourceforge.net/ScintillaDoc.html)

Дополнительные методы:
SendSciMessage(message, wParam, lPAram)
SaveToFile(ИмяФайла)
LoadFromFile(ИмяФайла)
LineLen(НомерСтроки)
SetRange(line1, col1, line2, col2, Text)
MoveCaret(line1, col1, line2, col2)
Range(line1, col1, line2, col2, Text)

Свойства:
Text
SelStartLine
SelStartCol
SelEndLine
SelEndCol

События:
OnStyleNeeded(position)
OnCharAdded(ch)
OnSavePointReached()
OnSavePointLeft()
OnModifyAttemptRO()
OnDoubleClick(position, line, ctrl, shift, alt)
OnUpdateUI()
OnModified(modType, position, length, linesAdded, line)
OnMarginClick(margin, position, ctrl, shift, alt)
OnNeedShown(position, length)
OnUserListSelection(wParam, text)
OnDwellStart(position, x, y)
OnDwellEnd(position, x, y)
OnZoom()
OnHotSpotClick(position, ctrl, shift, alt)
OnHotSpotDoubleClick(position, ctrl, shift, alt)
OnCallTipClick(position)
OnAutoCSelection(wParam, text)
OnSetFocus()
OnKillFocus()
OnDestroy()
OnKeyDown(keyCode, alt, shift, ctrl, char, flag)

Для работы требуется SciLexer.dll от metaeditor или любой другой сборки версии не ниже 1.74.
Последовательность поиска SciLexer.dll: каталог самой ВК, подкаталог config каталога программы, стандартная последовательность (каталог исполняемого файла, текущий каталог, PATH)

Написано в соавторстве с metaeditor.

Скачать компоненту и пример использования можно тут: http://code.google.com/p/sci1c/
« Последняя редакция: 05. Августа 2008 :: 09:33 - steban »  

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


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #1 - 30. Июля 2008 :: 09:37
Печать  
Хорошая вещь!

ОФФ Степан, вот тебя прет последние пару месяцев Улыбка  Смех
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #2 - 30. Июля 2008 :: 09:43
Печать  
Замечен один небольшой прикол:
клавиатурные шорткаты для работы с буфером обмена и кнопки панели инструментов для работы с буфером работают только если фокус контрол получил по Tab'у, и не работают если фокус получен при клике мышкой.
Буду очень благодарен, если знатоки MFC и внутренностей 1с мне подскажут в чем может быть причина такого поведения.
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #3 - 30. Июля 2008 :: 10:10
Печать  
Исходники тут: http://code.google.com/p/sci1c/
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #4 - 30. Июля 2008 :: 10:14
Печать  
На этом контроле всплывает старая проблема: "таб" съедается эсиной и не отдаёт его в текстовый редактор  Печаль

Я вот что-то применение данной ВК не найду. Если только редактировать модули налету прямо в режиме предприятия с последующей выгрузкой для ТурбоМД. А вы как используете её?
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #5 - 30. Июля 2008 :: 10:18
Печать  
JohnyDeath писал(а) 30. Июля 2008 :: 10:14:
На этом контроле всплывает старая проблема: "таб" съедается эсиной и не отдаёт его в текстовый редактор

А у меня tab работает, как и ожидается, т.е. вставляет табуляцию.
что я делаю не так?
  

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



Сообщений: 2971
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #6 - 30. Июля 2008 :: 10:21
Печать  
steban писал(а) 30. Июля 2008 :: 09:43:
Замечен один небольшой прикол:
клавиатурные шорткаты для работы с буфером обмена и кнопки панели инструментов для работы с буфером работают только если фокус контрол получил по Tab'у, и не работают если фокус получен при клике мышкой.
Буду очень благодарен, если знатоки MFC и внутренностей 1с мне подскажут в чем может быть причина такого поведения.

попробуй вызвать CGetDoc7 CGetDoc::SetActiveCtl при OnMouseActivate твоего контрола
  

1&&2&&3
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #7 - 30. Июля 2008 :: 10:23
Печать  
steban писал(а) 30. Июля 2008 :: 10:18:
JohnyDeath писал(а) 30. Июля 2008 :: 10:14:
На этом контроле всплывает старая проблема: "таб" съедается эсиной и не отдаёт его в текстовый редактор

А у меня tab работает, как и ожидается, т.е. вставляет табуляцию.
что я делаю не так?

у меня те же вопросы (с)
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #8 - 30. Июля 2008 :: 10:43
Печать  
trad писал(а) 30. Июля 2008 :: 10:21:
попробуй вызвать CGetDoc7 CGetDoc::SetActiveCtl при OnMouseActivate твоего контрола

Получилось  Очень довольный
Great thanks.

ВК с исправлением брать тут: http://code.google.com/p/sci1c/downloads/list
« Последняя редакция: 30. Июля 2008 :: 12:10 - steban »  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #9 - 30. Июля 2008 :: 10:49
Печать  
JohnyDeath писал(а) 30. Июля 2008 :: 10:14:
На этом контроле всплывает старая проблема: "таб" съедается эсиной и не отдаёт его в текстовый редактор

проверял на ScintillaDemo.ert?
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #10 - 30. Июля 2008 :: 10:53
Печать  
steban писал(а) 30. Июля 2008 :: 10:49:
JohnyDeath писал(а) 30. Июля 2008 :: 10:14:
На этом контроле всплывает старая проблема: "таб" съедается эсиной и не отдаёт его в текстовый редактор

проверял на ScintillaDemo.ert?

Да. И с последней, только что выложенной. По "табу" вообще ничео не происходит, если фокус у этого контрола.
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #11 - 30. Июля 2008 :: 11:00
Печать  
Поймал. Улыбка
Такое происходит с SciLexer.dll от SciColorer версии 0920.
Нормально работает с SciLexer от TortoiseSVN и с приложенной новой версией от metaeditor.
Подождем, пока Дима даст официальное добро на ее использование.
  

SciLexer.rar ( 219 KB | Загрузки )

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #12 - 30. Июля 2008 :: 11:03
Печать  
JohnyDeath писал(а) 30. Июля 2008 :: 10:14:
Я вот что-то применение данной ВК не найду. Если только редактировать модули налету прямо в режиме предприятия с последующей выгрузкой для ТурбоМД. А вы как используете её?

а вот так:
  

SQLiteSH.GIF ( 8 KB | Загрузки )
SQLiteSH.GIF

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



Сообщений: 2971
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #13 - 30. Июля 2008 :: 11:13
Печать  
скачал Scintilla Release 1.76, но не обнаружил там /scintilla/include/wrapper.inl
  

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


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Элемент управления Scintilla
Ответ #14 - 30. Июля 2008 :: 11:21
Печать  
В приложенном архиве ConvertScintillaiface.js, при помощи которого был сгенерен wrapper.inl.
Положить в scintilla/include и запустить.

Залил в репозитарий ConvertScintillaiface.js, Scintilla.iface, wrapper.h, wrapper.inl
  

ConvertScintillaiface.rar ( 1 KB | Загрузки )

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 ... 5
ОтправитьПечать