![]() |
Meine Drag'n'Drop-Funktion ergänzen
Hi,
ich habe wie folgt in mein Prog ne Drag'n'Drop Funktion eingebaut:
Delphi-Quellcode:
Jetzt mein Problem: damit ich die Daten, der auf das Prog zu ziehender Datei, laden kann, muss ich den Datentyp der Datei wissen. Wie kriege ich das raus, wer kann mir das sagen? :gruebel:
implementation
uses ShellAPI; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Form1.Handle, true); end; type TForm1 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); protected procedure WMDROPFILES(var Msg: TMessage); message WM_DROPFILES; private ... procedure TForm1.WMDROPFILES(var Msg: TMessage); begin showmessage('Ja es hat geklappt, hier lade ich die Daten'); end; |
Re: Meine Drag'n'Drop-Funktion ergänzen
Genügt es nicht, nach der Endung zu schauen?
|
Re: Meine Drag'n'Drop-Funktion ergänzen
Zitat:
|
Re: Meine Drag'n'Drop-Funktion ergänzen
|
Re: Meine Drag'n'Drop-Funktion ergänzen
Ja das habe ich gefunden ->
Delphi-Quellcode:
Aber wie finde ich den FileName raus?
function ExtractFileExt(const FileName: string): string; overload;
|
Re: Meine Drag'n'Drop-Funktion ergänzen
Delphi-Quellcode:
procedure TForm1.WMDROPFILES(var Msg: TMessage);
var i, count: Cardinal; Buffer, Extension: string; begin inherited; Buffer := ''; count := DragQueryFile(Msg.WParam,$FFFFFFFF,nil,0); for i := 0 to count - 1 do begin SetLength(Buffer,DragQueryFile(Msg.WParam,i,nil,0) + 1); DragQueryFile(Msg.WParam,i,@Buffer[1],Length(Buffer)); Extension := ExtractFileExt(Buffer); ShowMessage(Extension); end; end; |
Re: Meine Drag'n'Drop-Funktion ergänzen
:shock: so kompliziert? :shock:
OK thx :thumb: |
Re: Meine Drag'n'Drop-Funktion ergänzen
Du kannst Dir natürlich auch entsprechende Komponenten installieren, siehe
![]() |
Re: Meine Drag'n'Drop-Funktion ergänzen
Will ich vermeiden, weiß sowieso nicht wie man sie richtig einsetzen muss.
|
Re: Meine Drag'n'Drop-Funktion ergänzen
Hab jetzt ein Problem, welches ich nicht lösen kann.
Und zwar ich lade die Daten per Import und will auch per Drag'n'Drop, siehe Code. Bei der Lösung per Drag'n'Drop bekomme ich als die Fehlermeldung Zitat:
Delphi-Quellcode:
//Import
procedure TForm1.ChannelListImport1Click(Sender: TObject); var i: Integer; List : TStringList; List2: TStringList; begin if OpenDialog1.Execute then begin List:=TStringList.Create; try List.LoadFromFile(OpenDialog1.FileName); if ListBox1.Count<>0 then begin if MessageDlg(_('Retain existing radio stations list?'), mtInformation, [mbYes, mbNo], 0) = mrNo then begin ListBox1.Clear; ListBox2.Clear; ListBox3.Clear; ListBox4.Clear; end; end; if ExtractFileExt(OpenDialog1.Filename)='.crp' then begin for i:=0 to List.Count-1 do begin List2:=Explode('<>', List[i]); ListBox1.Items.Insert(i, List2[1]); ListBox2.Items.Insert(i, List2[2]); ListBox3.Items.Insert(i, List2[3]); ListBox4.Items.Insert(i, List2[4]); List2.Free; end; end else begin for i:=0 to List.Count-1 do begin List2:=Explode('=', List[i]); ListBox1.Items.Insert(i, List2[1]); ListBox2.Items.Insert(i, List2[2]); ListBox3.Items.Insert(i, List2[3]); ListBox4.Items.Insert(i, List2[4]); List2.Free; end; end; finally List.Free; end; end; end;
Delphi-Quellcode:
//Und hier per Drag'n'Drop
procedure TForm1.WMDROPFILES(var Msg: TMessage); var j, count: Cardinal; Buffer: String; i: Integer; List : TStringList; List2: TStringList; begin inherited; Buffer := ''; count := DragQueryFile(Msg.WParam, $FFFFFFFF, nil, 0); for j := 0 to count - 1 do begin SetLength(Buffer, DragQueryFile(Msg.WParam, j, nil, 0) + 1); DragQueryFile(Msg.WParam, j, @Buffer[1], Length(Buffer)); end; //Laden List:=TStringList.Create; try List.LoadFromFile(Buffer); if ListBox1.Count<>0 then begin if MessageDlg(_('Retain existing radio stations list?'), mtInformation, [mbYes, mbNo], 0) = mrNo then begin ListBox1.Clear; ListBox2.Clear; ListBox3.Clear; ListBox4.Clear; end; end; if ExtractFileExt(Buffer)='.crp' then begin showmessage(inttostr(ListBox1.Count)); for i:=0 to List.Count-1 do begin showmessage(inttostr(ListBox1.Count)); List2:=Explode('<>', List[i]); ListBox1.Items.Insert(i, List2[1]); ListBox2.Items.Insert(i, List2[2]); ListBox3.Items.Insert(i, List2[3]); ListBox4.Items.Insert(i, List2[4]); List2.Free; end; end else begin for i:=0 to List.Count-1 do begin List2:=Explode('=', List[i]); ListBox1.Items.Insert(i, List2[1]); ListBox2.Items.Insert(i, List2[2]); ListBox3.Items.Insert(i, List2[3]); ListBox4.Items.Insert(i, List2[4]); List2.Free; end; end; finally List.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz