![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RichEdit как в Delphi IDE
n0name © (2006-08-22 10:50:00)Собственно сабж.
Как релизовать RichEdit такой же как и в Delphi 7 IDE.
А именно что я хочу:
1. Перемещения каретки по RichEdit'у даже при отсутсвии символов.
2. Алгоритм Smart Tab'a.
Ketmar (2006-08-23 12:32:00) [1]> [25] n0name (23.08.06 12:27)
ну и завязали. надоело. %-)
n0name (2006-08-23 12:27:00) [2]
> Ketmar © (23.08.06 10:59) [24]
Один фиг это схоластическая дискуссия. Ни мне ни тебе %)
Ketmar (2006-08-23 10:59:00) [3]> [23] n0name (23.08.06 06:04)
как бы так попонятней... во-первых, пример не совсем корректен. во-вторых, не настроен я по-утру на дискуссии. хочешь, я соглашусь, что ты прав, а я -- нет? мне всё равно, а тебе -- вдруг да и приятно? %-)
n0name (2006-08-23 06:04:00) [4]
> из этого я делаю вывод, что когда Вася начинает бегать,
> он не утрачивает магически возможности плавать.
Конечно не утрачивает, и RichEdit не утрачивает. Но не одновременно.
Ketmar (2006-08-23 02:44:00) [5]> [21] Дмитрий Белькевич © (23.08.06 02:36)
SynEdit.
Дмитрий Белькевич (2006-08-23 02:36:00) [6]>и нормально работает? с undo проблем нет? Мне интересно, потому что я в свое время тоже пытался...
Ну, мы у себя и подсветку сделали и андо-редо многоуровневое на основе стандартного tmemo. Работает нормально и то и то. Если бы в нашем случае можно было применить моноширинный шрифт, использовали бы такой же редактор, как в Делфе. Что-то похожее, если не ошибаюсь, в jvcl включено.
Ketmar (2006-08-22 20:52:00) [7]> [19] n0name (22.08.06 19:29)
из этого я делаю вывод, что когда Вася начинает бегать, он не утрачивает магически возможности плавать.
n0name (2006-08-22 19:29:00) [8]
> семантика русского языка подразумевает в данной фразе союз
> "и".
Да.
Приведу пример.
"Вася умеет бегать, плавать."
Семантика подразумевает собз "и".
И из этого предложения ты делаешь вывод, что Вася одновременно с бегом плывет?
Ketmar (2006-08-22 19:11:00) [9]семантика русского языка подразумевает в данной фразе союз "и".
n0name (2006-08-22 18:59:00) [10]
> Ketmar © (22.08.06 18:52) [16]
Подскажу, мои.
Разве я написал что всё вместе?
В MSDN'е есть таблицы с возможностями RichEdit'a разных версий. Там тоже перечисляются, не скажешь ли ты что они не правы?
Ketmar (2006-08-22 18:52:00) [11]> [15] n0name (22.08.06 18:33)
гениально. а чьи это слова: "там возможна подсветка синтаксиса, многоуровневая отмена операций" -- не подскажешь? и как они согласуются (особенно последняя часть) с очисткой буфера отмены?
n0name (2006-08-22 18:33:00) [12]
> Как ты с этим-то боролся?
Никак. В одном из уроков Iczlion'a говориться то, что undo-буфер необходимо очищать для того, чтобы невозможно было отменить смену цвета.
Ketmar (2006-08-22 18:30:00) [13]> [5] n0name (22.08.06 12:57)
такие сведения от ковыряния в своё время кода IDE.
clickmaker (2006-08-22 16:25:00) [14]
> SendMessage(hEdit, $444, 1, DWORD(@CharFormat));
EM_SETCHARFORMAT то бишь... Логично. Но я уперся в то, что смена форматирования обновляет undo-буфер, что при подсветке лишнее.
Как ты с этим-то боролся?
n0name (2006-08-22 16:05:00) [15]
> и нормально работает? с undo проблем нет? Мне интересно,
> потому что я в свое время тоже пытался...
procedure EditSetCharFormat(hEdit: DWORD; TextColor: DWORD; BkColor: DWORD; Options: DWORD; Mask: Byte);
var
CharFormat: TCharFormat2;
begin
ZeroMemory(@CharFormat, sizeof(TCharFormat2));
CharFormat.cbSize := sizeof(TCharFormat2);
if (Mask and 1) > 0 then
begin
CharFormat.crTextColor := TextColor;
CharFormat.dwMask := CharFormat.dwMask or $40000000;
end;
if (Mask and 2) > 0 then
begin
CharFormat.crBackColor := BkColor;
CharFormat.dwMask := CharFormat.dwMask or $04000000;
end;
if (Mask and 4) > 0 then
begin
CharFormat.dwEffects := Options;
CharFormat.dwMask := CharFormat.dwMask or $00000007;
end;
SendMessage(hEdit, $444, 1, DWORD(@CharFormat));
end;
Это для изменения цвета, стилей написания. А с алгоритмом тоже трудностей не должно быть. отлов EN_CHANGE.
> [4]
Возможно так и сделаю.
ANB (2006-08-22 14:53:00) [16]Ставим SynEdit и все работает на ура без особых проблем.
clickmaker (2006-08-22 14:45:00) [17]
> Не только пробовал, но и делал
и нормально работает? с undo проблем нет? Мне интересно, потому что я в свое время тоже пытался...
> какие ещё могут быть варианты
[4]
n0name (2006-08-22 14:29:00) [18]>>а ты пробовал сделать подсветку в ричэдит?
Не только пробовал, но и делал.
>>ну по твоей логике, в Ворде тоже что-то из них, да? Узко мыслишь...
в [5] я спросил какие ещё могут быть варианты, ответа не получил.
Word ориентирован на работу не только с текстом.
clickmaker (2006-08-22 14:10:00) [19]
> нет, но стандартными полями ввода являются Edit и RichEdit
ну по твоей логике, в Ворде тоже что-то из них, да? Узко мыслишь...
> там возможна подсветка синтаксиса,
а ты пробовал сделать подсветку в ричэдит?
n0name (2006-08-22 13:47:00) [20][6] - нет, но стандартными полями ввода являются Edit и RichEdit. RichEdit мне кажется более вероятным, тк там возможна подсветка синтаксиса, многоуровневая отмена операций.