Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Meine Drag'n'Drop-Funktion ergänzen (https://www.delphipraxis.net/149884-meine-dragndrop-funktion-ergaenzen.html)

AlexII 1. Apr 2010 16:17


Meine Drag'n'Drop-Funktion ergänzen
 
Hi,

ich habe wie folgt in mein Prog ne Drag'n'Drop Funktion eingebaut:

Delphi-Quellcode:
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;
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:

DeddyH 1. Apr 2010 16:32

Re: Meine Drag'n'Drop-Funktion ergänzen
 
Genügt es nicht, nach der Endung zu schauen?

AlexII 1. Apr 2010 16:34

Re: Meine Drag'n'Drop-Funktion ergänzen
 
Zitat:

Zitat von DeddyH
Genügt es nicht, nach der Endung zu schauen?

Ja klar, ist sogar besser :-D aber wie? :gruebel:

mirage228 1. Apr 2010 16:35

Re: Meine Drag'n'Drop-Funktion ergänzen
 
Delphi-Referenz durchsuchenWM_DROPFILES, Delphi-Referenz durchsuchenExtractFileExt

Über die Suche solltest Du alles Relevante finden ;)

AlexII 1. Apr 2010 16:39

Re: Meine Drag'n'Drop-Funktion ergänzen
 
Ja das habe ich gefunden ->
Delphi-Quellcode:
function ExtractFileExt(const FileName: string): string; overload;
Aber wie finde ich den FileName raus?

DeddyH 1. Apr 2010 16:42

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;

AlexII 1. Apr 2010 16:45

Re: Meine Drag'n'Drop-Funktion ergänzen
 
:shock: so kompliziert? :shock:

OK thx :thumb:

DeddyH 1. Apr 2010 16:48

Re: Meine Drag'n'Drop-Funktion ergänzen
 
Du kannst Dir natürlich auch entsprechende Komponenten installieren, siehe hier.

AlexII 1. Apr 2010 16:51

Re: Meine Drag'n'Drop-Funktion ergänzen
 
Will ich vermeiden, weiß sowieso nicht wie man sie richtig einsetzen muss.

AlexII 1. Apr 2010 17:54

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:

Listenindex überschreitet das Maximum(1)
Was kann das den sein? Beim Importieren bekomm ich die aber nicht.

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:25 Uhr.
Seite 1 von 6  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz