Разное
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Создание и удаление полей
Категория: Базы данных
Категория: Базы данных
Как нарисовать фрактал
Категория: Математика
Категория: Математика
Отступ в Memo
Категория: Компоненты
Категория: Компоненты
Удалить пробелы в начале и конце
Категория: Текст и строки
Категория: Текст и строки
Поиск по EasyTable
Категория: Базы данных
Категория: Базы данных
Получить типы полей таблицы
Категория: Базы данных
Категория: Базы данных
Удаление файла в корзину
Категория: Файловая система
Категория: Файловая система
Быстрое копирование файлов
Категория: Файловая система
Категория: Файловая система
Создание цветных строк в ListBox
Категория: Компоненты
Категория: Компоненты
Undo в memo
Категория: Компоненты
Категория: Компоненты
Delphi - База Знаний: Компонент StatusBar
Компонент StatusBar представляет собой ряд панелей, отображающих полосу состояния в стиле Windows. Обычно эта полоса размещается внизу формы.
Свойство SimplePanel определяет, включает ли полоса состояния одну или множество панелей. Если SimplePanel = true, то вся полоса состояния представляет собой единственную панель, текст которой задается свойством SimpleText. Если же SimplePanel = false, то полоса состояния является набором панелей, задаваемых свойством Panels. В этом случае свойство SizeGrip определяет, может ли пользователь изменять размеры панелей в процессе выполнения приложения.
Каждая панель полосы состояния является объектом типа TStatusPanels. Свойства панелей вы можете задавать специальным редактором наборов. Вызвать редактор можно тремя способами: из Инспектора Объектов кнопкой с многоточием около свойства Panels, двойным щелчком на компоненте StatusBar или из контекстного меню, выбрав команду Panels Editor. В окне редактора вы можете перемещаться по панелям, добавлять новые или уничтожать существующие. При перемещении по панелям в окне Инспектора Объектов вы будете видеть их свойства.
Основное свойство каждой панели — Text, в который заносится отображаемый в панели текст. Его можно занести в процессе проектирования, а затем можно изменять программно во время выполнения. Другое существенное свойство панели — Width (ширина).
Программный доступ к текстам отдельных панелей можно осуществлять двумя способами: через индексированное свойство Panels или через его индексированное подсвойство Items. Например, два следующих оператора дадут идентичный результат:
StatusBar1.Panels[0].Text := 'текст 1';
или
StatusBar1.Panels.Items[0].Text := 'текст 1';
Оба они напечатают текст В«текст 1В» в первой панели.
Количество панелей полосы состояния можно определить из подсвойства Count свойства Panels. Например, следующий оператор очищает тексты всех панелей:
for i := 0 to StatusBar1.Panels.Count - 1 do
StatusBar1.Panels[i].Text := '';
На рис. 7.8 приведен пример текстового редактора на основе компонента RichEdit, содержащий полосу состояния. В ее первой панели отображается номер строки и символа, перед которым находится курсор, во второй — отображается, модифицирован текст в окне, или нет. В третьей панели отображается подсказка о назначении компонента, над которым в данный момент расположен курсор мыши.
Рис. 7.8 Пример редактора 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.