Вопрос № 47225: У меня Delfi 7. Есть диалоговая функция SelectDirectory (см. пример ниже), однако
вызов функции позволяет выбрать только существующую папку, если нужной папки нет, ее нельзя создать прямо в диалоговом окне.
В тоже время в других программах я видел та...Вопрос № 47228: Здраствуйте, хотелось
бы узнать знает ли кто-нибудь какую функцию использует проводник для показа диалога "Выход из системы", где кнопки
"Sleep" "Смена пользователя", по моим предположениям это функция находится в shell3...Вопрос № 47260: Здравствуйте, эксперты. Вот такая проблемка: написал прогу на Delphi6 (причем не впервые),
все работает. Переношу на другой комп, где до этого Delphi никогда не стояла - пишет не хватае qtintf.dll. Что это за dll-ка?
если я кидаю её в папку с прогой-...
Вопрос № 47.225
У меня Delfi 7. Есть диалоговая функция SelectDirectory (см. пример ниже), однако вызов функции позволяет выбрать только
существующую папку, если нужной папки нет, ее нельзя создать прямо в диалоговом окне. В тоже время в других программах я
видел такой-же диалог, но с возможностью создания новой папки. Кроме того, мне кажется этот диалог можно вызвать, используя
WinApi. Может кто подскажет, как мне вызвать именно такой диалог, но с возможностью создания папок прямо в диалоге.
Отвечает: sir henry
Здравствуйте, KEOs!
Функция SelectDirectory существует в двух видах. Вы использовали первый вид, где каталог можно только выбирать. Второй вид,
где есть опция для создания каталога, выглядит так:
function SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload;
Здесь TSelectDirOpts предлагает Вам следующие опции:
sdAllowCreate - позволяет вводить несуществующее имя каталога, но его должно создавать Ваше приложение.
sdPerformCreate - в комбинации с первым. Если каталога не существует, то диалог его создает.
sdPrompt - в комбинации с первым. Если каталог не существует, то выдается предупреждение и запрос, нужно ли его создавать.
Если нажать ОК, то каталог создается.
Советую Вам хоть изредка в хелп заглядывать, там много чего интересного пишут. :)
Ответ отправил: sir henry (статус:
Академик) Россия, Красноярск ---- Ответ отправлен: 25.06.2006, 07:14 Оценка за ответ: 2 Комментарий оценки: Ответ для Sir Henry: Диалог, который вы предлагаете, действительно
позволяет вводить имя директории, и им можно пользоваться, я пробовал ставить его, но он совсем по другому выглядит (как-то
архаично), так-что я хотел немного другое.
Отвечает: Проходящий Мимо
Здравствуйте, KEOs!
Как вариант, могу предложить функцию выбора директории:
uses ShlObj;
function ChooseFolder(SelfHandle: THandle): string;
var
lpItemID: PItemIDList;
BrowseInfo: TBrowseInfo;
DisplayName: array[0..MAX_PATH] of char;
TempPath: array[0..MAX_PATH] of char;
begin
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := SelfHandle;
BrowseInfo.pszDisplayName := @DisplayName;
BrowseInfo.lpszTitle := 'Выберите директорию';
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS+BIF_NEWDIALOGSTYLE ;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then
begin
SHGetPathFromIDList(lpItemID, TempPath);
result := TempPath;
GlobalFreePtr(lpItemID);
end;
end;
Вызов осуществляется следущим образом:
var
vDir: string;
begin
vDir := ChooseFolder(Form1.Handle);
...
end;
--------- Carpe diem!
Ответ отправил: Проходящий Мимо
(статус: 5-ый класс)
Ответ отправлен: 26.06.2006, 09:48
Вопрос
№ 47.228
Здраствуйте, хотелось бы узнать знает ли кто-нибудь какую функцию использует проводник для показа диалога "Выход из
системы", где кнопки "Sleep" "Смена пользователя", по моим предположениям это функция находится
в shell32.dll под номерами 59 или 61 ?
Если кто знает, напигите ее объявление.
Спасибо.
Отправлен: 24.06.2006, 20:33
Вопрос задал: LeVeL (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: sir henry
Здравствуйте, LeVeL!
Да, есть. Это функция оболочки. Вызывать ее надо с помощью OLE:
Uses ..., ComObj;
...
shell:=CreateOleObject('Shell.Application');
shell.ShutdownWindows;
Ответ отправил: sir henry (статус:
Академик) Россия, Красноярск ---- Ответ отправлен: 25.06.2006, 07:33 Оценка за ответ: 1 Комментарий оценки: Конечно может и спасибо, за то что уделили внимание, но Вы так
и не ответили на вопрос.
Я просил функцию диалога "Выход из системы", где кнопки "Sleep" "Смена
пользователя" а Вы мне диалог "Выключение ПК"
Надеюсь хоть кто знает эту API.
Вопрос
№ 47.260
Здравствуйте, эксперты. Вот такая проблемка: написал прогу на Delphi6 (причем не впервые), все работает. Переношу на другой
комп, где до этого Delphi никогда не стояла - пишет не хватае qtintf.dll. Что это за dll-ка? если я кидаю её в папку с прогой-
то все работает. Компилил я со всеми библиотеками., почему тогда она требуется?? причем раньше - с другими прогами такого
не было. В какой момент проге начинает требоваться этот файл? и как скомпилить чтоб больше его не требовала? ведь он весит
в архиве только полтора МБ.
Отправлен: 25.06.2006, 13:51
Вопрос задал: Boss (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Решетник Д
Здравствуйте, Boss!
Видел я такую проблему. нашел вроде решение на таком сайте
http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=59720
--------- Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус:
9-ый класс)
Ответ отправлен: 25.06.2006, 14:04
Отвечает: RSV
Здравствуйте, Boss!
Вы ухитрился использовать какие-то компоненты или классы (хотя бы один) из библиотеки CLX. А оно сразу требует распространения
проги вместе с этой DLL.
Ответ отправил: RSV (статус: 2-ой
класс)
Ответ отправлен: 25.06.2006, 14:05
Отвечает: sir henry
Здравствуйте, Boss!
Дело в том, что библиотека qtintf.dll - это набор функций для Qt2. По всей видимости Вы создали CLX-программу, либо использовали
какие-то компоненты CLX.
CLX - это кроссплатформенная система для создания приложений в Windows и в Linux. Как основа для этого используется библиотека
интерфейсов Qt (кноки, окна, прогресс-бары и т.п.), аналогичная виндовым.
Ответ отправил: sir henry (статус:
Академик) Россия, Красноярск ---- Ответ отправлен: 25.06.2006, 17:06