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

Вниз

Помогите заблудшему   Найти похожие ветки 

 
boa ©   (2002-10-16 05:53) [0]

Мне нужно диалоговое окно для выбора каталога. Попробовал использовать OpenDialog, повертел-повертел его, чего-то желаемого не достиг. Может я его не так вертел? Или для выбора каталога есть другое диалоговое окно?
Помогите пожалуйста!


 
iNew   (2002-10-16 06:12) [1]

По моему вполне нормальное окно, хочешь чего-то другого напиши сам.


 
MBo ©   (2002-10-16 06:20) [2]

SelectDirectory


 
boa ©   (2002-10-16 06:42) [3]

Спасибо!!!


 
roadster   (2002-10-16 09:00) [4]

Кстати, SelectDirectory двояко работать изволит, ибо перегружена


 
turusov ©   (2002-10-16 14:59) [5]

TMFileExplorer - Классный и простой в использовании компонент
http://www.mitec.d2.cz/Downloads/MiTeCSE.zip - гдето или у меня
File: mfileexp.zip
Product: MiTeC File Explorer
Version: 1.3
Author: Michal Mutl
E-Mail: michal.mutl@atlas.cz
Target: Delphi 5.x, Delphi 6.x
Platform: W95, W98, NT, W2000, Windows ME
Status: Fully Functional
Source: Included
Description: Windows Explorer-like component.
EXE demo included.


 
EugeneM   (2002-10-16 15:16) [6]

Попробуй это:

unit uBrowseFolder;

interface

uses Controls,Classes,Windows,ShlObj;

type
TBrowseForFolder = class
private
Handle : HWND;
FDirName: String;
FTitle: String;
FInitialPath: String;
procedure SetDirName(const Value: String);
procedure SetTitle(const Value: String);
procedure SetInitialPath(const Value: String);
public
property DirName:String read FDirName write SetDirName;
property Title:String read FTitle write SetTitle;
property InitialPath:String read FInitialPath write SetInitialPath;
function Execute: TModalResult;
constructor Create(Parent: HWND);
end;

implementation

function BrowseCallbackProc(hwnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer; stdcall;
var
Path: array[0..MAX_PATH] of Char;
begin
case uMsg of
BFFM_INITIALIZED:
begin
// Initialization has been done, now set our initial directory which is passed in lpData
// (and set btw. the status text too).
// Note: There"s no need to cast lpData to a PChar since the following call needs a
// LPARAM parameter anyway.
SendMessage(hwnd, BFFM_SETSELECTION, 1, lpData);
SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, lpData);
end;
BFFM_SELCHANGED:
begin
// Set the status window to the currently selected path.
if SHGetPathFromIDList(Pointer(lParam), Path) then
SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, Integer(@Path));
end;
end;
Result := 0;
end;


constructor TBrowseForFolder.Create(Parent: HWND);
begin
Handle := Parent;
// CallBackFunc := CallBack;
end;

function TBrowseForFolder.Execute: TModalResult;
var
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
Result := mrCancel;
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
with BrowseInfo do begin
hwndOwner := Handle;
pszDisplayName := @DisplayName;
lpszTitle := PChar(FTitle);
ulFlags := BIF_RETURNONLYFSDIRS or BIF_STATUSTEXT;
lParam := Integer(PChar(FInitialPath));
lpfn := BrowseCallbackProc;
end;

lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
FDirName := TempPath;
GlobalFreePtr(lpItemID);
Result := mrOK;
end;
end;

procedure TBrowseForFolder.SetDirName(const Value: String);
begin
FDirName := Value;
end;

procedure TBrowseForFolder.SetInitialPath(const Value: String);
begin
FInitialPath := Value;
end;

procedure TBrowseForFolder.SetTitle(const Value: String);
begin
FTitle := Value;
end;

end.



 
Dragon21 ©   (2002-10-16 15:43) [7]

В библиотеке RX, есть компонент DirectoryEdit, Очень удобная вещь для выбора каталога.


 
NickBat ©   (2002-10-16 17:48) [8]

Увидел ветку: подумал откуда больше одного ответа (SelectDirectory)? А тут оказывается такие "перлы" есть!


 
boa ©   (2002-10-17 05:41) [9]

Еще раз спасибо всем, кто откликнулся.
SelectDirectory - это то, что мне было нужно.


 
roadster   (2002-10-17 06:45) [10]

Могу предложить компонент:

unit seldir;

interface

uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
FileCtrl;

type
TSDType=(sdClassic,sdMustDie);
TSelectDir = class(TComponent)
private
FCaption: String;
FDirectory: String;
FSDType: TSDType;
FSDClassicOptions: TSelectDirOpts;
FHelpContext: Longint;
FSpecialDir: String;
procedure SetCaption(const Value: String);
procedure SetDirectory(const Value: String);
procedure SetSDType(const Value: TSDType);
procedure SetSDClassicOptions(const Value: TSelectDirOpts);
procedure SetHelpContext(const Value: Longint);
procedure SetSpecialDir(const Value: String);
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function Execute:Boolean;
property Directory:String read FDirectory write SetDirectory;
published
{ Published declarations }
property Caption:String read FCaption write SetCaption;
property SDType:TSDType read FSDType write SetSDType;
property SDClassicOptions:TSelectDirOpts read FSDClassicOptions write SetSDClassicOptions;
property HelpContext:Longint read FHelpContext write SetHelpContext;
property SpecialDir:String read FSpecialDir write SetSpecialDir;
end;

procedure Register;

implementation
{$R *.DCR}

procedure Register;
begin
RegisterComponents("Roadster Components", [TSelectDir]);
end;

{ TSelectDir }

constructor TSelectDir.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCaption:="Выбор каталога (ресурса)";
FSDType:=sdMustdie;
FDirectory:="";
end;

destructor TSelectDir.Destroy;
begin
inherited Destroy;
end;

function TSelectDir.Execute: Boolean;
begin
Result:=False;
if DirectoryExists(FSpecialDir) then FDirectory:=FSpecialDir;
if FSDType=sdMustDie then
begin
if not DirectoryExists(FSpecialDir) then FSpecialDir:="";
if SelectDirectory(FCaption,FSpecialDir,FDirectory)
then Result:=True;
end
else begin
if SelectDirectory(FDirectory,FSDClassicOptions,FhelpContext)
then Result:=True;
end;
end;

procedure TSelectDir.SetCaption(const Value: String);
begin
FCaption := Value;
end;

procedure TSelectDir.SetDirectory(const Value: String);
begin
FDirectory := Value;
end;

procedure TSelectDir.SetHelpContext(const Value: Longint);
begin
FHelpContext := Value;
end;

procedure TSelectDir.SetSDClassicOptions(const Value: TSelectDirOpts);
begin
FSDClassicOptions := Value;
end;

procedure TSelectDir.SetSDType(const Value: TSDType);
begin
FSDType := Value;
end;

procedure TSelectDir.SetSpecialDir(const Value: String);
begin
FSpecialDir := Value;
end;

end.



Страницы: 1 вся ветка

Текущий архив: 2002.10.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
1-92568
KIR
2002-10-11 12:28
2002.10.28
Длительная процедура по событию OnActivate


14-92724
Hirara
2002-10-08 19:57
2002.10.28
Создание HLP файлов


7-92764
arcoant
2002-08-23 16:34
2002.10.28
Помогите please узнать открыта ли дверца CDROM a


6-92630
FATman
2002-08-27 23:02
2002.10.28
Как понять я уже в инете или еще нет?


3-92378
malex_1
2002-10-04 17:30
2002.10.28
ADO-компоненты в DLL