Показать полную графическую версию : Определение выбранных объектов
Доброе время суток.
Беспокою со следующим вопросом. Реализация делается в среде Borland C++ Builder 6.
В программе на нажатии на кнопке "Открыть" выходит диалоговое окно выбора файла или файлов. После этот файл (или файлы) я должен зачитать в объект Memo.
Вопрос:
Как мне определить какие файлы выбраны, чтобы дальше зачитать их в компонент Memo, так как есть вероятность того, что из 10 файлов могут быть выбраны, скажем 7 файлов.
Afon, не работал в Borland C++ Builder 6 но заинтересовал момент с этим диалогом "Открыть". По моему это стандартны системный, так что одинаково представлена реализация в многих средах. Разве в нём можно выделить более одного файла?
Лично такое встречал в этом диалоге только в Винампе, но там походу он по своему вызывается.
Как мне определить какие файлы выбраны, чтобы дальше зачитать их в компонент Memo »Это нужно скорее приложение MDI.
В Borland C++ Builder 6 выбрать Файл - Новый - Другое - вкладка Проэкт - MDI Application, но там тоже стандартный диалог, больше одного файла не выделяет, но если дописать некоторый код, то можно будет перетаскиванием файлов открывать их в более чем одном окне. Я когда-то учебный пример делал, по этим инструкциям:
1. Шаг 5 - Хранилище объектов. (http://www.firststeps.ru/cbuilder/r.php?5)
2. Шаг 6 - Апгрейдим MDI проект. (http://www.firststeps.ru/cbuilder/r.php?6)
3. Шаг 7 - Прием файлов Drag'n'Drop. (http://www.firststeps.ru/cbuilder/r.php?7)
Лично такое встречал в этом диалоге только в Винампе »В AkelPad тоже такое есть.
OpenDialog выделяет более одного файла. Для это надо в его свойствах в Object Inspector -> Options -> ofAllowMultiSelect поставить значение true. А значения получать из OpenDialog1->Files. Вот часть моего исходника:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute()) Memo1->Lines->AddStrings(OpenDialog1->Files);
}
Drongo, Alan85, спасибо буду знать. Впервые в средствах разработки с этим диалогом "Открыть" столкнулся в VB6. Опции позволяющей выделять более одного файла на сколько помню там не было.
Не работаю с AkelPad по этому Винамп единственный который показал данную возможность.
OpenDialog выделяет более одного файла. Для это надо в его свойствах в Object Inspector -> Options -> ofAllowMultiSelect поставить значение true. А значения получать из OpenDialog1->Files. »Да, действительно получилось. :up
Только у меня открывается не содержимое файла, а его полный путь.
http://s55.radikal.ru/i150/0902/b7/16de9d129904.png
Если сменить выделенный красным цветом код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute()) Memo1->Lines->AddStrings(OpenDialog1->Files);
}на такой
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute()) Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
}То открывается содержимое текстового файла и выделяется произвольное количество файлов. В любом случае автору нужно было выделять более чем один файл в OpenDialog'e. Но всё равно я запутался. :dont-know Это наверное для каждого файла, чтобы открыть все выбраные, нужно создавать для каждого своё окно Memo, верно?
Список файлов которые выделили хранится в коллекции типа Tstrings. Чтобы открывать каждый по очереди надо обращаться по очереди к каждому ему значению...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString fo;
if (OpenDialog1->Execute())
for (int i=0; i<=OpenDialog1->Files->Count-1;i++)
{
fo=(*OpenDialog1->Files)[i];
Memo1->Lines->Add(fo);
//чтото еще делаем...
}
}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.