Creating a custom word break procedure

 Question and Answer Database

FAQ2142D.txt   Creating a custom word break procedure
Category   :Windows API
Platform    :All
Product    :All 32 bit  

Question:
How do I create a custom word break procedure for the TEdit, 
TMemo, or the TRichEdit components?

Answer:
The following example implements a custom work break procedure 
and attaches it to a TMemo component. Note that the 
implementation of the word break proc simply returns that it 
is ok to break the word at the current character. Additional 
custom handling can be further implemented. For additional 
information, please see the documentation for the 
EM_SETWORDBREAKPROC message in the Win32 Help File.

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;

7/16/98 4:31:28 PM
 

Server Response from: ETNASC04