Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TOpenDialog, максимальный размер файла 
:(
    Опции темы
Illusion Dolphin
  Дата 3.10.2004, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Можно ли в стандартном TOpenDialog установить максимальный размер отображаемых файлов? Т.е. чтобы, например, отображались только файлы, размером менее 12 килобайт?


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Alex
Дата 3.10.2004, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



я думаю нет


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Illusion Dolphin
Дата 3.10.2004, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



А что значит это событие?
Код

procedure TForm1.OpenDialog1IncludeItem(const OFN: TOFNotifyEx;
 var Include: Boolean);
begin

end;


Я перевожу этот как ПриДовавленииИтема - может, как-то можно? А?


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 3.10.2004, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



А когда это вообще срабатывает?

Один из вариантов решения: самостоятельное создание диалога стандартными и нестандартными средствами... hmmm.gif
PM   Вверх
Illusion Dolphin
Дата 3.10.2004, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Мдя... Ещё варианты есть? Если нет, то неблагодарное это дело...


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Alex
Дата 3.10.2004, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Ну вообщето ты нашел правильное событие, но оно сработает только на виндах от 2000 и выше. Но как им пользоваться пока не знаю.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Illusion Dolphin
Дата 3.10.2004, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Цитата
правильное событие

Гы 8). У меня виньХР, и как это всё запустить biggrin.gif? Кто-нибудь знает?


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 4.10.2004, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Запустить - включить опцию ofEnableIncludeNotify
Пользоваться - я написал такой обработчик:
Код
procedure TForm1.OpenDialog1IncludeItem(const OFN: TOFNotifyEx;
 var Include: Boolean);
var
 fi : WIN32_FILE_ATTRIBUTE_DATA;
 sr : STRRET;
 FileName : string;

begin
 ofn.psf.GetDisplayNameOf(ofn.pidl, SHGDN_FORPARSING, sr);
 case sr.uType of
   STRRET_CSTR : FileName := sr.cStr;
   STRRET_WSTR : FileName := sr.pOleStr;
   STRRET_OFFSET : FileName := PChar(Cardinal(ofn.pidl)+sr.uOffset);
 end;
 GetFileAttributesEx (PChar(FileName), GetFileExInfoStandard, @fi);
 Include := (fi.nFileSizeHigh = 0) and (fi.nFileSizeLow < 12*1024);
end;
Но это не работает... Код-то типа правильный, но само событие немного левое: изменение Include ни на что не влияет (хотя должно влиять). К примеру, если просто написать:
Код
procedure TForm1.OpenDialog1IncludeItem(const OFN: TOFNotifyEx;
 var Include: Boolean);
begin
 Include := False;
end;
то всё равно все файлы будут добавляться в OpenDialog... sad.gif



--------------------
С уважением, г-н Посол.
PM   Вверх
Alex
Дата 4.10.2004, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Цитата(p0s0l @ 4.10.2004, 12:01)
Но это не работает... Код-то типа правильный, но само событие немного левое: изменение Include ни на что не влияет (хотя должно влиять). К примеру, если просто написать:
Код
procedure TForm1.OpenDialog1IncludeItem(const OFN: TOFNotifyEx;
var Include: Boolean);
begin
Include := False;
end;



то всё равно все файлы будут добавляться в OpenDialog...

Я вчера тутже заткнулся к чему этот Include вообще не понятно sad.gif


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Girder
Дата 4.10.2004, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



И так не работает
Код
function fHook(Wnd: HWnd; Msg: UINT; WParam: WPARAM; LParam: LPARAM): UINT; stdcall;
var FileName:string;
   fi:WIN32_FILE_ATTRIBUTE_DATA;
   sr:_STRRET;
   sHigh,sLow:cardinal;
begin
Result:=0;
if (Msg = WM_NOTIFY) then
 if (POFNotify(LParam)^.hdr.code)=CDN_INCLUDEITEM then
  begin
   Result:=1;
   if LParam<>0 then
    begin
     POFNotifyEx(LParam)^.psf.GetDisplayNameOf(POFNotifyEx(LParam)^.pidl,SHGDN_FORPARSING,sr);
     case sr.uType of
      STRRET_CSTR:FileName:=sr.cStr;
      STRRET_WSTR:FileName:=sr.pOleStr;
      STRRET_OFFSET: FileName:=PChar(Cardinal(POFNotifyEx(LParam)^.pidl)+sr.uOffset);
     end;
     if (FileExists(FileName,sHigh,sLow)=0)and((sHigh>0)or(sLow>12*1024)) then
      Result:=0;
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var ofn:OPENFILENAME;
   szFile:array [1..1024] of char;
begin
FillChar(ofn,SizeOf(ofn),#0);
FillChar(szFile,SizeOf(szFile),#0);
ofn.lStructSize:=SizeOf(ofn);
ofn.hwndOwner:=Handle;
ofn.lpstrFile:=@szFile;
ofn.nMaxFile:=sizeof(szFile);
ofn.lpstrFilter:='DD'+#0+'*.dd'+#0+'Все файлы'+#0+'*.*'+#0+#0;
ofn.nFilterIndex:=1;
ofn.lpstrFileTitle:='Title';
ofn.nMaxFileTitle:=0;
ofn.lpstrInitialDir:=nil;
ofn.Flags:=OFN_ENABLEINCLUDENOTIFY or OFN_PATHMUSTEXIST or OFN_FILEMUSTEXIST or
           OFN_HIDEREADONLY or OFN_EXPLORER or OFN_ENABLEHOOK;
ofn.lpfnHook:=fHook;
if GetOpenFileName(ofn)=TRUE then
 Edit1.Text:=ofn.lpstrFile;
end;
Может быть ноги от сюда растут:
Цитата
The dialog box always includes items that have both the SFGAO_FILESYSTEM and SFGAO_FILESYSANCESTOR attributes, regardless of the value returned by CDN_INCLUDEITEM


Это сообщение отредактировал(а) Girder - 4.10.2004, 21:30


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Pakshin A. S.
Дата 4.10.2004, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



А может все-таки своими силами диалог составлять?
PM   Вверх
Illusion Dolphin
Дата 4.10.2004, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Цитата
А может все-таки своими силами диалог составлять?

Т.е. полностью переписывать с использованием TListView? Или способ попроще?


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 4.10.2004, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Можно и ListBox переделать (иконки поставить под папки и файлы...). Надо немного подумать...
PM   Вверх
Pakshin A. S.
Дата 4.10.2004, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



А можно и с компонетами во вкладке Win3.1: DriveComboBox1 FilterComboBox1 DirectoryListBox1 FileListBox1

по обытиям от Change компонентов смотрим в FileListBox1
Код

for i:=0 to FileListBox1.items.Count-1 do
 if  ...FileListBox1.Items[i]... // проверяем размер
  then
   begin
    // размер не тот
    FileListBox1.Items.Delete(i);
    dec(i);
   end;


Может сработает... sad.gif
PM   Вверх
Alex
Дата 4.10.2004, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



а я бы попробовал вариант Girder



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0585 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.