3 3 Stimmen

Lazarus: FormDropFiles einer bestimmten ListView zuordnen

Tutorial von Delphianer | 24.10.2013 um 01:30 Uhr

Jedes Formular eines Lazarus Programms stellt die praktische Routine FormDropFiles zur Verfügung, die es einem sehr leicht macht, mit Dateien zu arbeiten, die per Drag and Drop auf das Programm gezogen wurden.

Wenn man allerdings mehrere Controls (zum Beispiel ListViews) auf seiner Form hat, die Dateien aufnehmen können, stellt sich natürlich die Frage, welche ListView die Dateien empfangen hat.

Wie man dieses Problem löst, möchte ich euch heute vorstellen. Dazu zunächst den erforderlichen Code:

procedure Tprog.FormDropFiles(Sender: TObject; 
  const FileNames: array of String);
var
  c:  TControl;
  i:  integer;
  li: TListItem;
begin

  c := FindControlAtPosition(Mouse.CursorPos, false);

  if c is TListView then begin
     for i := 0 to length(FileNames)-1 do begin
         li := (c as TListView).Items.Add;
         li.Caption := FileNames[i];
     end;
  end else begin
     showmessage('Hier kann man keine Dateien ablegen.');
  end;

end;   

Das Prinzip ist relativ einfach: In dem Moment, indem FormDropFiles ausgelöst wird, erfragen wir mit der Funktion FindControlAtPosition das Control, dass sich gerade unter unserer Maus befindet (Mouse.CursorPos).

Anschließend prüfen wir, ob dieses Control auch eine TListView ist (es könnte schließlich auch ein Button oder ein Label sein). Wenn dies der Fall ist, fügen wir zu genau dieser ListView unserer Datei hinzu.

In dem Fall, dass unser Control keine ListView ist, zeigen wir eine kleine Meldung an, die kann man natürlich aber auch weglassen.

Alternativ lässt sich das Beispiel von oben natürlich auch auf jedes andere Control wie zum Beispiel eine TListBox oder ein Memo übertragen, indem man statt auf die ListView auf dieses Control prüft prüft und die Dateien entsprechend verarbeitet.

AntwortenPositivNegativ

Über den Autor

Avatar AutorDer Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen | Nachricht

 

Ähnliche Themen

Wichtiger Hinweis

Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.