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

Материал из DRKB

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

В следующем примере создается процедура разбиения слов при переносах для 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;


ID: 00559