Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 518
от 30.06.2006, 15:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 364, Экспертов: 64
В номере:Вопросов: 3, Ответов: 7


Вопрос № 47225: У меня Delfi 7. Есть диалоговая функция SelectDirectory (см. пример ниже), однако вызов функции позволяет выбрать только существующую папку, если нужной папки нет, ее нельзя создать прямо в диалоговом окне. В тоже время в других программах я видел та...
Вопрос № 47228: Здраствуйте, хотелось бы узнать знает ли кто-нибудь какую функцию использует проводник для показа диалога "Выход из системы", где кнопки "Sleep" "Смена пользователя", по моим предположениям это функция находится в shell3...
Вопрос № 47260: Здравствуйте, эксперты. Вот такая проблемка: написал прогу на Delphi6 (причем не впервые), все работает. Переношу на другой комп, где до этого Delphi никогда не стояла - пишет не хватае qtintf.dll. Что это за dll-ка? если я кидаю её в папку с прогой-...

Вопрос № 47.225
У меня Delfi 7. Есть диалоговая функция SelectDirectory (см. пример ниже), однако вызов функции позволяет выбрать только существующую папку, если нужной папки нет, ее нельзя создать прямо в диалоговом окне. В тоже время в других программах я видел такой-же диалог, но с возможностью создания новой папки. Кроме того, мне кажется этот диалог можно вызвать, используя WinApi. Может кто подскажет, как мне вызвать именно такой диалог, но с возможностью создания папок прямо в диалоге.

unit Unit1;

interface

uses
SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms,
QDialogs, QStdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.xfm}

procedure TForm1.Button1Click(Sender: TObject);
var WorkDir: WideString;
begin
SelectDirectory('Укажите рабочую папку','C:',WorkDir);
end;
Отправлен: 24.06.2006, 19:04
Вопрос задал: KEOs (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, KEOs!

Почитайте здесь, по-моему это то, что Вам нужно.

Удачи!

---------
Ответы на все вопросы - на сайте www.ya.ru
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 24.06.2006, 19:15

Отвечает: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное