Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
ВнизЕсть ли в Дельфи стандартный компонент... Найти похожие ветки
← →
AL2002 (2002-10-17 18:22) [0]...который являет собой диалог и позволяет выбрать каталог для сохранения файлов? Очень не хочется ещё одну форму создавать.
← →
andrey_pst (2002-10-17 18:24) [1]
SelectDirectory("Выбор папки", "", NewDir);
← →
Smithson (2002-10-17 18:28) [2]SaveDialog
← →
AL2002 (2002-10-17 18:36) [3]>Smithson © (17.10.02 18:28)
Понимаете, мне нужно сохранять сразу несколько файлов. Нужно, чтобы поля для имени файла там не было.
← →
Андрей Прокофьев (2002-10-17 18:38) [4]см
andrey_pst © (17.10.02 18:24)
← →
TTCustomDelphiMaster (2002-10-17 18:49) [5]SHBrowseForFolder
← →
pusrg (2002-10-17 19:32) [6]Если хош могу выслать компонент, который сам накатал, честно говоря уже давненько, так что возможные баги можешь исправить сам.
Правда там делать нечего, насколько я по помню, я его за полчасика смайстрячил.
← →
pusrg (2002-10-17 19:37) [7]Честно говоря, зачем высылать :) Вот код:
unit SelectDirDlg;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, FileCtrl, ExtCtrls;
type
TFormDlg = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
DriveComboBox: TDriveComboBox;
DirectoryListBox: TDirectoryListBox;
BOk: TBitBtn;
BCancel: TBitBtn;
GroupBox1: TGroupBox;
EDir: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;
type TSelectDirDlg = class (TComponent)
private
FInitialDir:string;
FormDlg:TformDlg;
FTitle:string;
FNewDirectory,FQuestion:boolean;
FOnDriveChange:TNotifyEvent;
FOnDirChange:TNotifyEvent;
protected
procedure DriveChange(sender:TObject);
procedure DirChange(sender:TObject);
public
DirPath:String;
function Execute:boolean;
published
property InitialDir:String read FInitialDir write FInitialDir;
property Title:string read FTitle write FTitle;
property NewDirectory:boolean read FNewDirectory write FNewDirectory;
property Question:boolean read FQuestion write FQuestion;
property OnDriveChange:TNotifyEvent read FOnDriveChange write FOnDriveChange;
property OnDirChange:TNotifyEvent read FOnDirChange write FOnDirChange;
end;
procedure Register;
implementation
{$R *.DFM}
{$R SelectDirDlg.dcr}
procedure Register;
begin
RegisterComponents("MyComponent",[TSelectDirDlg]);
end;
function TSelectDirDlg.Execute: boolean;
begin
FormDlg:=TFormDlg.Create(Application);
try
Result:=false;
DirPath:="";
FormDlg.Caption:=FTitle;
FormDlg.EDir.Enabled:=FNewDirectory;
FormDlg.DriveComboBox.OnChange:=DriveChange;
FormDlg.DirectoryListBox.OnChange:=DirChange;
if not DirectoryExists(FInitialDir) then
FormDlg.DriveComboBox.Drive:="c"
else
begin
FormDlg.DriveComboBox.Text:=ExtractFileDrive(FInitialDir);
FormDlg.DirectoryListBox.Directory:=FInitialDir;
end;
FormDlg.EDir.Text:=FormDlg.DirectoryListBox.Directory;
if FormDlg.ShowModal=mrOk then
begin
if not DirectoryExists(FormDlg.EDir.Text) then
begin
if FQuestion then
if application.MessageBox(PChar("
← →
pusrg (2002-10-17 19:41) [8]Кракозябликами там вышли мессаги на русском (писал под конкретную ситуацию), можешь вставить что-то свое.
Заодно и обработку сохранения файлов добавить (невнимательно прочитал вначале).
← →
AL2002 (2002-10-18 10:16) [9]>pusrg © (17.10.02 19:41)
Спасибо, но, ИМХО, это жестоко. Я такое накручу, что сам потом не рад буду. Вот если б ты исходник формы, в которой это есть, прислал, вот тагда бы да бы.
> andrey_pst © (17.10.02 18:24)
> SelectDirectory("Выбор папки", "", NewDir);
Вы знаете, для этого надо QDialogs Unit. И теперь прога просто зависает. Со словами: "Error Reading SaveDialog.OnTypeChange. Property does not exist".
← →
AL2002 (2002-10-18 10:23) [10]>pusrg © (17.10.02 19:41)
Ага. Так ты прислал.
Раз прислал, придётся пробовать. Тока может быть, придётся тебя поFAQать немножко.
← →
Юрий Федоров (2002-10-18 11:03) [11]cм.
1. andrey_pst
2. TTCustomDelphiMaster
← →
AL2002 (2002-10-18 11:37) [12]>Юрий Федоров © (18.10.02 11:03)
QDialogs и компонента SaveDialog делают ошибку.
"Error Reading SaveDialog.OnTypeChange. Property does not exist".
← →
andrey_pst (2002-10-18 11:51) [13]>> Вы знаете, для этого надо QDialogs Unit
можно и так:
uses FileCtrl
у меня работает
← →
AL2002 (2002-10-18 12:05) [14]>andrey_pst © (18.10.02 11:51)
Попробую. Чуть позже скажу, что получилось.
← →
Pumpkin (2002-10-18 12:32) [15]А чем тебе SHBrowseForFolder не нравится?
function BrowseFolder(Owner: HWND; OldDir:String): String;
var
Bi:TBrowseInfo;
IL:PItemIDList;
P:packed array[0..MAX_PATH] of Char;
begin
FillChar(P,MAX_PATH+1,0);
Move(OldDir[1], P, Length(OldDir));
Bi.hwndOwner := Owner;
Bi.pidlRoot := nil;
Bi.pszDisplayName := @P;
Bi.lpszTitle := "Choose folder";
Bi.ulFlags := BIF_RETURNONLYFSDIRS;
Bi.lpfn := nil;
IL := SHBrowseForFolder( Bi );
if ( IL <> nil ) and SHGetPathFromIDList( IL, P ) then Result := P
else Result := OldDir;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c