Читаем Виртуальная библиотека Delphi полностью

На моей форме находится примерно 10 кнопок. Я хочу обрабатывать нажатие на любую из них одним событием, но как их отличить внутри обработчика события?

Для этого базовый класс VCL TComponent имеет поле Tag типа Longint. В момент разработки вы можете присвоить этому полю любое значение, а в момент исполнения использовать его (или переопределять). В вашей ситуации достаточно присвоить полю ButtonX.Tag значение от 1 до 10 (или от 0 до 9, как удобнее), а в обработчике написать примерно следующее:  

procedure MyForm.Button1Click(Sender: TObject); 

begin 

  case (Sender as TComponent).Tag of 

    1: {...}

    2: {...}

    3: {...}

  end

end;    

22. Использование TPanel в качестве "индикатора".

Я пытаюсь использовать TPanel как индикатор процесса обновления БД.  Однако надпись на панели не обновляется пока не закончится цикл обработки БД. В цикле вызывается Panel.Caption := ...

После присвоения Panel.Caption вызывайте Panel.Refresh или Application.ProcessMessages (второй вариант предпочтительней, так как позволяет перерисовать себя всем клмплнентам, которые в этом нуждаются).

23. Включение и выключение подсказок (Hints) для всех элементов на форме.

Если ваша форма содержит панель подсказки в нижней части формы, то вы можете определить подменю для этой панели, и выставлять Form.ShowHint в True или False в зависимости от состояния Checked элемента меню.

Например, в TMenuItem.OnClick напишите:

ShowHint := not (Sender as TMenuItem).Checked;

В результате на локальном меню панели будет видно, включены подсказки для всех элементов или нет.

24. Как в меню поместить bitmap?

Можно поступить таким образом:  

var 

  Bmp1: TBitmap; 

begin 

  Bmp1 := TBitmap.Create; 

  Bmp1.LoadFromFile('C:\WHERE\B1.BMP'); 

  SetMenuItemBitmaps(MenuItemTest.Handle, 0, MF_BYPOSITION, Bmp1.Handle, Bmp1.Handle); 

end

Параметры:

• MenuItemTest — имя пункта меню (горизонтальная строка)

• 0,1 ... — позиция пункта меню, в который надо вставить BMP

• первый Handle — для показа невыбранного пункта меню (Unchecked)

• второй Handle — для выбранного (Checked). Они могут быть разные

Код можно вставить в обработчик OnCreate для формы. При уничтожении меню TBitmap не уничтожается, это надо делать отдельно.

25. Каким образом можно поместить двумерный массив в TImage?

Представим, что данные находятся в массиве:

TestArray: array [0..127, 0..127] of Byte;

Картинка будет иметь размер 128×128 точек:

Image1.Picture.Bitmap.Width := 128;

Image1.Picture.Bitmap.Height := 128;

Вызываем функцию Windows API для формирования bitmap:

SetBitmapBits(Image1.Picture.Bitmap.Handle, SizeOf(TestArray), @TestArray);

Image1.Refresh;  { для того, чтобы изменения отобразились }

Однако, если вы используете свою палитру, то ее нужно создавать специально.

26. Как из программы 'открыть' TComboBox?

У TComboBox есть run-time свойство, не упомянутое в on-line help — DroppedDown.

Для открытия ComboBox напишите:

ComboBox1.DroppedDown := True;

Естественно, False закроет его.

27. Как заменить надпись 'Read only' в компонентах TSaveDialog и TOpenDialog?

Попробуйте посмотреть в Windows API Help разделы, связанные с lpTemplateName. Вообще говоря, вы можете заменить стандартный Open Dialog Box своим собственным шаблоном.

28. Проблема в использовании компонента TCustomGrid.

Делаю так:

1. Создаю новый компонент при помощи Эксперта Компонент

2. Имя класса TSampleCalendar

3. Имя родителя TCustomGrid

4. Использую страницу 'Samples'

5. Сохраняю модуль с именем CALSAMP.PAS

6. Подключаю к Палитре компонент

7. Создаю форму, помещаю новый компонент на форму и получаю Runtime Error 210 В чем дело?

Проблема в том, что TCustomGrid имеет метод DrawCell, который является абстрактным. То, что его безусловно надо переписывать у любого наследника TCustomGrid, к сожалению, не отражено в документации. Создайте этот метод (пусть даже пустой) и ваша проблема исчезнет.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных

Все жанры