Witam zrobiłęm sobie w delphi taką mini przeglądarkę zdjęć ale nie wiem jak zrobić przyciski po naciśnięciu których wyświetli się następne/poprzednie zdjęci z wybranego folderu. Pomoże ktoś?
- Rejestracja:ponad 13 lat
- Ostatnio:prawie 11 lat
- Postów:41
nie oczekuje zeby mi podpowiedziec z jakiego komponentu skorzystac albo cos w tym stylu to dalej sprobuje cos samemu ogarnac. Bo mi nie ma co dzialac skoro nie mam pomyslu jak zrobic przerzucanie obrazkoz za pomoca przycisku

- Rejestracja:ponad 13 lat
- Ostatnio:około 10 godzin
- Lokalizacja:Tuchów
- Postów:12166
nie oczekuje zeby mi podpowiedziec z jakiego komponentu skorzystac albo cos w tym stylu
No to czego Ty oczekujesz...?
Bo mi nie ma co dzialac skoro nie mam pomyslu jak zrobic przerzucanie obrazkoz za pomoca przycisku
Nie masz pomysłu czy nie wiesz jak to zrobić \ jakich zmiennych, procedur czy funkcji użyć?
- Rejestracja:ponad 13 lat
- Ostatnio:prawie 11 lat
- Postów:41
no po prostu nie wiem czego użyć. W swojej przeglądarce użyłem DirectoryListBoxa FileListBoxa i Image, a procedura wygląda tak:
procedure TForm1.FileListBox1Change(Sender: TObject);
var
x:string;
begin
x:= FileListBox1.FileName;
if x = '' then Exit;
Image1.Picture.LoadFromFile(x);
end;
I moge sobie wybrać jaką chcę ścieżkę/jaki folder z dysku przez DirectoryListBoxa i potem zmieniać obrazki jakie są wyświetlane w FileListBox, a chciałbym zrobić jakiś przycisk po naciśnięciu którego będą się wyświetlać następne obrazki z folderu. I tu moje pytanie czy podpowiecie mi coś jak to zrobić?

- Rejestracja:ponad 13 lat
- Ostatnio:około 10 godzin
- Lokalizacja:Tuchów
- Postów:12166
no po prostu nie wiem czego użyć.
Takie rzeczy omawia się jeszcze w fazie projektowania aplikacji; Chyba, że piszesz z pamięci i na bieżąco "wymyślasz" nowe funkcjonalności programu, to nie mogłeś tego ustalić wcześniej;
I moge sobie wybrać jaką chcę ścieżkę/jaki folder z dysku przez DirectoryListBoxa i potem zmieniać obrazki jakie są wyświetlane w FileListBox, a chciałbym zrobić jakiś przycisk po naciśnięciu którego będą się wyświetlać następne obrazki z folderu. I tu moje pytanie czy podpowiecie mi coś jak to zrobić?
Na mój gust (choć nie korzystam ani z FileListBox
ani z DirectoryListBox
bo zawsze programuję swoje) to jeżeli chcesz za pomocą jakichś przycisków ładowac grafikę do TImage
, to musisz mieć kilka rzeczy;
Jeżeli masz komponent do przedstawiania np. drzewa katalogów (przykład: TShellTreeView
) to możesz w łatwy sposób pobrać ścieżkę aktualnie zaznaczonego katalogu (bądź napędu); Jeżeli masz komponent do przedstawienia zawartości wybranego wcześniej katalogu pod kątem filtrów wyszukujących (przykład: TShellListView
) to możesz w łatwy sposób pobrać także nazwę pliku, który jest zaznaczony (w Twoim przypadku MultiSelect
powinno być wyłączone); Mając te dwie informacje masz podstawy do załadowania grafiki z pliku do komponentu;
Natomiast jak będzie wyglądać mechanizm przeglądania zawartości tych plików (tu: minigaleria) musisz sobie sam odpowiedzieć, bo nikt Ci tu nie powie w jaki sposób masz to zrobić; Ty sam musisz się zastanowić jak to ma działać i czego będziesz potrzebował;
Szybki przykład: jeśli do przeglądania zdjęć użyjesz dwóch przycisków (dowolnej klasy, np. TButton
czy TBitBtn
) będziesz musisał przechowywać gdzieś listę plików, które zawarte są w zaznaczonym wcześniej katalogu; Także będziesz potrzebował przechować gdzieś informacje o aktualnie wyświetlonym pliku (można skorzystać z właściwości ItemIndex
bez deklarowania dodatkowych zmiennych); Mając z kolei te informacje wystarczy tylko oprogramować przyciski do zmiany obrazu; Tu też będziesz się musisał zastanowić w jaki sposób będzie działał ten mechanizm; Przykład (pseudokod):
Przycisk btnPoprzedni
- Pobierz aktualny indeks wyświetlonego obrazu
- Sprawdź indeks
Indeks > 0: Zmniejsz wartość indeksu
Indeks = 0: Ustaw indeks na ostatni plik (Ilość plików - 1)- Zaznacz plik na liście o ustalonym indeksie
- Wczytaj grafikę z zaznaczonego pliku do komponentu
Przycisk btnNastępny
- Pobierz aktualny indeks wyświetlanego obrazu
- Sprawdź indeks
Indeks < Ilość plików - 1: Zwiększ wartość indeksu
Indeks = Ilość plików - 1: Ustaw indeks na pierwszy plik (0)- Zaznacz plik na liście o ustalonym indeksie
- Wczytaj grafikę z zaznaczonego pliku do komponentu
Jeżeli natomiast koniecznie chcesz to przedstawić w FilesListBox
, to kod odpowiedzialny za zmianę grafiki raczej zrobiłbym nie w OnChange
, ale w OnMouseDown
wcześniej oczywiście sprawdzając, czy indeks w klikany item jest różny od 0
(funkcja ItemAtPos
), a dopiero później ładując grafikę; Musisz obsłużyć kilka warunków sprawdzających istotne informacje, ale nie napiszę Ci jakie, żeby nie odbierać Ci przyjemności;
- Rejestracja:ponad 13 lat
- Ostatnio:prawie 11 lat
- Postów:41
ok dzieki bardzo poradziłem sobie skorzystałem z ShellListView. Świetnie mi to opisałes dzięki ;)