Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.28;
Скачать: CL | DM;

Вниз

Есть ли в Дельфи стандартный компонент...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
4-92819
vajo
2002-09-13 14:38
2002.10.28
Копирование каталога


1-92437
tytus
2002-10-17 19:32
2002.10.28
совмесное использование RECORD


7-92771
Freeze
2002-08-20 07:29
2002.10.28
Active Desktop


14-92741
Катерина
2002-10-08 15:48
2002.10.28
Впечатления от школы-семинара


1-92566
LongIsland
2002-10-16 18:37
2002.10.28
Беда с TPageControl в Delphi 7