Виртуальная библиотека Delphi

Здесь есть возможность читать онлайн «Виртуальная библиотека Delphi» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Виртуальная библиотека Delphi: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Виртуальная библиотека Delphi»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Виртуальная библиотека Delphi — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Виртуальная библиотека Delphi», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
картинка 69

На самом деле работает, только в определенных ситуациях. Если вы помещаете на панель несколько кнопок, то по умолчанию они независимы и соответственно не фиксируются в нажатом состоянии. Поскольку одиночное нажатие мыши на кнопку отрабатывается немедленно, двойной щелчок мыши воспринимается как два нажатия и отпускания. Поэтому OnDblClick и не срабатывает.

Если же кнопки связаны в группу ( GroupIndex <> 0 ), то они могут фиксироваться, и соответственно могут воспринимать двойной щелчок мыши.

18. Как разделить обработку OnClick и OnDblClick? Ведь OnClick будет вызываться всегда, и перед DblClick.

Именно так и происходит в Windows — посылаются оба сообщения. Для того чтобы обработать только какое-то одно событие необходимо чуть "задержать" выполнение OnClick . Сделать это можно следующим способом:

procedureTForm1.ListBox1Click(Sender: TObject);

var

Msg: TMsg;

TargetTime: Longint;

begin

{ get the maximum time to wait for a double-click message }

TargetTime := GetTickCount + GetDoubleClickTime;

{ cycle until DblClick received or wait time run out }

whileGetTickCount < TargetTime do

ifPeekMessage(Msg, ListBox1.Handle, WM_LBUTTONDBLCLK, WM_LBUTTONDBLCLK, WM_NOREMOVE)

thenExit; { Double click }

MessageDlg( 'Single clicked', mtInformation, [mbOK], 0);

end;

19. Как определить из обработчика события OnClick в Popup.MenuItem, для какого объекта это произошло?

Используйте свойство PopupComponent компонента TPopupMenu для определения, где была нажата правая кнопка.

procedureTForm1.PopupItem1Click(Sender: TObject);

begin

Label1.Caption := PopupMenu1.PopupComponent.Name;

end;

Свойство ActiveControl для формы тоже можно использовать, однако, ActiveControl не обязательно является тем элементом, для которого произошло событие.

20. Как использовать case, чтобы определить, какой объект вызвал процедуру?

Используйте свойство Tag . Установите значение Tag свое у каждого объекта для опознания. (Использование констант, которые описывают объект — идеально подходит).

case(Sender as TComponent).Tag of

Button1ID: SomeProcedure;

Button2ID: AnotherProcedure;

end;

Таким образом вы можете обрабатывать события как от однотипных компонент, так и от компонент разного типа.

21. Как обрабатывать события от множества однотипных компонентов.

картинка 70

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

картинка 71

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

procedureMyForm.Button1Click(Sender: TObject);

begin

case(Sender asTComponent).Tag of

1: {...} ;

2: {...} ;

3: {...} ;

end;

end;

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

картинка 72

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

картинка 73

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

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

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

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

ShowHint := not(Sender asTMenuItem).Checked;

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

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

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

var

Bmp1: TBitmap;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Виртуальная библиотека Delphi»

Представляем Вашему вниманию похожие книги на «Виртуальная библиотека Delphi» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Виртуальная библиотека Delphi»

Обсуждение, отзывы о книге «Виртуальная библиотека Delphi» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x