FolderDialog - wskazywanie folderu

dział ogólny

FolderDialog - wskazywanie folderu

Nowy postprzez sebaskow » niedziela, 27 maja 2012, 17:34

Witam.

Czy kontrolka TOpenDialog posiada możliwość wskazywania tylko folderu? ( nie pliku )



Nie chcę używać starej kontrolki TDirectoryListBox, a w zestawie kontrolek brakuje takiej która pozwala użytkownikowi wskazać folder.


Pozdrawiam.
Avatar użytkownika
sebaskow
Intelektryk
Intelektryk
 
Posty: 135
Dołączył(a): wtorek, 3 maja 2011, 08:30
Lokalizacja: Katowice
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: C++ Builder XE7
Gadu Gadu: 0
    Windows XPChrome

Re: FolderDialog - wskazywanie folderu

Nowy postprzez TNTeener » niedziela, 27 maja 2012, 18:15

Witam

Kontrolka TOpenDialog jest używana do otwierania plików i wyświetlania ich wartości w Memo, RichEdit itp. więc raczej nie ma takiej opcji.
Moje rozwiązanie: Użyj DirectoryListBox ale daj Visible na false. Potem wstaw Edit. W tym edit użytownik wpisze adres katalogu. Wstaw następnie przycisk który zatwierdzi zmiane katalogu w DirectoryListBox I włala.
Avatar użytkownika
TNTeener
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): wtorek, 28 lutego 2012, 13:41
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP/Vista/7
Kompilator: C++ Builder XE2
    Windows VistaChrome

Re: FolderDialog - wskazywanie folderu

Nowy postprzez polymorphism » niedziela, 27 maja 2012, 18:32

Przeszukaj moje posty, bo chyba podawałem na tym forum kod klasy, która tworzy OpenDialoga z możliwością zaznaczenia folderu.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: FolderDialog - wskazywanie folderu

Nowy postprzez Cyfrowy Baron » niedziela, 27 maja 2012, 18:41

Standardowo to nie ma na to komponentu, ale można posłużyć się funkcją SelectDirectory:

KOD cpp:     UKRYJ  
#include <filectrl.hpp> // <-- biblioteka zawierająca funkcje SelectDirectory

void __fastcall TForm1::TButton1Click(TObject *Sender)
{
 String Dir;
 SelectDirectory("Wybierz katalog", "", Dir);
 Edit1->Text = Dir;
}
//------------------------------------------------------------------------
void __fastcall TForm1::TButton2Click(TObject *Sender)
{
 String Dir = "c:\\windows";
 SelectDirectory("Wybierz katalog", "c:\\", Dir);
 Edit1->Text = Dir;
}
//------------------------------------------------------------------------
void __fastcall TForm1::TButton3Click(TObject *Sender)
{
 String Dir = "c:\\windows";
 if(SelectDirectory("Wybierz katalog", "", Dir))
  Edit1->Text = Dir;
}
//------------------------------------------------------------------------
void __fastcall TForm1::TButton1Click(TObject *Sender)
{
 String Dir;
 if(SelectDirectory(Dir, TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt, NULL))
  Edit1->Text = Dir;
}


  • sdAllowCreate - wyświetla w oknie dialogowym pole edycji umożliwiające wprowadzenie nazwy dla nowego katalogu, Jednak ten parametr nie wystarczy, żeby stworzyć nowy katalog, on to tylko umożliwia. Bez tego parametru pole edycji nie będzie wyświetlane.
  • sdPerformCreate - działa tylko w połączeniu z parametrem sdAllowCreate. Jeżeli w polu edycji zostanie wprowadzona nazwa nieistniejącego katalogu to zostanie on utworzony.
  • sdPrompt - działa tylko w połączeniu z sdAllowCreate i sdPerformCreate. Jeżeli w polu edycji zostanie wprowadzona nazwa nieistniejącego katalogu to program wyświetli komunikat z pytaniem, czy chcesz taki katalog utworzyć. Parametr ten nie utworzy jednak katalogu jeśli zabraknie parametru sdPerformCreate, ponieważ odpowiada on tylko za wyświetlanie komunikatu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: FolderDialog - wskazywanie folderu

Nowy postprzez sebaskow » niedziela, 27 maja 2012, 21:26

Super :D


Właśnie o to mi chodziło.



Dziękuję i pozdrawiam.
Avatar użytkownika
sebaskow
Intelektryk
Intelektryk
 
Posty: 135
Dołączył(a): wtorek, 3 maja 2011, 08:30
Lokalizacja: Katowice
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: C++ Builder XE7
Gadu Gadu: 0
    Windows XPChrome


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości