Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как создать нестандартную процедуру разбиения слов при переносах для TEdit, TMemo или TRichEdit?

01.01.2007

В следующем примере создается процедура разбиения слов при переносах для TMemo. Заметьте, что реализованная процедура просто всегда разрешает перенос. Для дополнительной информации см.таже документацию к сообщению EM_SETWORDBREAKPROC.

var 
  OriginalWordBreakProc : pointer; 
  NewWordBreakProc : pointer; 

function MyWordBreakProc(LPTSTR  : pchar; 
                         ichCurrent : integer; 
                         cch : integer; 
                         code  : integer) : integer 
{$IFDEF WIN32} stdcall; {$ELSE} ; export; {$ENDIF}

begin 
  result :=  0; 
end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
  OriginalWordBreakProc := Pointer( 
    SendMessage(Memo1.Handle, 
                EM_GETWORDBREAKPROC, 
                0, 
                0)); 
 {$IFDEF WIN32} 
  NewWordBreakProc := @MyWordBreakProc; 
 {$ELSE} 
  NewWordBreakProc := MakeProcInstance(@MyWordBreakProc, 
                                       hInstance); 
 {$ENDIF} 
  SendMessage(Memo1.Handle, 
              EM_SETWORDBREAKPROC, 
              0, 
              longint(NewWordBreakProc)); 

end; 

procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  SendMessage(Memo1.Handle, 
              EM_SETWORDBREAKPROC, 
              0, 
              longint(@OriginalWordBreakProc)); 
 {$IFNDEF WIN32} 
   FreeProcInstance(NewWordBreakProc); 
 {$ENDIF} 
end; 
Previous page:
Ограничение длины и количества строк компонента TMemo
Top:
DRKB
Next page:
Сортировка строк в TMemo