Вверх ↑
Этот топик читают: Гость
Ответов: 21
Рейтинг: 1
#16: 2011-12-12 14:07:15 ЛС | профиль | цитата
nesco, это я смотрел. Как добавить строку с форматированием в принципе понятно, а вот каким образом изменить форматирование у уже добавленой строки?
карма: 0

0
Ответов: 5446
Рейтинг: 323
#17: 2011-12-12 15:16:47 ЛС | профиль | цитата
akron, а никак. Наш RichEdit почему-то это не поддерживает.
карма: 1

0
Ответов: 4630
Рейтинг: 749
#18: 2011-12-12 15:19:47 ЛС | профиль | цитата
Просто любопытно. А где это уже задания для HiAsm выдают? Или мы как-то пропустили важную реформу в образовании?
карма: 26

0
Ответов: 21
Рейтинг: 1
#19: 2011-12-12 15:26:42 ЛС | профиль | цитата
iarspider, прикольно получается RichEdit вовсе и не Рич

Netspirit, есть такие преподаватели) в Хакассиком гос университете) Я этим фактом тоже возмущен, но делать нечего, надо делать ;) Для мен было бы проще сделать это на Delphi или на C#... А с Хиасмом разбираться ради одного зачёта не хочется, вот и подумал, что может у кого есть наработки по даной теме

iarspider, Скажите, а можно ли как нибудь скомпилировать VBS файл в EXE, и при том таким хитрым образом, чтобы он WSO не требовал?
карма: 0

0
Ответов: 5446
Рейтинг: 323
#20: 2011-12-12 15:36:28 ЛС | профиль | цитата
akron, не суетись, подожди, может nesco или кто ещё доделают? Я так мельком глянул - вроде ничего сложного.
P.S. В принципе есть VBS2EXE, но я не знаю как она работает.
карма: 1

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#21: 2011-12-12 15:49:12 ЛС | профиль | цитата
iarspider писал(а):
может nesco или кто ещё доделают?

У нас в этом компоненте реализовано изменение параметров текста только на добавление и только на всю строку, на часть строки не реализовано
карма: 22

0
Ответов: 21
Рейтинг: 1
#22: 2011-12-12 15:57:19 ЛС | профиль | цитата
nesco, мы это уже поняли. Т.е.iarspider прав?

iarspiderakron, а никак. Наш RichEdit почему-то это не поддерживает.


И у меня не получится?

akron писал(а):
nesco, это я смотрел. Как добавить строку с форматированием в принципе понятно, а вот каким образом изменить форматирование у уже добавленой строки?

карма: 0

0
Ответов: 5446
Рейтинг: 323
#23: 2011-12-12 15:57:33 ЛС | профиль | цитата
nesco, дык в чём проблема-то дописать? Код в KOL-е есть. Если я правильно понимаю наш и КОЛ-овский код, то в первом приближении получится так:
code_26142.txt
карма: 1

0
файлы: 1code_26142.txt [481B] [292]
Ответов: 21
Рейтинг: 1
#24: 2011-12-12 15:58:28 ЛС | профиль | цитата
nesco, А как на счёт этого вопроса?

Скажите, а можно ли как нибудь скомпилировать VBS файл в EXE, и при том таким хитрым образом, чтобы он WSO не требовал?


Можете что-нибудь посоветовать?
------------ Дoбавленo в 15.59:
nesco, А как на счёт этого вопроса?

Скажите, а можно ли как нибудь скомпилировать VBS файл в EXE, и при том таким хитрым образом, чтобы он WSO не требовал?


Можете что-нибудь посоветовать?
карма: 0

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#25: 2011-12-12 16:03:12 ЛС | профиль | цитата
akron писал(а):
Можете что-нибудь посоветовать?

Это не мой пакет, не я его курирую. Если не ошибаюсь, то надо спрашивать Nic-a
карма: 22

0
Ответов: 5446
Рейтинг: 323
#26: 2011-12-12 16:05:44 ЛС | профиль | цитата
Моё понимание происходящего при работе моего кода

RE_FmtFontColor - cвойство, описано как
 property RE_FmtFontColor: Integer index (20 shl 16) or CFM_COLOR read REGetFontAttr write RESetFontAttr1;
Т.е. при установке этого свойства идёт вызов RESetFontAttr1((20 shl 16) or CFM_COLOR, Value), где Value - это правая часть выражения присваивания.
RESetFontAttr1 делает вот что:
  RESetFontAttr( Index, Color2RGB( Value ) );
А RESetFontAttr - вот что (подчищенный код):
 procedure TControl.RESetFontAttr(const Index, Value: Integer);var CF: PDWORD;
Mask: DWORD;
begin
REGetFont;
CF := Pointer( Integer( @fRECharFormatRec ) + (HiWord(Index) and $7E) );
Mask := 0;
if LongBool( HiWord(Index) and $1 ) then
Mask := $FFFFFF00;
CF^ := CF^ and Mask or DWORD(Value);
fRECharFormatRec.dwMask := Index and $FF81FFFF;
if LongBool( fRECharFormatRec.dwMask and (CFM_COLOR or CFM_BACKCOLOR) ) then
fRECharFormatRec.dwEffects := fRECharFormatRec.dwEffects and
not (CFE_AUTOCOLOR or CFE_AUTOBACKCOLOR);
Perform( EM_SETCHARFORMAT, RichAreas[ fRECharArea ], Integer( @fRECharFormatRec ) );
end;
Основной интерес представляет последняя строчка
 Perform( EM_SETCHARFORMAT, RichAreas[ fRECharArea ], Integer( @fRECharFormatRec ) );
Perform - это синхроная (SendMessage) посылка сообщения окну. Т.е. при установке свойств применение происходит автоматически.
А область действия - это второй аргумент (RichAreas[ fRECharArea ]), который мы меняем вот этим
 Control.RE_CharFmtArea := raSelection;
карма: 1

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#27: 2011-12-12 16:11:27 ЛС | профиль | цитата
iarspider писал(а):
то в первом приближении получится так:

Это на чем написано, гибридный язык какой-то
------------ Дoбавленo в 16.11:
Че-то я на Delphi не помню такого


if (Control.GetSelLength != 0) then {no valid selection -> quit}
карма: 22

0
Ответов: 5446
Рейтинг: 323
#28: 2011-12-12 16:34:39 ЛС | профиль | цитата
nesco, сорри . Там смесь из Delphi и C получилась. != это в C, в паскале <> вроде. В следующей строчке exit должно быть, а не return.
карма: 1

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#29: 2011-12-12 16:48:57 ЛС | профиль | цитата
iarspider писал(а):
Там смесь из Delphi и C получилась

Гы, гы, гы, заработался

Ты отредактированный код-то приведи, на всякий случай
------------ Дoбавленo в 16.49:
Интересно, а как все вернуть на место, а то после форматирования остается присвоенный стиль
карма: 22

0
Ответов: 5446
Рейтинг: 323
#30: 2011-12-12 17:22:45 ЛС | профиль | цитата
nesco, угу.
#pas
procedure THIRichEdit._work_doFormat;
var Text:string;
p:byte;
oldColor, oldStart, oldEnd: integer;
oldBold,oldItalic,oldUnderline:Boolean;

begin
if (Control.SelLength <> 0) then {no valid selection -> quit}
begin
Control.RE_CharFmtArea := raSelection; {apply attribute(s) only to selection}

oldColor := Control.RE_FmtFontColor;
oldBold := Control.RE_FmtBold;
oldItalic := Control.RE_FmtItalic;
oldUnderline := Control.RE_FmtUnderline
oldStart := Control.SelStart;
oldEnd := Control.SelEnd;

Control.RE_FmtFontColor := ReadInteger(_Data,_data_Color,0);

p := ReadInteger(_Data,_data_Style,0);
Control.RE_FmtBold := p and 1 > 0;
Control.RE_FmtItalic := p and 2 > 0;
Control.RE_FmtUnderline := p and 4 > 0;

Control.SelStart := -1;
Control.SelEnd := 0;

Control.RE_FmtFontColor := oldColor;
Control.RE_FmtBold := oldBold;
Control.RE_FmtItalic := oldItalic;
Control.RE_FmtUnderline := oldUnderline;

Control.SelStart := oldStart;
Control.SelEnd := oldEnd;
end;
end;

карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)