Модераторы: Vitalik

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SynEdit2.0.3stable + CodeFolding(MyStix0.31), совместный пакет 
:(
    Опции темы
VictorIn
Дата 16.10.2006, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 16.10.2006

Репутация: нет
Всего: нет



Извиняюсь, что не в английскую ветку, но все же...

Поставил себе SynMix.
с подсветкой все вроде ок.

но вот решил поюзать CodeFolding
и напоролся на следующий баг:

про добавлении вот такого региона 
FoldRegion:=SynUniSyn1.FoldRegions.Add( rtKeyWord, False, False, False, 'Object:', 'End', nil);
нижеследующий код фолдится некорректно, обрамление заканчивается раньше, чем слово End
(строка 45-46, в этом месте есть комментарий)

Код

Object: MainPanel
FilterClass=Panel
Left=5
Top=5
Width=265
Height=65
Object: FromDate
FilterClass=DateTimePicker
Left=60
Top=5
Width=85
Height=25
End
Object: ToDate
FilterClass=DateTimePicker
Left=160
Top=5
Width=85
Height=25
End
Object: TextLabel3
FilterClass=TextLabel
Left=5
Top=5
Width=55
Height=25
Caption=Период: c
End
Object: TextLabel4
FilterClass=TextLabel
Left=145
Top=5
Width=15
Height=25
Caption=по
End
Object: CurrencyBox
FilterClass=ComboBox
Left=60
Top=30
Width=85
Height=25
SQL=
 /* -!!! Вот сдесь ерунда творится - */
Select CURRENCY_FIELDEND,   CURRENCY_NAME
from CURRENCY_FIELDEND_NAMES
^
End
Object: TextLabel6
FilterClass=TextLabel
Left=15
Top=30
Width=45
Height=25
Caption=Валюта
End
Object: CurrentClientBalansPanel
FilterClass=Panel
Left=295
Top=10
Width=115
Height=20
SQL=
select SUM(BALANS<:Parent.CurrencyBox>) as CURRENTBALANS
from CLIENTS where MIX_ID=1
^
End
Object: DeltaClientBalansPanel
FilterClass=Panel
Left=295
Top=30
Width=115
Height=20
SQL=
select
SUM( ( 2*Kind-1)*(Amount<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1, IIF(DOC_ID =1, -1,  0  )   )))  as DELTABALANS
From
CLIENTSVIEW cl
JOIN CHECKS c
ON (c.CLIENT_ID=cl.CLIENT_ID)
where cl.MIX_ID=1 and c.CHECK_DATE>="<:Parent.FromDate>"
^
End
Object: CurrentMoneyAmountPanel
FilterClass=Panel
Left=545
Top=10
Width=115
Height=20
SQL=
select SUM(DEBETPAY<:Parent.CurrencyBox>-CREDITPAY<:Parent.CurrencyBox>) as CURRENTMONEYAMOUNT
from CLIENTS where MIX_ID=1
^
End
Object: DeltaMoneyAmountPanel
FilterClass=Panel
Left=545
Top=30
Width=115
Height=20
SQL=
select
SUM(-( 2*Kind-1)*(AMOUNT<:Parent.CurrencyBox>) )  as DELTAMONEYAMOUNT
From CHECKS c JOIN CLIENTS cl ON (c.CLIENT_ID=cl.CLIENT_ID)
 where c.DOC_ID=1 and c.CHECK_DATE>="<:Parent.FromDate>"
and cl.MIX_ID=1
^
End
Object: ResultPanel
FilterClass=Panel
Left=295
Top=60
Width=365
Height=45
SQL=
select NormalDate(CHECK_DATE) as CHECK_DATE,
SUM(( Kind)*(PARTCOST<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1,  0  ))    ) as STOCKSAMOUNTIN,
SUM(( 1-Kind)*(PARTCOST<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1,  0  ))    ) as STOCKSAMOUNTOUT,


SUM(( 2*Kind-1)*(Amount<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1, IIF(DOC_ID =1, -1,  0  )   )))  as DELTABALANS,


SUM( ( 1-Kind)*(Amount<:Parent.CurrencyBox>)*(IIF(DOC_ID =1, 1, 0  )))  as MONEYAMOUNTIN,
SUM( ( Kind)*(Amount<:Parent.CurrencyBox>)*(IIF(DOC_ID =1, 1, 0  )))  as MONEYAMOUNTOUT,
SUM(( 1-Kind)*(Amount<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1,  0  ))    ) as AMOUNTOUT,
SUM( (1-Kind)*(Amount<:Parent.CurrencyBox>-PARTCOST<:Parent.CurrencyBox>)*(IIF(DOC_ID =2, 1,  0  ))    ) as PRIB
from
CLIENTSVIEW cl
JOIN CHECKS c
ON (c.CLIENT_ID=cl.CLIENT_ID)
where cl.MIX_ID=1 and c.DOC_ID in (1,2)
and c.CHECK_DATE>="<:Parent.FromDate>"
and c.CHECK_DATE<="<:Parent.ToDate>: 23.59"
/*and cl.MIX_ID=1*/
Group by 1
Order by c.CHECK_DATE
^
End
Object: BeginStocksAmountPanel
FilterClass=Panel
Left=420
Top=10
Width=120
Height=20
SQL=
select SUM(( 2*Kind-1)*(PartCost<:Parent.CurrencyBox>) )  as BEGINSTOCKSAMOUNT
From CHECKS c JOIN CLIENTS cl ON (cl.CLIENT_ID=c.CLIENT_ID)
where c.DOC_ID=2 and c.CHECK_DATE<"<:Parent.FromDate>"
and cl.MIX_ID=1
^
End
End


в исходниках я не копался, как-то не до этого,
думаю эта информация будет интересна для тех кто фиксит сей продукт.
Может что-то я не так делаю?
PM MAIL   Вверх
WhiteWind
Дата 16.10.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.7.2006

Репутация: нет
Всего: нет



Ага, чекбокс "Keyords must be whole words" не работает.
PM   Вверх
aag
Дата 25.10.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Если кому интересно...
Я как-то тоже наткнулся на Mystix, но не понравились многочисленные баги, сильная сырость и тесное переплетение с SynEdit-ом. В тоже время он подтолкнул меня на написание своего code folding. 
Прнципиальным было желание не менять (по крайней мере сильно) кода SynEdit. С другой стороны, я не собирался делать этот code folding полностью универсальным - в Mystix он привязан к Highlighter, мне это было  совершенно ненужным. Code folding (outlining в терминологии MS) был реализовыван только для .SQL (конкретно - для T-SQL), поддерживает стандартные директивы #region..#endregion и блоки begin..end. Хотя расширить как раз список ключевых слов не сложно. В отличии от Mystix поленился и делал все через строки, без PChar - впрочем, скорости обработки вполне хватает
Вся обработка заключается в модуле регионов и в обвеске редактора. Результат можно увидеть тут (наличие работающего сервера не обязательно, он понимает и файлы .sql) 
Эллипсов ([...]) в заголовке региона нет - пробовал делать, но не понравилось. Основная трабла - как совместить редактирование этой строки с ними.
Если кому интересно - пишите, код могу выслать.
PM MAIL   Вверх
aag
Дата 26.10.2006, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Кстати, а не мог бы кто-нибудь выложить примерчик к  SynMix? Ссылки с форума не работают, схем подсветки тоже нет.
PM MAIL   Вверх
Seldon
Дата 28.10.2006, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



aag, а твой codefolding изменяет содержимое .Lines или модифицирует отрисовку строк?
а ссылка кстати мёртвая

Это сообщение отредактировал(а) Seldon - 28.10.2006, 01:02
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
aag
Дата 28.10.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



2 Seldon
Нет конечно, зачем? Алгоритм очень грубо такой - проходим по Lines, строим список регионов (т.е. тот самый folding), на отрисовке Gutter рисуем линии/крестики. На OnSpecialLines дополнительно подсвечиваем эти строки. Модификация отрисовки строк понадобится для рисования этих самых [...]
По уму, конечно, надо... 
Ссылка рабочая, я на нее захожу спокойно. Может у тебя прокси барахлит? В общем, если есть желание - могу выслать.

Что касается SynMix... Штука хорошая, авторам респект. Но баги Mystix из нее торчат по прежнему - сворачиваем регион, идем на строчку вверх, нажимаем Enter (т.е. добавляем строку) - и регион пропадает. Вместе со свернутой информацией. 
Справедливости ради, в BDS2006 кодефолдинг тоже глючит по-черному.
PM MAIL   Вверх
Seldon
Дата 28.10.2006, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



хм, по ссылке теперь заходит, а вот файл качать отказываецца... если можно, вышли пожалуйста код твоего фолдинга на seldon.mib dog gmail dot com

в SynMix я даже не ковырялся потому что мне не нравицца сама идея менять Lines при сворачивании\разворачивании регионов. и я так и не понял из твоего поста - твой фолдинг при сворачивании\разворачивании регионов меняет содержимое Lines или нет?
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
aag
Дата 29.10.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



При сворачивании, скрываемые строки сохраняются в StringList самого региона. При разворачивании - восстанавливаются.
В SynMix примерно также. И как можно не менять Lines при сворачивании/разворачивании, я плохо представляю. Разве что заводить отдельно какой-нибудь VisualLines - так это будут те же яйца, только сбоку. Один фиг, все сводится к необходимости гарантировать что при свертке не будут потеряны данные.
Фрагменты послал.
PM MAIL   Вверх
Seldon
Дата 29.10.2006, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



Цитата

Один фиг, все сводится к необходимости гарантировать что при свертке не будут потеряны данные.
да, но ещё надо гарантировать правильную работу внутренних механизмов SynEdit'a (Undo\Redo например) с учётом скрытых строк... 

Цитата

И как можно не менять Lines при сворачивании/разворачивании, я плохо представляю.
ну мне кажецца можно сделать так, как сделан WordWrap - пересчёт координат и можификация отрисовки строк, чтобы свёрнутые строке не рисовались. а Lines при этом неизменен.
ну да ладно, может как-нить попытаюсь сделать что-нибудь подобное.

Цитата

Фрагменты послал.
пришло только 1 письмо без аттачей - "Совсем забыл - ехе-шник при запуске..."
хм, gmail походу не пропускает exe файлы в аттачах  smile заархивируй плиз чем-нибудь.

Это сообщение отредактировал(а) Seldon - 29.10.2006, 22:50
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
aag
Дата 30.10.2006, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Цитата
да, но ещё надо гарантировать правильную работу внутренних механизмов SynEdit'a (Undo\Redo например) с учётом скрытых строк... 

Я при сворачивании делаю начало региона readonly. И хотя специально не заморачивался с undo, все работает корректно.
Цитата
ну мне кажецца можно сделать так, как сделан WordWrap - пересчёт координат и можификация отрисовки строк, чтобы свёрнутые строке не рисовались...

WordWrap строки не скрывает.
gmail похоже, вообще не пропускает аттачи больше мегабайта.

PM MAIL   Вверх
Seldon
Дата 30.10.2006, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



спасибо, уже не надо - скачал с сайта
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
salexn
Дата 8.11.2006, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 30.6.2006

Репутация: нет
Всего: нет



а RegEx работает? Если да, то как сделать сворачивание для любого XML
По идеи должно быть 
open <.>
close </.>
PM MAIL   Вверх
mr.Anderson
Дата 8.3.2007, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Нашел еще пару глюков. Использую SynMix в C++ Builder 6-й версии.

Первый: нельзя выделить текст "справа налево". По стандарту, слева направо, можно. А вот справа налево - нельзя.

Второй: если написать следующий код:
Код

void __fastcall SynCopyProperties( TSynEdit *Source, TSynEdit *Target )
{
 Target->BookmarkOptions = Source->BookmarkOptions;
 Target->SelectedColor = Source->SelectedColor;
 Target->WordWrapGlyph = Source->WordWrapGlyph;
}

То при закрытии такой программы будут выданы ошибки Access Violation. Только на этих трех свойствах, остальные копируются нормально.

А также у меня два вопроса:
1. Можно ли как-нибудь отключить подсветку в SynEdit?
2. Чем отличаются SynEdit и SynMemo ?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Seldon
Дата 9.3.2007, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 23.12.2005
Где: Minsk

Репутация: 2
Всего: 2



попробуй
Target->WordWrapGlyph->Assign(Source->WordWrapGlyph);
или как там в Сях вызвать метод объекта....

возможно аналогично поступить надо с  BookmarkOptions
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор
PM MAIL WWW   Вверх
mr.Anderson
Дата 9.3.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Цитата
А также у меня два вопроса:
1. Можно ли как-нибудь отключить подсветку в SynEdit?
2. Чем отличаются SynEdit и SynMemo ?

smile

Это сообщение отредактировал(а) mr.Anderson - 9.3.2007, 14:23


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема »


 




[ Время генерации скрипта: 0.1536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.