Главная страницаОбратная связьКарта сайта

Как сделать так, чтобы в Memo переносилось не слово целиком, а только та часть слова, которая не помещается

Сначала нужно объявить две глобальных переменные:


OriginalWordBreakProc: pointer;
NewWordBreakProc: pointer;

Затем описываем в разделе implementation следующую процедуру:


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;


Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "Как сделать так, чтобы в Memo переносилось не слово целиком, а только та часть слова, которая не помещается", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2024 Дискета.info