|
Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
Ishodniki.Ru » Online книги » C++ Builder по шагам Шаг 6 - Апгрейдим MDI проект [TImage] Честно говоря, предыдущий проект немного халтура, поскольку весь код, касающийся родного MDI, я выкинул. Но ничего. Сейчас мы добавим такую полезную функцию, как просмотр стандартных файлов изображений и текстовых файлов. Добавьте к форме MDIChild компонент TImage
Естественно, для этого надо модифицировать код: void __fastcall TMainForm::CreateMDIChild(String Name,bool img)
{
TMDIChild *Child;
//--- create a new MDI child window ----
Child = new TMDIChild(Application);
Child->Caption = Name;
if (FileExists (Name)) {
if (img){
Child->Image1->Picture->LoadFromFile(Name);
Child->Image1->Visible=true;
Child->Memo1->Visible=false;
} else {
Child->Memo1->Lines->LoadFromFile(Name);
Child->Memo1->Visible=true;
Child->Image1->Visible=false;
};
};
}
void __fastcall TMainForm::FileOpen1Execute(TObject *Sender)
{
if (OpenDialog->Execute())
switch (OpenDialog->FilterIndex)
{
case 2: CreateMDIChild(OpenDialog->FileName,true); break;
case 3:
MediaPlayer1->FileName=OpenDialog->FileName;
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
default: CreateMDIChild(OpenDialog->FileName,false);
}
}
Это в main.cpp, а еще в main.h нужно изменить объявление CreateMDIChild на: void __fastcall TMainForm::CreateMDIChild(String Name,bool img); ...и поменять реализацию функции: void __fastcall TMainForm::FileNew1Execute(TObject *Sender)
{
CreateMDIChild("NONAME" + IntToStr(MDIChildCount + 1),false);
}
Теперь разъяснения и немного теории. MDI окно - чаще всего окно документа в редакторе или вьювере. Кто обратил внимание, такое окно нельзя вытащить за пределы MDI формы и при распахивании оно как бы включает в себя главное меню. В принципе, это основное, что нужно знать. Еще есть некоторые функции WinAPI, которые позволяют всякие фокусы с окном выделывать, но мы еще до них не дошли. Как эпилог теории "MDI - это удобно!". Для создания такого окна мастер вставил функцию CreateMDIChild(), которую мы и терзаем уже второй раз. В OpenDialog'е по выбранному фильтру (здесь слабый момент) определяется тип файла и, в качестве второго параметра для CreateMDIChild(), передается img=true или false. Внутри это соответственно учитывается, и в зависимости от ситуации, свойством Visible скрывается один компонент и показывается другой. Вот вроде и все. В качестве приза привожу скриншот программы с открытыми окнами:
|
Форум Программиста
Новости
Обзоры
Магазин Программиста
Каталог ссылок
Поиск
Добавить файл
Обратная связь |