OpenDialogs otwarcie od wskazanego folderu

Pinokio
2017-01-30 15:04
Pinokio
0

Siemka.
Pytanie do Was
Czy można w OpenDialogs w Properties lub w kodzie
podać ścieżkę do folderu który by się otwierał na początku za każdym razem
najlepiej relatywną np.: \Pictures
Jeśli tak to jak to zrobić?

procedure TForm2.Button12Click(Sender: TObject);
var
i : integer;
begin
if OpenDialog1.Execute then
 begin
   for I := 0 to OpenDialog1.Files.Count - 1 do
   begin
    //
   //
  //
   end;
 end;
end;

Pozostało 580 znaków

2017-01-30 15:07
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 9 godzin temu

Lokalizacja: Tuchów

0

Do tego służy właściwość OpenDialog.InitialDir, którą możesz ustawić zarówno w oknie Inspektora Obiektów, jak i dowolnie uzupełniać z poziomu kodu.


edytowany 2x, ostatnio: furious programming, 2017-01-30 15:08

Pozostało 580 znaków

Pinokio
2017-01-30 15:59
Pinokio
0

Dobrze ścieżkę potrafię dodać

OpenDialog1.InitialDir := extractfilepath(paramstr(0)) + 'Picture\';
if OpenDialog1.Execute then

To mamy.
Tylko jeszcze jak zrobić żeby podczas działania programu zawsze zaczynał od tej ścieżki (po każdym btnOpenClick)
a nie zmieniał gdy wybraliśmy plik z innego folderu.

Znalazłem coś takiego w inspektorze obiektów ofNoChangeDir ustawiłem na True ale nic to nie dało.
Co jeszcze mogę zrobić?

edytowany 1x, ostatnio: furious programming, 2017-01-30 16:13

Pozostało 580 znaków

2017-01-30 16:12
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 9 godzin temu

Lokalizacja: Tuchów

0

Tylko jeszcze jak zrobić żeby podczas działania programu zawsze zaczynał od tej ścieżki (po każdym btnOpenClick)

W każdym btnOpenClick najpierw ustaw ścieżkę we właściwości OpenDialog.InitialDir, a dopiero po tym wyświetl okno dialogowe;

Znalazłem coś takiego w inspektorze obiektów ofNoChangeDir ustawiłem na True ale nic to nie dało.

Ta opcja służy do zablokowania możliwości zmiany katalogu w oknie dialogowym.


edytowany 1x, ostatnio: furious programming, 2017-01-30 16:13

Pozostało 580 znaków

Pinokio
2017-01-30 16:57
Pinokio
0

Wydawało mi się że mam więc jak to poprawnie zapisać bo teraz działa jednorazowo
przy pierwszym uruchomieniu procedury w programie dopóki nie wybierzemy pliku z innego katalogu.

procedure TForm2.Button12Click(Sender: TObject);
var
i : integer;
Begin
OpenDialog1.InitialDir := extractfilepath(paramstr(0)) + 'Picture\';
if OpenDialog1.Execute then
 begin
   for I := 0 to OpenDialog1.Files.Count - 1 do
   begin
    //
   //
  //
   end;
 end;
end;

Pozostało 580 znaków

2017-01-30 17:00
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 9 godzin temu

Lokalizacja: Tuchów

0
OpenDialog.InitialDir := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'Pictures\';

To wrzuć do konstruktora formularza, a ze zdarzenia Button12Click usuń kod modyfikujący tę właściwość.


edytowany 1x, ostatnio: furious programming, 2017-01-30 17:02

Pozostało 580 znaków

Pinokio
2017-01-30 17:23
Pinokio
0

Tak ale gdzie bym nie wrzucił do private czy public podkreśla kropkę

Expected ':' but received '.'

i

(88): E2029 ',' or ':' expected but '.' found

kropkę między OpenDialog a InitialDir

edytowany 2x, ostatnio: furious programming, 2017-01-30 17:39

Pozostało 580 znaków

2017-01-30 17:37
Moderator

Rejestracja: 12 lat temu

Ostatnio: 3 minuty temu

Lokalizacja: Wrocław

0

Dlaczego chcesz to wrzucać do sekcji private/public? :|


Pozostało 580 znaków

2017-01-30 17:41
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 9 godzin temu

Lokalizacja: Tuchów

0
Pinokio:

Tak ale gdzie bym nie wrzucił do private czy public podkreśla kropkę

Chyba wyraźnie napisałem, żebyś to wrzucił do konstruktora formularza:

procedure TForm1.FormCreate(Sender: TObject);
begin
  OpenDialog1.InitialDir := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'Pictures\';
end;

Zacznij myśleć, bo bez tego nawet gotowce nie pomogą.


edytowany 2x, ostatnio: furious programming, 2017-01-30 17:42

Pozostało 580 znaków

Pinokio
2017-01-30 18:29
Pinokio
0

Staram się myśleć i to było FormCreate było pierwsze gdzie to wrzuciłem ale też zadziałało jedno razowo
także pomyślałem że robię źle z tond te kombinacje..

Mimo szczerych Twoich chęci pomocy nic nie pomaga
Tak samo jak u mnie po wybraniu .pliku z innego katalogu przechwytuje ścieżkę do niego
i za następnym użyciem procedury otwiera folder z którego ostatnio otwarliśmy plik

Pozostało 580 znaków

2017-01-30 18:41

Rejestracja: 9 lat temu

Ostatnio: 37 minut temu

0

być może używasz tego samego obiektu opendialog1 w różnych sytuacjach modyfikując przy tym jego własność InitialDir

podepnij podstawienie:

OpenDialog1.InitialDir :='coś tam';

przed KAŻDYM wywołaniem

OpenDialog1.execute 

czyli np. ....

procedure TForm2.Button12Click(Sender: TObject);
Begin
  OpenDialog1.InitialDir := extractfilepath(paramstr(0)) + 'Picture\';
  if OpenDialog1.Execute then
   begin
      /// tutaj akcja związana z wybraniem pliku lub plików 
    end;
end;

jest jeszcze jeden jeden problem, extractfilepath zwraca scieżkę do pliku bez znaku '\' na końcu
wiec prawidłowo powinno tak to wygladać

procedure TForm2.Button12Click(Sender: TObject);
Begin
  OpenDialog1.InitialDir := extractfilepath(paramstr(0)) + '\Picture\';
  if OpenDialog1.Execute then
   begin
      /// tutaj akcja związana z wybraniem pliku lub plików 
    end;
end;
edytowany 7x, ostatnio: grzegorz_so, 2017-01-30 19:07
no przecież tak ma i twierdzi, że mu nie działa. Czytaj posty na które odpowiadasz - abrakadaber 2017-01-30 19:06
Najpierw pisał, że chce za każdym razem otwierać dialog z wybraną ścieżką, więc podałem mu rozwiązanie (ustawienie InitialDir w Click przycisku); Chyba nie spodobało się, bo tym razem chciał, aby tylko po uruchomieniu programu był ten wskazany, a później aby pamiętał ostatnio użyty katalog - znów podałem rozwiązanie, aby tylko w konstruktorze raz ustawił tę właściwość, w OnClick nic nie robił; No to znowu nie to chce... Cierpliwość mi się kończy. - furious programming 2017-01-30 19:12
@abrakadaber.. wiem że tak ma, ale to tylko mały fragment kodu autora, myślę że problemem autora postu jest brak backslasha na końcu ścieżki - grzegorz_so 2017-01-30 19:13
@grzegorz_so: po to podałem przykład z IncludeTrailingPathDelimiter - jak będzie go brakować to ta funkcja go doda (przez literałem Pictures\). - furious programming 2017-01-30 19:13
@furious programming: strasznie się trzeba opisać z IncludeTrailingPathDelimiter, chyba ponad 30 znaków :) prościej dopisać do ścieżki jeden znak \ - grzegorz_so 2017-01-30 19:21

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0