100 компонентов общего назначения библиотеки Delphi5

       

Пример редактора RichEdit с полосой состояния

Для реализации такой полосы состояния надо в обработчиках событий OnKeyDown, OnKeyUp, OnMouseDown и OnMouseUp компонента RichEdit1 и события OnResize формы обеспечить выполнение операторов: StatusBar1.Panels[0].Text:=IntToStr( RichEdit1.CaretPos.Y+1) + ':'+ IntToStr (RichEdit1.CaretPos.X+1); if RichEdit1.Modified then StatusBar1.Panels[1].Text := 'модиф.' else StatusBar1.Panels[1].Text := '';

Эти операторы заполняют первые две панели полосы состояния. Занесение в строку состояния подсказок в целом выходит за рамки данной книги. Но, поскольку, говоря о полосе состояния, было бы неправильно обойти этот вопрос, ниже без особых пояснений описывается, как это можно сделать.

В Delphi 5 это делается очень просто с помощью компонента ApplicationEvents. Этот компонент помещается на форму и в обработчик его события OnHint (см. подробнее в ) заносится оператор, который для приведенного на Рисунок 7.8 примера имеет вид: StatusBar1.Panels[2].Text := Application.Hint;

Он отображает в панели свойство приложения Application.Hint, а в это свойство автоматически переносится вторая часть текста подсказки (свойство Hint — о нем подробнее сказано ниже) того компонента, над которым перемещается курсор мыши.

В предыдущих версиях Delphi это оформляется более громоздко. Аналогичный оператор надо занести в обработчик события OnHint переменной Application (см. ). Этот обработчик вам надо создать вручную. Пусть вы назвали его DisplayHint.

Прототип этой функции DisplayHint можно внести в описание класса формы. Кроме того надо указать приложению на эту функцию как на обработчик события OnHint. Это можно сделать, например, задав в обработчике события OnCreate формы оператор: Application.OnHint := DisplayHint;

В итоге текст вашего модуля может иметь вид (приводится с сокращениями): interface type TForm1 = class(TForm) StatusBar1: TStatusBar; procedure FormCreate(Sender: TObject); procedure DisplayHint(Sender: TObject); end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.DisplayHint(Sender: TObject); begin StatusBar1.Panels[2].Text := Application.Hint; end; procedure TForm1.FormCreate (Sender: TObject); begin Application.OnHint := DisplayHint; end;

Как видим, все это существенно более громоздко, чем указанные выше возможности, реализованные в Delphi 5.

Чтобы все это работало, надо в свойствах Hint тех компонентов, пояснения которых вы хотите отображать в панели состояния, написать соответствующие тексты. Если вы к тому же хотите, чтобы у компонента появлялся ярлычок с короткими подсказками при задержке пользователем мыши над этим компонентом, то текст в свойстве Hint должен состоять из двух частей, разделенных символом вертикальной черты «|». Например, в свойстве Hint быстрой кнопки, соответствующей разделу меню Сохранить можно ввести текст: «Сохранить|Сохранение документа в файле». Первая часть этого текста будет появляться в ярлычке кнопки, если ее свойство ShowHint (показать подсказку) установлено в true. А вторую часть описанные выше операторы будут отображать в строке состояния при перемещении курсора мыши над кнопкой, независимо от значения ее свойства ShowHint.



Содержание раздела