TOpenDialog - Multiselect

0

mam pytanie :

wale na formę element LisBox i OpenDialog - openDialog ma zaznaczoną multiselekcję i tu powstaje problem :

  • jak po zaznaczeniu wszystkich wybranych plików wpakować ich ścieżki typu : c:\winnt\plik.txt czyli bezwzgledne do i-tego elementu listbox-a

za wszystkie możliwe sugestie WIELKIE DZIĘKI
[email protected]
http://MovieDivX.prv.pl

Sethi out ;-)

0

var
i: Integer;
begin
if OpenDialog1.Execute then
ListBox1.Items.Assign(OpenDialog1.Files);
for i := 0 to ListBox1.Items.Count-1 do
ListBox1.Items[i] := ExtractFileName(ListBox1.Items[i]);
end;

Nie chce mi się już tego do BCB przepisywać. Chodzi o ideę.

0

oki - przerobiłem to w taki sposób :

int i;

if (OpenDialog1 -> Execute()
{
ListBox1 -> Items -> Assign(OpenDialog1 -> Files);
for (i = 0 ; ListBox1 -> Items -> Count-1)
{
ListBox1 -> Items[i] = ExtractFileName(ListBox1 -> Items[i]);
}

ale wywala mi coś takiego :

[C++ Error] Unit1.cpp(27): E2034 Cannot convert 'TStrings' to 'AnsiString'
[C++ Error] Unit1.cpp(27): E2342 Type mismatch in parameter 'FileName' (wanted 'const AnsiString', got 'TStrings')
[C++ Error] Unit1.cpp(27): E2352 Cannot create instance of abstract class 'TStrings'
[C++ Error] Unit1.cpp(27): E2353 Class 'TStrings' is abstract because of '_fastcall TStrings::Get(int) = 0'
[C++ Error] Unit1.cpp(27): E2285 Could not find a match for 'TStrings::TStrings(AnsiString)'
[C++ Error] Unit1.cpp(27): E2031 Cannot cast from 'AnsiString' to 'TStrings'
[C++ Error] Unit1.cpp(29): E2134 Compound statement missing

Pytanie : jak to pominąć w BCB ? bo chyba nie dam rady sam to zrobic ;-)

0

if (OpenDialog1 -> Execute() )
{

ListBox1->Items->Assign(OpenDialog1->Files);

for (int i = 0 ; i Items->Count -1 ; i++)
{

  ListBox1->Items->Strings[i] = 
  ExtractFileName(ListBox1->Items->Strings[i]);

}

}

0

Oki - poradziłem sobie zanim doszła odpowiedź

u mnie tak to wygląda - i działa idealnie :

int i;

if (OpenDialog1 -> Execute())
{
ListBox1 -> Items -> Assign(OpenDialog1 -> Files);
ListBox2 -> Items -> Assign(OpenDialog1 -> Files);
for (i = 0 ; i Items -> Count -1 ; i++ )
{
ListBox1 -> Items -> Strings[i] = ExtractFileName(ListBox2 -> Items -> Strings[i]);
ListBox2 -> Items -> Strings[i] = ListBox2 -> Items -> Strings[i];
}
}

No więc jak ktos chce to nie ma problemu - Skopiować i wklejić

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