Gå til innhold

Hvordan henter man ut filnavn fra TShellListView


Anbefalte innlegg

Jeg har opprettet en ShellListView1 og en ListBox1 og ønsker å dra filer fra ShellListView og dumpe navnene i en ListBox.

 

Her er koden som jeg har laget til dette og mener at dette skulle ha fungert, men jeg får ikke lagt over noen filnavn.

 

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;

State: TDragState; var Accept: Boolean);

begin

Accept := Source is TShellListView;

end;

 

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);

var i:integer;

begin

if (Sender is TListBox) and (Source is TShellListView) then begin

with Sender as TListBox do

for i:=1 to ShellListView1.SelCount do

begin

ListBox1.Items.Add(ShellListView1.Items.Item.Caption);

end;

end;

end;

 

Noen som kan hjelpe meg med denne?

Lenke til kommentar
Videoannonse
Annonse

Code:

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var i, Max: Integer;
begin
if (Sender is TListBox) and (Source is TShellListView) then begin
Max := TShellListView(Source).Items.Count - 1;
with Sender as TListBox do
for i := 0 to Max do
begin
if TShellListView.Items[i].Selected then
TListBox(Sender).Items.Add(TShellListView(Source).Items[i].Caption);
end;
end;
end;

 

Dette bør virka bedre. Dersom det berre var eit item i din TShellListView, ville den berre bladd igjennom Item 1. No blar den gjennom alle, og sjekker om dei er valgt, før den legg den til i lista. Eg har og lagt til ein del typecasting her, slik at du kan bruka prosedyren for fleire ulike TShellListViews og TListBoxes.

 

Håper dette hjelper. :smile:

 

mvh.,

Vegard

Lenke til kommentar

Takk for at du tar deg tid Vegard.

 

Vel, dette ga det samme resultatet, ingenting. Problemet er at det ser ut som koden virker bra, men jeg får bare ut blanke verdier i Listboxen. Drar jeg over 10 filer blir det lagt til 10 blanke verdier i Listboxen.

Lenke til kommentar

Quote:


_JAY_ skrev (2002-07-18 19:27):

Takk for at du tar deg tid Vegard.


Vel, dette ga det samme resultatet, ingenting. Problemet er at det ser ut som koden virker bra, men jeg får bare ut blanke verdier i Listboxen. Drar jeg over 10 filer blir det lagt til 10 blanke verdier i Listboxen.


 

Eg har no gravd litt i TShellListView, ShellCtrls.pas, og det ser ikkje ut til at det er så lett å hente ut navnet til dei filene du drar over. Det virkar på meg som om denne kontrollen er litt ukompatibel. Den setter ikkje .Items.Caption, sjølv som det finns rett antall Items.

 

TShellListView er ikkje dokumentert, og svært dårlig kommentert (har til no funnet ein kommentar i fila), og det er difor svært vanskelig for meg å gje deg råd. Sorry!

 

mvh.,

Vegard

Lenke til kommentar

Takk for rask respons.

 

Før så brukte jeg TFileListBox, TDirectoryListBox osv., men med v6 så kom TShellListView og TShellTreeView som så litt penere ut.

 

Jeg lurer på om du (noen) vet om samme type komponenter som jeg kan få tak i?

Lenke til kommentar

Quote:


..det finns sikkert ein eller anna løysing på problemet.


 

Det fantes en løsning og den kommer her:

----

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);

var

i : Integer;

begin

if (Sender is TListBox) and (Source is TShellListView) then begin

with Sender as TListBox do

for i:=1 to TShellListView(Source).Items.Count-1 do

if TShellListView(Source).Items.Item.Selected then TListBox(Sender).Items.Add(ExtractFilename(TShellListView(Source).Folders.PathName));

end;

end;

----

 

Fikk hjelp av et annet klokt hode på 'Infinite Loops' (Delphi forum).

 

mvh.

Kjetil

 

<font class=editedby>[ Denne Melding var redigert av: _JAY_ på 2002-07-20 12:19 ]</font>

 

[ Denne Melding var redigert av: _JAY_ på 2002-07-20 12:20 ]

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...