Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Delphi _ Ускорить GetOpenFileName

Автор: TarasBer 12.03.2012 9:18


FillChar(OpenFN, SizeOf(OpenFN), 0);
szFile := '';
with OpenFN do begin
HWNDOwner := MainForm;
Flags := OFN_HIDEREADONLY or OFN_NOCHANGEDIR;
lStructSize := SizeOf(OpenFN);
lpstrFile := szFile;
nMaxFile := sizeOf(szFile);
case Save of
0: lpstrTitle := ' Îòêðûòü...';
1: lpstrTitle := ' Ñîõðàíèòü...';
2: lpstrTitle := ' Ñîõðàíèòü êàê...';
end;
lpstrInitialDir := PChar(FolderPath);
lpstrFilter := PChar('Ôàéëû *.' + Ext + #0'*.' + Ext + #0);
lpstrDefExt := PChar(Ext);
end;
if Save = 0 then Result := GetOpenFileName(OpenFN)
else Result := GetSaveFileName(OpenFN);

Может, нужен флаг, чтобы диалог, скажем, не лез в сеть?

Автор: P@sh@ 12.03.2012 9:47

стандартный дельфовский TOpenDialog тоже вызывает GetOpenFileName, и ниче не тормозит обычно...

Автор: TarasBer 12.03.2012 11:20

Вот и я думаю, почему старый ВЦЛовский вариант работает быстрее, какой там флаг надо поставить? А то просто ужас, какие затупы.

Автор: IUnknown 12.03.2012 18:57

Что-то гонял-гонял GetOpenFileName из WinAPI (и на XP и на Семерке), никак не получается задержка в 5 секунд. Даже при нажатии на "My Computer", когда система должна определить иконку флоппи, которого у меня в помине нет, зависание отсутствует. И к сетевым ресурсам (при условии, что ни приложение ни открываемая папка не лежат в сетевых папках) нет обращения.

Были подобные жалобы при использовании Qt, но там другой случай, Дельфей это не касается никак.

Автор: TarasBer 13.03.2012 9:54

Это не может быть связано с тем, что у меня семёрка и "всего лишь" гиг оперативы?

Автор: IUnknown 14.03.2012 9:43

А вот это вполне возможно. 1 гиг - это минимальные требования для Win7, может с этим тормоза и связаны...