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