Avatar billede spiritusanta Nybegynder
20. januar 2004 - 15:45 Der er 11 kommentarer og
2 løsninger

Fra Filelistbox til Filelistbox

Jeg arbejder i programmet C++ Builder.
Jeg har i properties for FileListBox1, gjort sådan, at der kun bliver vist mapper.
Når jeg nu klikker på en af mapperne, vil jeg gerne have vist indholdet fra FileListBox1 i FileListBox2, hvordan gøres dette?
Avatar billede jakobdo Ekspert
20. januar 2004 - 16:20 #1
Kan du gøre følgende:

FileListBox1Click()
{
  FileListBox2->Directory = FileListBox1->FileName;
}
Avatar billede akempff Nybegynder
20. januar 2004 - 16:21 #2
Du må nok være lidt mere specifik. Er det alle dine directories der skal kopieres over i din anden filelistbox eller er de filer der i mappen eller hvordan?
Avatar billede spiritusanta Nybegynder
20. januar 2004 - 16:29 #3
akempff-> Jeg har i FileListBox en liste over alle directories i en mappe, det jeg vil er nu ved at klikke på en af mapperne, få vist filerne fra den angivende mappe i en anden FileListBox

jakobdo-> Det virker ikke.... når jeg kører programmet og forsøger at klikke på en af mapperne, melder den "File not found"
Avatar billede jakobdo Ekspert
20. januar 2004 - 16:33 #4
I know!
Hvorfor ikke bare bruge en DirectoryListBox ???
Det er jo rimelig nemt at have med at gøre.
Avatar billede spiritusanta Nybegynder
20. januar 2004 - 16:36 #5
Hvis jeg skal bruge den, ville jeg gerne have mulighed for at få skjult "mappeikonerne" i siden
og måske hvis muligt, at få skjult dele af stien :)
Avatar billede jakobdo Ekspert
20. januar 2004 - 16:38 #6
Problemet er at der bliver sat [ og ] om directory navne, så de skal klippes væk, og har ikke lige mere tid til at hjælpe...
Avatar billede akempff Nybegynder
20. januar 2004 - 17:08 #7
Her er noget, men det kan sikkert gøres lidt mere elegant hvis du leger lidt med det.

  FileListBox2->Directory = FileListBox1->Directory;
  FileListBox2->Directory = ExtractFileName(FileListBox1->FileName);
Avatar billede jakobdo Ekspert
21. januar 2004 - 11:40 #8
Denne løsning er ikke køn, men den virker... :o)
  AnsiString temp = FLB1->FileName;
  AnsiString temp1;
  AnsiString temp2;
  int found = 0;
  temp = temp.Delete(temp.Length(),1);
  found = temp.Pos("[");
  temp1 = temp.SubString(0,found-1);
  temp2 = temp.SubString(found+1,temp.Length());
  FLB2->Directory = temp1 + temp2;
Avatar billede jakobdo Ekspert
21. januar 2004 - 11:44 #9
Du kan garanteret også bruge denne funktion senere:
void __fastcall TF1::FLB1DblClick(TObject *Sender)
{
  AnsiString temp = FLB1->FileName;
  AnsiString temp1;
  AnsiString temp2;
  temp = temp.Delete(temp.Length(),1);
  temp1 = temp.SubString(0,temp.Pos("[")-1);
  temp2 = temp.SubString(temp.Pos("[")+1,temp.Length());
  FLB1->Directory = temp1 + temp2;
}
Avatar billede spiritusanta Nybegynder
21. januar 2004 - 17:15 #10
Mange tak for hjælpen til jer begge to :)

Koden ser nu således ud og den virker perfekt :D

void __fastcall TForm1::FileListBox2Click(TObject *Sender)
{
  AnsiString temp = FileListBox2->FileName;
  AnsiString temp1;
  AnsiString temp2;
  temp = temp.Delete(temp.Length(),1);
  temp1 = temp.SubString(0,temp.Pos("[")-1);
  temp2 = temp.SubString(temp.Pos("[")+1,temp.Length());
  FileListBox2->Directory = temp1 + temp2;
  FileListBox1->Directory = FileListBox2->Directory;
  FileListBox1->Directory = ExtractFileName(FileListBox2->FileName);
}

Så nu mangler vi bare, at i lægger et svar :)
Avatar billede akempff Nybegynder
21. januar 2004 - 18:23 #11
svar
Avatar billede jakobdo Ekspert
22. januar 2004 - 09:00 #12
Svar...
Et spørgsmål, hvad bruger du denne kode til:
FileListBox1->Directory = FileListBox2->Directory;
FileListBox1->Directory = ExtractFileName(FileListBox2->FileName);

Du skal lave følgende:
void __fastcall TForm1::FileListBox1Click(TObject *Sender)
{
  AnsiString temp = FileListBox1->FileName;
  AnsiString temp1;
  AnsiString temp2;
  temp = temp.Delete(temp.Length(),1);
  temp1 = temp.SubString(0,temp.Pos("[")-1);
  temp2 = temp.SubString(temp.Pos("[")+1,temp.Length());
  FileListBox2->Directory = temp1 + temp2;
}
Avatar billede spiritusanta Nybegynder
22. januar 2004 - 11:35 #13
Det første stykke kode, som du gav mig, bruger jeg til at hoppe frem og tilbage i arkivet i ListBox1 og den næste kode bruges nu til at få indholdet af den enkelte mappe vist i Listbox2
Mange tak for hjælpen til jer begge :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis