WithStringGrid1.Objects[aCol,aRow] asTBitmap do

LoadFromFile(BmpPath+SR.Name);

aCol:=aCol+1;

IfaCol>StringGrid1.ColCount-1 then

Begin

aRow:=aRow+1;

aCol:=0;

end;

I:=FindNext(SR);

end;

FindClose(SR);

end;

 

Как видно из кода, в момент создания формы решаются следующие задачи:

поиск всех файлов картинок (*.bmp) в каталоге, определенном переменной

BmpPath;

запись имени файла в ячейку сетки;

создание объекта класса TBitmap с одновременной установкой ссылки

на этот объект в ячейке сетки строк;

загрузка изображения в объект;

переход к новой ячейке.

В исходном коде есть функции FindFirst(), FindNext() и FindClose(), применяемые для поиска файлов и каталогов. Подробнее об этих функциях см. в главе 4 «Основы работы с файлами».

Обратимся к событию, отвечающему за прорисовку ячеек сетки:

procedureTForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

Begin

IfStringGrid1.Objects[ACol,ARow] isTBitmap then

WithStringGrid1.Canvas do

Draw(Rect.Left+15,Rect.Top+20, TBitmap(StringGrid1.Objects[ACol,ARow]));

end;

 

Этих двух процедур было бы вполне достаточно для сбора и отображения

картинок, но следуя правилу, принятому в Delphi, необходимо обеспечить

уничтожение созданных нами объектов.

Еще раз акцентирую внимание на том, что сетка хранит не сами объекты, а только ссылки на них, и с уничтожением таблицы созданные вами объекты не разрушаются. Ответственность за их уничтожение лежит на программисте.

В обработчике события OnCreate() формы проекта мы создаем несколько десятков объектов TBitmap. Предлагаю освободить занимаемые ресурсы в момент закрытия формы.

procedureTForm1.FormClose(Sender: TObject; varAction: TCloseAction);

varaCol,aRow:integer;

Begin

foraCol:=0 toStringGrid1.ColCount-1 do

Begin

foraRow:=0 toStringGrid1.RowCount-1 do

Begin

IfStringGrid1.Objects[aCol,aRow] isTBitmap then

withStringGrid1.Objects[aCol,aRow] asTBitmap dofree;

end;

end;

end;

 

 

Славно потрудились! А теперь нажмите клавишу F9. Если пример был повторен правильно, ячейки сетки заполнятся рисунками из коллекции Delphi (рис. 8.9).

 

 

Меню

На мой взгляд, присутствие программного меню в приложении является абсолютно необходимым условием для того, чтобы это творение смело могло

называться программным продуктом для Microsoft Windows. Вообще, по

сравнению с другими элементами управления, меню – это одно из самых

удачных дизайнерских решений программистов. Самое главное его достоинство заключается в том, что, практически не занимая места на форме, меню способно предоставить в распоряжение пользователя всю функциональность программы.

Различают два типа меню: главноеи всплывающее, или контекстное. Классический пример главного меню – меню программ пакета Microsoft Office или меню среды программирования Delphi. Главное меню размещается сразу под заголовком формы и, как правило, на самом верхнем уровне содержит пункты Файл, Правка, Окно и Справка. При выборе пункта верхнего уровня из него «выпадают» связанные с ним элементы нижнего уровня. В процессе проектирования вы можете размещать на форме сколько угодно компонентов главного меню (TMainMenu), однако после запуска приложение сможет отобразить только одно главное меню. Ограничений на численность всплывающих меню у приложения нет. В отличие от главного меню, всплывающее меню возникает на экране только после щелчка правой кнопки мыши по форме или элементу управления.

Программисты стараются не перегружать этот тип меню избыточными

пунктами и по негласной договоренности заполняют его операциями, относящимися именно к тому элементу управления, которому принадлежит это меню. Всплывающее меню называют контекстным, поскольку оно тесно

связано с его элементом управления.

С точки зрения иерархии наследования как главное, так всплывающее меню берут начало от уже изученного нами класса TComponent (см. главу 6 «Невидимые классы»). В Delphi реализовано два

компонента, предоставляющих программисту все возможности главного (TMainMenu) и всплывающего (TPopupMenu) меню (рис. 8.10). Оба компонента вы обнаружите на первой странице стандартных (Standard) элементов управления палитры компонентов Delphi. По сути, оба элемента

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

Элементы управления TMainMenu и TPopupMenu снабжены специализированным редактором, значительно упрощающим процесс дизайна меню. Для вызова редактора меню (рис. 8.11) достаточно дважды щелкнуть левой кнопкой мыши по компоненту меню или выбрать свойство Items в Инспекторе объектов.

Для создания пункта меню достаточно выделить курсором мыши пустую область и в поле Caption Инспектора объектов присвоить пункту название.

Пункты меню второго уровня способны обладать подменю, для создания которого достаточно щелкнуть правой кнопкой мыши и во всплывающем меню выбрать пункт Create Submenu. При необходимости можно пересортировать пункты внутри меню, перетаскивая их мышью. И наконец, для удаления лишнего пункта просто нажмите клавишу Del.

 








Дата добавления: 2016-03-15; просмотров: 617;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.