Как я могу использовать SynEdit со стилями Delphi VCL?

Как использовать TSynEdit или TSynMemo с Delphi XE4 и применить стиль Delphi VCL? У меня установлен SynEdit, но я не могу перетащить компонент TSynMemo на форму после активации стиля VCL в приложении. Нужно ли мне внести какие-то изменения в исходный код SynEdit, чтобы VCL Style мог работать?


person Thomas Jaeger    schedule 28.06.2017    source источник
comment
Я не могу воспроизвести эту проблему в Берлине. Вот что я сделал: File->New->VCL Forms Application. Project-›Options-›Application-›Appearance, проверил несколько визуальных стилей и установил Windows 10 в качестве стиля по умолчанию. Закрыл диалоговое окно, перешел к палитре компонентов, ввел Syn в поле поиска и дважды щелкнул TSynMemo. Он появился на форме, как обычно. Снова открыл диалоговое окно параметров и изменил стиль на Amakrits, закрыл диалоговое окно и запустил приложение. Это сработало (хотя SynEdit не был оформлен). У вас установлена ​​самая последняя версия SynEdit?   -  person Ken White    schedule 29.06.2017
comment
И что именно означает нельзя перетаскивать?   -  person Ken White    schedule 29.06.2017
comment
@KenWhite: И что именно означает не может перетаскивать? — во время разработки пользователи могут визуально перетаскивать компонент из палитры компонентов или палитры инструментов и перетаскивать его в конструктор форм вместо двойным щелчком или нажатием Enter. Таким образом, предположительно IDE предотвращает удаление или конструктор компонента вызывает исключение   -  person Remy Lebeau    schedule 29.06.2017
comment
@Remy: Да, я знаю, как работают палитра компонентов и дизайнер форм. Я также указал, что не могу воспроизвести проблему, и мне интересно, просто ли автор не видит этого в палитре, вкладка палитры недоступна или возникает ошибка или исключение; вопрос просто говорит: нельзя перетаскивать. Было бы полезно что-то более конкретное, точно так же, как более подробная информация полезна, когда постер описывает проблему как это не работает.   -  person Ken White    schedule 29.06.2017
comment
@KenWhite Палитра компонентов SynEdit даже не отображается. Он отображается в обычном приложении Windows.   -  person Thomas Jaeger    schedule 29.06.2017
comment
Я подозреваю, что у вас не самая последняя версия SynEdit. Возможно, вы захотите посмотреть, сможете ли вы обновить его.   -  person Ken White    schedule 29.06.2017
comment
@ThomasJaeger Палитра компонентов SynEdit даже не отображается. Он отображается в обычном приложении Windows — палитры зависят от контекста. Таким образом, либо проект не находится в контексте, для которого зарегистрирован SynEdit (VCL или FMX), либо, возможно, конструктор форм не активен, либо, возможно, в проекте просто не загружены пакеты SynEdit (пакеты могут быть загружены/выгружены на в зависимости от проекта)   -  person Remy Lebeau    schedule 29.06.2017
comment
Зачем кому-то понижать оценку хорошего и действительного вопроса? ВТФ? Цензура и негатив на SO сумасшедшие.   -  person Thomas Jaeger    schedule 29.06.2017
comment
Забудь о счете, Томас. От меня вы получите голосование прямо сейчас. Но я бы рассмотрел возможность включения подробностей о том, какие элементы вам нужно стилизовать с помощью стилей VCL, потому что элементы управления SynEdit (за исключением некоторых) контролируются используемым стилем подсветки синтаксиса.   -  person Victoria    schedule 06.07.2017


Ответы (1)


Я использовал более старую версию SynEdit. Я использовал эту версию: TurboPack/SynEdit

Как только я его установил, в дизайнере появилась палитра SynEdit. Тем не менее, я не вижу, чтобы он вообще был скинирован, тогда как все остальные стандартные элементы управления скинированы.

Я нашел решения здесь и здесь с помощью TStyleHook.

person Thomas Jaeger    schedule 29.06.2017
comment
Да потому что VCL Style для него никто не создавал. SynEdit предназначен для подсветки синтаксиса. Я бы сказал, что в лучшем случае можно стилизовать фон и цвет шрифта текста по умолчанию. Остальное зависит от выбранного хайлайтера. Для этого необходимо отразить токен цвета используемого хайлайтера. Я имею в виду, что вы не можете применить стиль VCL, чтобы сделать этот элемент управления черным фоном, имея, например, жетоны идентификатора, окрашенные черным шрифтом. - person Victoria; 29.06.2017
comment
@Victoria Я знаю, для чего нужен SynEdit. Я создал собственные маркеры. Например, вам все равно нужно будет стилизовать вертикальную и горизонтальную полосы прокрутки. Подсветка не имеет ничего общего со скиннингом TSynEdit или TSynMemo. - person Thomas Jaeger; 29.06.2017
comment
Затем сделайте это. Это все. - person Victoria; 29.06.2017