Avatar billede psycosoft-funware Nybegynder
16. december 2005 - 13:22 Der er 5 kommentarer og
1 løsning

hjælp til TListView

hej eksperter

en jeg kender har lavet en dll i c++ til mig, den kan konvertere nogle filformater. begge funktioner tager 2 parametre a typen CHAR (PChar i delphi), jeg har så en TListView - sat til vsReport som skal være 'beholder' for de filer der skal konverteres. der er så nogle 'subitems' med fil størelse osv. hvordan laver man det så smartest med en open dialog der tilføjer de valgte filer, og når brugeren så klikker konverter tager den filerne i TListView og 'fodre' funktionen' med et filnavn, et efter et?

/FunteX! :-)
Avatar billede kroning Nybegynder
16. december 2005 - 15:47 #1
Du sætter ofAllowMultiSelect=true i din Open dialog og så lidt kode:

function GetFileSize(FileName : string) : string;
var
  sr: TSearchRec;
begin
    if FindFirst(FileName, faAnyFile, sr) = 0 then
        Result:=IntToStr(sr.Size)
  else
      Result:='0';
    FindClose(sr);
end;

procedure TForm1.FillListView(Files : TStrings);
var
    i : integer;
begin
    for i:=0 to Files.Count-1 do
        with ListView1.Items.Add do
    begin
        Caption:=Files[i];
            SubItems.Add(GetFileSize(Caption));
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    if OpenDialog1.Execute then
        FillListView(OpenDialog1.Files);
end;

---------------

Når der trykkes på konverter kan du så bruge:

var
    i : integer;
begin
    for i:=0 to ListView1.Items.Count-1 do
      DinFunktion(PChar(ListView1.Items[i].Caption), PChar(???));
end;
Avatar billede psycosoft-funware Nybegynder
27. december 2005 - 14:08 #2
jeg har et lille problem med koden, i argument 2 i funktionen. je har en edit hvor burgeren har valgt en mappe f.eks d:\converted\ og i kolonne 4 filnavnet feks 123.wav.
hvordan kombinere jeg så disse to ting så det bliver d:\converted\123.wav?

/FunteX!
Avatar billede kroning Nybegynder
27. december 2005 - 17:36 #3
Hvis der er valgt en linie i en ListView og Mappen er i den første kolonne og filnavnet er i kolonne 4:

var
  Komplet : string;
begin
  Komplet:=ListView.Selected.Caption; // giver mappen f.eks. d:\converted\
  Komplet:=Komplet+ListView.Selected.SubItems[2]; // mappen+filnavn i kolonne 4
end;

eller i en linie

Komplet:=ListView.Selected.Caption+ListView.Selected.SubItems[2];

Den første kolonne i en listview er Caption, derefter kommer SubItems som starter med SubItems[0], dvs. den 4. kolonne i en ListView er SubItems[2]
Avatar billede psycosoft-funware Nybegynder
05. januar 2006 - 13:06 #4
hej kroning, undskyld at jeg først svare nu - har haft så meget at se til. koden virker perfekt - drop et svar og point'ne er dine :D
Avatar billede kroning Nybegynder
05. januar 2006 - 14:39 #5
Lyder godt
Avatar billede psycosoft-funware Nybegynder
05. januar 2006 - 19:58 #6
således, takker mange gange for hjælpen - og godt nytår :D
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