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

Программирование в Delphi. Трюки и эффекты


Скачать книгу

id, BM_SETCHECK, state, 0);

      end;

      //Получение информации о том, установлен ли флажок

      //(установлен ли переключатель)

      function GetChecked(id: Integer):BOOL;

      begin

      if (SendDlgItemMessage(hParentWnd, id, BM_GETCHECK, 0, 0) = BST_CHECKED)

      then GetChecked:= True

      else GetChecked:= False;

      end;

      Функции и процедуры, описанные в листинге 2.17, предназначены для управления раскрывающимся списком (элементом ComboBox).

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

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

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

      begin

      SendDlgItemMessage(hParentWnd, id, CB_ADDSTRING, 0,

      Integer(PAnsiChar(str)));

      end;

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

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

      begin

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

      end;

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

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

      begin

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

      end;

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

      function GetComboSel(id: Integer): Integer;

      begin

      GetComboSel:= SendDlgItemMessage(hParentWnd, id, CB_GETCURSEL, 0, 0);

      end;

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

      function GetComboCount(id: Integer): Integer;

      begin

      GetComboCount:= SendDlgItemMessage(hParentWnd, id, CB_GETCOUNT, 0, 0);

      end;

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

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

      var buffer: String;

      begin

      SetLength(buffer,

      SendDlgItemMessage(hParentWnd, id, CB_GETLBTEXTLEN, index, 0)

      );

      SendDlgItemMessage(hParentWnd, id, CB_GETLBTEXT, index,

      Integer(Addr(buffer)));

      GetComboItemText:= 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,