local paylaşımda klasör seçme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
master_20
Üye
Mesajlar: 85
Kayıt: 27 Eki 2010 09:42

local paylaşımda klasör seçme

Mesaj gönderen master_20 »

Merhaba arkadaşlar localde paylaştığım klasör üzerinde işlem yaptırmalıyım bunun içinde bir dialogbox açıp paylaşıma açtığım klasörlerden işlem yapacağım paylaşılmış klasörü seçtirmem lazım ancak local paylaşımı listeleyip klasör seçtirme işlemi yapamadım bu konuda önerileriniz nedir ?
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: local paylaşımda klasör seçme

Mesaj gönderen xxxjedixxx »

Klasör seçimi için aşağıdaki kod işini görecektir.

Kod: Tümünü seç

uses ..., Shlobj, Activex; // eklemeyi unutma.

function SelectFolderDialog(Caption: string; var strFolder: string): Boolean;
  function BrowseProc(hwnd: HWnd; uMsg: integer; lParam, lpData: lParam): Integer; stdcall;
  var Dir: array[0..MAX_PATH] of char;
  begin
    case uMsg of
      BFFM_INITIALIZED:
        begin
          SendMessage(hwnd, BFFM_SETSTATUSTEXT,0, lpData);
          SendMessage(hwnd, BFFM_SETSELECTION, 1, lpData);
        end;
      BFFM_SELCHANGED:
        if(SHGetPathFromIDList(PItemIDList(lParam), Dir)) then
          SendMessage(hwnd, BFFM_SETSTATUSTEXT,0, integer(@Dir[0]));
    end;
    Result := 0;
  end;

var BrowseInfo: TBrowseInfo;
    ItemIDList: PItemIDList;
    DisplayName: array[0..MAX_PATH] of Char;
begin
  Result := False;
  FillChar(BrowseInfo, SizeOf(BrowseInfo), #0);
  with BrowseInfo do begin
    hwndOwner := Application.Handle;
    pszDisplayName := @DisplayName[0];
    lpszTitle := PChar(Caption);
    ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE or BIF_STATUSTEXT;
    lpfn := @BrowseProc;
    lparam:= Integer(PChar(strFolder));
  end;
  ItemIDList := SHBrowseForFolder(BrowseInfo);
  if Assigned(ItemIDList) then
  begin
    if SHGetPathFromIDList(ItemIDList, DisplayName) then
    begin
      strFolder := DisplayName;
      Result := True;
    end;
    CoTaskMemFree(ItemIDList);
  end;
end;

// örnek kullanım
procedure TForm1.Button1Click(Sender: TObject);
var Folder: string;
begin
  Folder := 'C:\Users\kullanici\desktop'; // varsayılan klasör
  if SelectFolderDialog('Bir klasör seçin', Folder) then
  begin
    Edit1.Text := Folder;
  end;
end;
Cevapla