Программы   Загрузка Партнерство   О компании Контакты  
 
                    
  Карта Сайта   
   

Как сделать так, чтобы в 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;

           


Жилой комплекс ново-молоково. Новостройки молоково. . Официальный сайт Vichy: уход за лицом в домашних условиях. . Дизайн интерьера для жизни - Дизайн двухкомнатной квартиры. Дизайн квартиры. . мелкий бытовой ремонт . оперативная печать на футболках .


Программы  |  Загрузка  |  Партнерство  |  О компании  |  Контакты

Copyright © LSD Software 2006 - 2011