Недавно добавленные исходники

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

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





Похожие по теме исходники

Квадратные сетки из слов

Проверка числового ввода

Нейросеть для распознавания образов

Механизм станка качалки для нефти

 

Весы для взвешивания

Кувшины для воды

Доска для игры Реверси

BTMemoryModule

 



Copyright © 2004-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

Группа ВКонтакте