Delphi. Трюки и эффекты. Александр Чиртик
Чтение книги онлайн.

Читать онлайн книгу Delphi. Трюки и эффекты - Александр Чиртик страница 21

Название: Delphi. Трюки и эффекты

Автор: Александр Чиртик

Издательство:

Жанр: Программы

Серия:

isbn: 978-5-911-80219-6

isbn:

СКАЧАТЬ := buffer;

      end;

      Сходные функции и процедуры в листинге 2.18 предназначены для управления элементом ListBox.

Листинг 2.18. Управление списком

      //Добавление строки в список

      procedure AddToList(id: Integer; str: String);

      begin

      SendDlgItemMessage(hParentWnd, id, LB_ADDSTRING, 0,

      Integer(PAnsiChar(str)));

      end;

      //Удаление строки из списка

      procedure DeleteFromList(id: Integer; index: Integer);

      begin

      SendDlgItemMessage(hParentWnd, id, LB_DELETESTRING, index, 0);

      end;

      //Выделение строки с заданным номером

      procedure SetListSel(id: Integer; index: Integer);

      begin

      SendDlgItemMessage(hParentWnd, id, LB_SETCURSEL, index, 0);

      end;

      //Получение номера выделенной строки (LB_ERR, если нет выделения)

      function GetListSel(id: Integer): Integer;

      begin

      GetListSel := SendDlgItemMessage(hParentWnd, id,

      LB_GETCURSEL, 0, 0);

      end;

      //Получение количества строк

      function GetListCount(id: Integer): Integer;

      begin

      GetListCount := SendDlgItemMessage(hParentWnd, id,

      LB_GETCOUNT, 0, 0);

      end;

      //Получение текста строки по ее индексу

      function GetListItemText(id: Integer; index: Integer):String;

      var buffer: String;

      begin

      SetLength(buffer,

      SendDlgItemMessage(hParentWnd, id, LB_GETTEXTLEN,

      index, 0)

      );

      SendDlgItemMessage(hParentWnd, id, LB_GETTEXT, index,

      Integer(Addr(buffer)));

      GetListItemText := buffer;

      end;

      Функции и процедуры листинга 2.19 дадут возможность управлять текстовыми полями (Edit и Memo).

Листинг 2.19. Управление текстовыми полями

      //Получение позиции первого выделенного символа (нумерация с нуля)

      function GetSelStart(id: Integer): Integer;

      var selStart, selEnd: Integer;

      begin

      SendDlgItemMessage(hParentWnd, id, EM_GETSEL,

      Integer(Addr(selStart)),

      Integer(Addr(selEnd)));

      GetSelStart := selStart;

      end;

      //Получение длины выделенного фрагмента текста

      function GetSelLength(id: Integer): Integer;

      var selStart, selEnd: Integer;

      begin

      SendDlgItemMessage(hParentWnd, id, EM_GETSEL,

      Integer(Addr(selStart)),

      Integer(Addr(selEnd)));

      GetSelLength := selEnd – selStart;

      end;

      //Выделение фрагмента текста (позиция первого символа с нуля)

      procedure SetSel(id: Integer; start, length: Integer);

      begin

      SendDlgItemMessage(hParentWnd, id, EM_SETSEL, start,

      start + length);

      end;

      //Получение выделенного фрагмента текста

      function GetSelText(id: Integer): String;

      var allText: String;

      begin

      allText := GetText(id);

      GetSelText := Copy(allText, GetSelStart(id)+1,GetSelLength(id));

      end;

      //Замена выделенного текста

      procedure ReplaceSelText(id: Integer; newText: String);

      begin

      SendDlgItemMessage(hParentWnd, id, EM_REPLACESEL,

      0, Integer(PAnsiChar(newText)));

      end;

      В листинге 2.20 приводятся функции и процедуры, которые можно с одинаковым успехом применять ко всем элементам управления.

Листинг 2.20. Общие функции и процедуры

      //Установка текста окна

      procedure SetText(id: Integer; str: String);

СКАЧАТЬ