Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TRichEdit, подсветка 
:(
    Опции темы
Akella
  Дата 23.12.2004, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



От старого(бывшего) админа досталась прога, которая загружает текстовые файлы вида
101 Пригор. 1к.кв. и т.д. - текст объявления
106 Город 1к.кв. и т.д. - текст объявления
проверяет на ошибки, подсвечивает соответственно их (ошибки), но
когда редактируешь текст(т.е. что-то удаляешь - пару символов), то
RichEdit работает очеь медленно (может это проблема SP2 для WinXP),
строк не много? около 200.

Нельзя ли что-ли придумать, типа BeginUpdate...EndUpdate.

Пытался использовать Show, Hide - не моргает - моргает.

redtFile - TRichEdit

Код
procedure TfmConvert.redtFileChange(Sender: TObject);
Var
P: Longint;
sel:longint;
begin
//fmConvert.Caption :=inttostr(length(redtFile.lines[0]));
UpDateValueStatusBar;
If flRubric Then
Begin
//  redtFile.Enabled:=False;
 redtFile.Hide;
 P:=redtFile.SelStart;
 sel:=redtFile.SelLength;
 redtFile.SelLength :=redtFile.SelLength +10;
 redtFile.SelAttributes.Size:=11;
 redtFile.SelLength :=sel;
 PrepareLine(redtFile.CaretPos.y);
 redtFile.SelStart:=P;
//  redtFile.Enabled:=True;
 redtFile.Show;
 redtFile.SetFocus;
End;
SaveState:=false;
end;


Код

Procedure TfmConvert.PrepareLine(Line: Integer);
Var
S,_S,rubr: String;
RCheck: TRCheck;
P: Longint; //Текущая позиция в строке-оригинале
NChkArea: Boolean;
NPLine: Integer;
LNeed: Integer;
LShort: Integer;
Procedure ApplyFormat(I,P,L: Longint;F: TRCheck);
 var gg:longint;
     bb:longint;
     inv:integer;
Begin
 redtFile.SelStart:=SendMessage(redtFile.Handle,EM_LineIndex,I,0)+P;
 redtFile.SelLength:=L;
 bb:=redtFile.SelStart +redtFile.SelLength+1;
With redtFile.SelAttributes Do
 Begin
  Style:=F.Style;
  Color:=F.Color;
  Size:=F.size;
 End;
 if (F.Inval =true) then
   begin
     redtFile.SelStart :=bb;
     redtFile.SelLength :=length(redtFile.Lines[i])-L-6;
     redtFile.SelAttributes.Color:=clPurple;
     redtFile.SelAttributes.Style :=[fsUnderLine,fsBold];
   end
 else
   begin
     redtFile.SelStart :=bb;
     redtFile.SelLength :=length(redtFile.Lines[i])-L-4;
     redtFile.SelAttributes.Color:=clBlack;
     redtFile.SelAttributes.Style:=DefFont.Style;
   end;
End;

Begin
P:=0;
S:=redtFile.Lines[Line];
If Length(S)<>0 Then
Begin
_S:=GetFirstWord(S);
rubr:=_S;
 CheckValidRubric(_S,RCheck,NChkArea);
 ApplyFormat(Line,P,Length(_S),RCheck);
 P:=P+Length(_S)+1;
 If NChkArea Then
   Begin
    _S:=GetFirstWord(S);
    CheckValidArea(_S,RCheck);
    if (((rubr='106')or(rubr='109'))and(_S<>'Пригор.')and(_S<>'Город')) OR (((rubr='101')or(rubr='102')or(rubr='103')or(rubr='104'))and((_S='Город')or(_S='Пригор.')))then
      begin
        RCheck.Style:=[fsBold,fsUnderLine];
        RCheck.Color:=clRed;
        RCheck.Size:=14;
        RCheck.Inval :=true;
      end;

    ApplyFormat(Line,P,Length(_S),RCheck);
    P:=P+Length(_S)+1;
   End;
End;
End;



Это сообщение отредактировал(а) dsergey - 23.12.2004, 15:41
PM MAIL   Вверх
Rennigth
Дата 23.12.2004, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

try
 LockWindowUpdate(yourRichedit.handle)
...
finally
 LockWindowUpdate(0)
end;


моргать не должно...
хоть и microsoft Не советует использовать эту функцию но иногда легче ее поставить


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Akella
Дата 24.12.2004, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Запрет, обновления окна, как же я сразу не догадался smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




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


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

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