Pliki w Listbox

.::CYMES::.
  • Rejestracja:ponad 21 lat
  • Ostatnio:9 miesięcy
0

Mam wczytaną listę plików z danego katalogu. Wykonuję extractfilename() w listboxie. Czy jest możliwość aby po kliknięciu na 1 item z listboxa załadować dany plik.

W skrócie chodzi mi o to aby na listbox-ie pojawiały się lylko nazwy plików a nie całe ścieżki i aby po kliknięciu np na 1-szy items plik załadował się do timage.

Krecik
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 19 lat
0

TStringList


Eristoff
  • Rejestracja:około 22 lata
  • Ostatnio:prawie 21 lat
  • Postów:108
0

Na moje oko to są dwie możliwości:

  1. Zmienna TStrings gdzie przechowujesz ścieżki
  2. OwnerDraw i rysowanie tylko nazwy pliku przy itemie :)

"Life's but a walking shadow, a poor player
That struts and frets his hour upon the stage
And then is heard no more: it is a tale
Told by an idiot, full of sound and fury,
Signifying nothing."
William Shakespeare
Deti
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 9 lat
0

Można można, w ListBoxie masz tylko nazwy, a w "równoległym" TStringList ich ścieżki pełni.. tylko jedna uwaga: numeracji musi się zgadzać.. bo jak nie to klikniesz np. na plik1.txt, a otworzy się inny...


.::CYMES::.
  • Rejestracja:ponad 21 lat
  • Ostatnio:9 miesięcy
0

no i właśnie o to chodzi że numeracja się może nie zgadzać bo włączone jest sortowanie listy. Już próbowałem z tstringlist i mi to nie wychodziło właśnie z tego powodu.

JU
  • Rejestracja:około 22 lata
  • Ostatnio:2 miesiące
  • Postów:5042
0

A może posłuż się tablicami dynamicznymi.
A właściwie jakąś tablicą typów rekordowych.

KM
  • Rejestracja:około 21 lat
  • Ostatnio:ponad 10 lat
  • Postów:54
0

Niewiem czy to za działa nie sprawdzałem

Kopiuj
Function sprawdz(nazwa:string):integer;
 for i:=0 to tablicaplikow.count-1 do
  begin
   if pos(nazwa,tablicaplikow[i].Strings[i])>0 then
    begin result:=i;exit;end;
  end;
End;
.::CYMES::.
  • Rejestracja:ponad 21 lat
  • Ostatnio:9 miesięcy
0

Faktycznie z tym rysowaniem tekstu to był niezły pomysł!!!
Dzięki Eristoff [browar]

Eristoff
  • Rejestracja:około 22 lata
  • Ostatnio:prawie 21 lat
  • Postów:108
0

po posortowaniu/dodaniu itemów(przy automat. sortowaniu):

Kopiuj
procedure PrzepiszListBox(lb : TListBox; var Lista : TStringList) ;
var
i : integer;
begin
Lista.Clear;
for i := 0 to lb.Items.Count-1 do
   begin
   Lista.Add(lb.Items[i]);
   lb.Items[i] := ExtractFileName(lb.Items[i]);
   end;
end;

//hehe a ja sie jeszcze trudziłem z tą procką


"Life's but a walking shadow, a poor player
That struts and frets his hour upon the stage
And then is heard no more: it is a tale
Told by an idiot, full of sound and fury,
Signifying nothing."
William Shakespeare
jack
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 2 lata
  • Lokalizacja:Sosnowiec
  • Postów:390
0

Wprowadź jakąś zmienną globalną, (np. DIR) w której będzie pamiętany ostatnio otwarty katalog. Przy zmianie katalogu przez użytkownika uaktualniaj tą zmienną i ListBox-a. Po kliknięciu na itemie ListBox-a składaj pełną ścieżkę ze zmiennej DIR + '' + text zaznaczonego itema (czyli sama nazwa pliku) i ładuj ten plik do TImage-a.
Po co tutaj wprowadzać StringListy, a tym bardziej tablice dynamiczne !?

.::CYMES::.
  • Rejestracja:ponad 21 lat
  • Ostatnio:9 miesięcy
0

jack dobre, ale jest jeden problem działałoby tylko z jednym katalogiem. Przy większej ilości trzeba by było tworzyć więcej zmiennych.

TH
  • Rejestracja:około 23 lata
  • Ostatnio:około 13 lat
0

Po co tutaj wprowadzać StringListy, a tym bardziej tablice dynamiczne !?

Może po to, że pliki są w różnych katalogach? :)

jack
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 2 lata
  • Lokalizacja:Sosnowiec
  • Postów:390
0

Może po to, że pliki są w różnych katalogach? :)

W pytaniu .::CYMES::.-a można przeczytać: "Mam wczytaną listę plików z danego katalogu". Dlatego założyłem, iż chodzi o jeden (dany) katalog.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.