Delphi World - Как создать нестандартную процедуру переноса слов для TEdit, TMemo
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Как создать нестандартную процедуру переноса слов для TEdit, TMemo

Негр играет в шахматы с компьютером и получает мат на 15 ходу. В сердцах бьет по клавиатуре:
- Проклятый виндоуз, опять глючит.

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

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования