-
Собственно, сабж...
Нужно создать диалог выбора папки, который будет наследовать свойства класса TCommonDialog
Только как создать?.. не догоню...
Заранее спасибо за помощь!
-
> как создать?
По образу и подобию, например, TOpenDialog - он тоже наследник TCommonDialog
-
> Сергей М. © (29.05.07 11:48) [1] > > > как создать? > > > По образу и подобию, например, TOpenDialog - он тоже наследник > TCommonDialog
Спасибо за подсказку, но есть несколько но: - метод Execute использует функцию из "comdlg32.dll", функцию для вызова директории не нашёл - как "внедрить" просмотрщик директории в диалог? И что имеенно внедрять?... - как получить Handle созданного диалога и управлять им?
Это главные возникшие вопросы
-
> SkySpeed (29.05.07 21:19) [2]
Зачем все это? В Execute вызываете SelectDirectory - и никаких проблем.
Кроме одной - непонятно, зачем вообще нужен компонент, который полностью заменяется одной строчкой кода?
-
> Юрий Зотов © (29.05.07 21:47) [3] > > SkySpeed (29.05.07 21:19) [2] > > Зачем все это? В Execute вызываете SelectDirectory - и никаких > проблем. > > Кроме одной - непонятно, зачем вообще нужен компонент, который > полностью заменяется одной строчкой кода?
Преподователя спросите! :-D
Препод задал нам лабу, суть которой в создании своего диалогового окна, родителем которого будет TCommonDialog. Данное диалоговое окно должно выполнять функцию выбора директории
-
> диалогового окна, родителем которого будет TCommonDialog
TCommonDialog - это не окно.
Возьми за образец для изучения, например, компонент TElFolderDialog из состава ElDos Visual Component Library. Он реализован в точности так как звучит задание твоего препода.
-
Что не окно - согласен, на метод SelectDirectory он согласился :-)
-
Что не окно - согласен, на метод SelectDirectory он согласился :-)
-
> SkySpeed
На сайте Rouse есть такой компонент - его разработки.
-
-
Да уж... код компонента не хилый............. Вот мой код компонента с SelectDirectory :
unit DirectoryDialog;
interface
uses
SysUtils, Classes, Dialogs, FileCtrl;
type
TDirectoryDialog = class(TCommonDialog)
private
FInitialDir: string;
FTitle: string;
FSelectDir:String;
FCleanUp:Boolean;
procedure SetInitialDir(const Value: string);
protected
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function Execute: Boolean; override;
property SelectedDir:string read FSelectDir write FSelectDir;
published
property InitialDir: string read FInitialDir write SetInitialDir;
property Title: string read FTitle write FTitle;
property CleanUpLastFolder:Boolean read FCleanUp write FCleanUp;
end;
procedure Register;
implementation
constructor TDirectoryDialog.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Title:='Быберите директорию...';
end;
destructor TDirectoryDialog.Destroy;
begin
inherited Destroy;
end;
function TDirectoryDialog.Execute: Boolean;
begin
if CleanUpLastFolder then
FSelectDir:='';
if (InitialDir='Desktop') then
Result:=FileCtrl.SelectDirectory(self.title,'',FSelectDir) else
Result:=FileCtrl.SelectDirectory(self.title,InitialDir,FSelectDir);
end;
procedure TDirectoryDialog.SetInitialDir(const Value: string);
var
L: Integer;
begin
L := Length(Value);
if (L > 1) and IsPathDelimiter(Value, L)
and not IsDelimiter(':', Value, L - 1) then Dec(L);
FInitialDir := Copy(Value, 1, L);
end;
procedure Register;
begin
RegisterComponents('Components', [TDirectoryDialog]);
end;
end.
На этот код преподователь согласился :-)
-
А я бы на его месте не согласился. Или согласился, но не больше, чем на четверку. Потому что на пятерку надо убрать деструктор и свойство SelectedDir сделать read-only.
:о)
-
Удалено модератором
-
Удалено модератором
-
> SkySpeed (03.06.07 14:11) [10]
Я как-то "объедки" вместо "объекты" написал в меню. Но твой глагол "быбирать" тоже хорош) Даже страшно подумать, как это?!?!?
> Юрий Зотов © (03.06.07 14:56) [11] > Потому что на пятерку надо свойство SelectedDir сделать read-only.
А смысл? Оно и на вход для SelectDirectory работает.
-
падишах уже давно того))
-
> ухты © (05.03.18 10:25) [15] > падишах уже давно того))
Да, на дату не посмотрел. Звиняй.
Но это что же - в серию уже пошел новый глагол "быбирать". Ужас)
|