Mit Drag and Drop Dateien laden, abarbeiten
-
- Beiträge: 244
- Registriert: Do 21. Jan 2010, 22:33
- OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)
Mit Drag and Drop Dateien laden, abarbeiten
Hallo, ich bin noch blutiger Anfänger in Lazarus (habe schon viel mit TP programmiert, ein wenig auch mit FPC). Ich habe Windows Vista 32bit. Möchte jetzt ein Programm schreiben, wo ich (Bild-)Dateien mit einer Maus in einem Verzeichnis anklicken und auswählen kann (geht das nur über den Windows Explorer oder kann man das auch intern programmieren?) und dann diese Dateien nacheinander mit einem Unterprogramm bearbeiten kann.
Es sollte aber auch möglich sein, mit Kommandozeile zu arbeiten. Nur wenn die leer ist, soll die Dateisuche beginnen.
Auch sollte es möglich sein, dieses Unterprogramm mit Tastenkombination aufzurufen.
Wenn mir da jemand behilflich sein kann, würde mich sehr freuen.
herzlichen Dank
Es sollte aber auch möglich sein, mit Kommandozeile zu arbeiten. Nur wenn die leer ist, soll die Dateisuche beginnen.
Auch sollte es möglich sein, dieses Unterprogramm mit Tastenkombination aufzurufen.
Wenn mir da jemand behilflich sein kann, würde mich sehr freuen.
herzlichen Dank
Re: Mit Drag and Drop Dateien laden, abarbeiten
Hallo br_klaus
Kannst du deine Frage ein bisschen präzisieren und vor allem Schritt für Schritt formulieren?
So klingt es irgendwie nach "ich möchte alles, weiss aber nicht was".
Kannst du deine Frage ein bisschen präzisieren und vor allem Schritt für Schritt formulieren?
So klingt es irgendwie nach "ich möchte alles, weiss aber nicht was".

-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: Mit Drag and Drop Dateien laden, abarbeiten
Theo hat schon kritisiert, dass Deine Frage zu unspezifisch ist. Drag 'n Drop wird recht gut von Brian Long erklärt.
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Mit Drag and Drop Dateien laden, abarbeiten
Kann man auch.br_klaus hat geschrieben: wo ich (Bild-)Dateien mit einer Maus in einem Verzeichnis anklicken und auswählen kann (geht das nur über den Windows Explorer oder kann man das auch intern programmieren?)
Ich weiß aber nicht, ob es fertige Komponenten dafür gibt. Falls nicht, kein Problem. Man nimmt einfach ein ListView, wo man die Dateien als Einträge einfügt und die Datei-Symbole über die WinAPI abfragt.
Einfach ein Edit-Feld anlegen und bei ENTER-Betätigung den Inhalt in einen TProcess stopfen und den ausführen.br_klaus hat geschrieben:Es sollte aber auch möglich sein, mit Kommandozeile zu arbeiten.
-
- Beiträge: 244
- Registriert: Do 21. Jan 2010, 22:33
- OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)
Re: Mit Drag and Drop Dateien laden, abarbeiten
Herzlichen Dank für die raschen Antworten. V.a die Website von Brian Long gefällt mir gut. Ist aber sehr umfangreich. Muß mich da erst mal einarbeiten.
Was mir vorschwebt, ist:
Ich habe in einem Verzeichnis (z.B. C:\Bilder) mehrere Bilddateien.
Von diesen möchte ich einige auswählen (mit Ctrl + linker Maustaste: aktiv:=not aktiv),
dann mit ENTER die ausgewählten Dateien (deren Namen) auf eine Form ziehen (oder mit Drag and Drop).
Gewünschte Unterprograme und zugehörge Parameter auswählen (Auswahlfeld),
mit ENTER starten und damit nacheinander diese Bilddateien laden (Namen als PChar) und bearbeiten.
(Ich arbeite mit der Unit FreeImage, die gebraucht fast nur Zeigervariable.)
---------------------------------
Wie kann man da Dateien als Einträge einfügen und dann über die WinAPI abfragen?
----------------------------------
Ich dachte immer, mit Kommandozeile wird ein Programm automatisch gestartet, ohne ENTER eingeben zu müssen?
Wenn ich mehr Zeit habe, will ich versuchen, meine Frage noch näher zu spezifizieren.
Herzlichen Dank für alles!
br_klaus
Was mir vorschwebt, ist:
Ich habe in einem Verzeichnis (z.B. C:\Bilder) mehrere Bilddateien.
Von diesen möchte ich einige auswählen (mit Ctrl + linker Maustaste: aktiv:=not aktiv),
dann mit ENTER die ausgewählten Dateien (deren Namen) auf eine Form ziehen (oder mit Drag and Drop).
Gewünschte Unterprograme und zugehörge Parameter auswählen (Auswahlfeld),
mit ENTER starten und damit nacheinander diese Bilddateien laden (Namen als PChar) und bearbeiten.
(Ich arbeite mit der Unit FreeImage, die gebraucht fast nur Zeigervariable.)
---------------------------------
Und wie macht man das?carli hat geschrieben: Man nimmt einfach ein ListView, wo man die Dateien als Einträge einfügt und die Datei-Symbole über die WinAPI abfragt.
Wie kann man da Dateien als Einträge einfügen und dann über die WinAPI abfragen?
----------------------------------
Wie geht das?carli hat geschrieben:Einfach ein Edit-Feld anlegen und bei ENTER-Betätigung den Inhalt in einen TProcess stopfen und den ausführen.
Ich dachte immer, mit Kommandozeile wird ein Programm automatisch gestartet, ohne ENTER eingeben zu müssen?
Wenn ich mehr Zeit habe, will ich versuchen, meine Frage noch näher zu spezifizieren.
Herzlichen Dank für alles!
br_klaus
-
- Beiträge: 475
- Registriert: Do 15. Nov 2007, 16:58
- OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
- CPU-Target: i386, x64
- Wohnort: Gera
Re: Mit Drag and Drop Dateien laden, abarbeiten
Hast du dir schon mal den OpenPictureDialog angesehen?br_klaus hat geschrieben:Was mir vorschwebt, ist:
Ich habe in einem Verzeichnis (z.B. C:\Bilder) mehrere Bilddateien.
Von diesen möchte ich einige auswählen (mit Ctrl + linker Maustaste: aktiv:=not aktiv),
dann mit ENTER die ausgewählten Dateien (deren Namen) auf eine Form ziehen (oder mit Drag and Drop).
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
ListBox1.Items.AddStrings(OpenPictureDialog1.Files);
end;
end;
br_klaus hat geschrieben:Gewünschte Unterprograme und zugehörge Parameter auswählen (Auswahlfeld),
mit ENTER starten und damit nacheinander diese Bilddateien laden (Namen als PChar) und bearbeiten.

Code: Alles auswählen
procedure TForm1.Button2Click(Sender: TObject);
var i:Integer;
begin
for i:=0 to ListBox1.Items.Count-1 do
begin
MeineFunktion(ListBox1.Items.Strings[i]);
end;
end;
mfg Ingo
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Mit Drag and Drop Dateien laden, abarbeiten
Schau mal in der Bücherei deines Vertrauens nach dem Buch "Delphi 3 für Dummies", da sind so einige Kniffe erklärt (DragnDrop, PC runterfahren, Icons aus Windows etc.pp)br_klaus hat geschrieben:Und wie macht man das?carli hat geschrieben: Man nimmt einfach ein ListView, wo man die Dateien als Einträge einfügt und die Datei-Symbole über die WinAPI abfragt.
Wie kann man da Dateien als Einträge einfügen und dann über die WinAPI abfragen?
Die nötigen Funktionen dafür findest du hauptsächlich in der shell32 oder api32 oder wie auch immer die heißt (Autovervollst. hilft; vlt. ist auch alles in dei Unit windows gerutscht)
du machst ein Edit-Feld, setzt das KeyPress-Ereignis auf:br_klaus hat geschrieben:Wie geht das?carli hat geschrieben:Einfach ein Edit-Feld anlegen und bei ENTER-Betätigung den Inhalt in einen TProcess stopfen und den ausführen.
Ich dachte immer, mit Kommandozeile wird ein Programm automatisch gestartet, ohne ENTER eingeben zu müssen?
- sollte key = #13 sein dann:
- setze key auf #0
- erstelle ein Objekt TProcess
- füttere das Objekt mit Ausführungsverzeichnis und dem Kommando
- rufe Execute auf
- lösche den Edit-Text (oder auch nicht)
-
- Beiträge: 244
- Registriert: Do 21. Jan 2010, 22:33
- OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
- CPU-Target: 32Bit
- Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)
Re: Mit Drag and Drop Dateien laden, abarbeiten
Herzlichen Dank!
Mit OpenPictureDialog, das hat geklappt. Habe nicht gewußt, daß es da die Option AllowMultiSelect gibt. Da habe ich jetzt noch eine Frage: Wenn ich in der TlistBox die Option MultiSelect aktiviere, dann kann ich auch in dieser Box mit Ctrl und CursorClick bestimmte Dateien auswählen. Aber wie kann ich dann auf diese zugreifen? Gibt es da ein bestimmtes Flag, das durch das Auswählen gesetzt wird?
Gibt es eine Zusammenstellung der verschiedenen Komponenten von Lazarus und deren Eigenschaften und Möglichkeiten, damit zu arbeiten (Demos)? Leider sitze ich im fernen Brasilien, sodaß ich keinerlei Möglichkeit habe, in einen Bücherladen zu gehen und mir da Bücher über Delphi 3 o.ä. zu besorgen (bin Priester in einem Kloster in der Nähe von Aparecida - falls da jemand Fragen hat über den Glauben o.ä., kann ich gerne Antwort geben: br-klaus@web.de).
Herzlichen Dank und Gottes Segen!
Mit OpenPictureDialog, das hat geklappt. Habe nicht gewußt, daß es da die Option AllowMultiSelect gibt. Da habe ich jetzt noch eine Frage: Wenn ich in der TlistBox die Option MultiSelect aktiviere, dann kann ich auch in dieser Box mit Ctrl und CursorClick bestimmte Dateien auswählen. Aber wie kann ich dann auf diese zugreifen? Gibt es da ein bestimmtes Flag, das durch das Auswählen gesetzt wird?
Gibt es eine Zusammenstellung der verschiedenen Komponenten von Lazarus und deren Eigenschaften und Möglichkeiten, damit zu arbeiten (Demos)? Leider sitze ich im fernen Brasilien, sodaß ich keinerlei Möglichkeit habe, in einen Bücherladen zu gehen und mir da Bücher über Delphi 3 o.ä. zu besorgen (bin Priester in einem Kloster in der Nähe von Aparecida - falls da jemand Fragen hat über den Glauben o.ä., kann ich gerne Antwort geben: br-klaus@web.de).
Herzlichen Dank und Gottes Segen!
Re: Mit Drag and Drop Dateien laden, abarbeiten
mit
for z := 0 to (listview.Items.Count - 1) do begin
if listview.Items[z].Selected then begin
....
end;
end;
usw. kannst das abfragen
OT:
unter listview.Items[z].Data kann man übrigens objecte mit "mehr info" speichern...
wobei aber virtualTreeView sowieso die bessere alternative wäre..
for z := 0 to (listview.Items.Count - 1) do begin
if listview.Items[z].Selected then begin
....
end;
end;
usw. kannst das abfragen
OT:
unter listview.Items[z].Data kann man übrigens objecte mit "mehr info" speichern...
wobei aber virtualTreeView sowieso die bessere alternative wäre..
Re: Mit Drag and Drop Dateien laden, abarbeiten
Es gibt die Examples im gleichnamigen Verzeichnis der Installation.br_klaus hat geschrieben: Gibt es eine Zusammenstellung der verschiedenen Komponenten von Lazarus und deren Eigenschaften und Möglichkeiten, damit zu arbeiten (Demos)?
Es gibt die Doku: http://wiki.lazarus.freepascal.org/Laza ... ntation/de" onclick="window.open(this.href);return false;
Es gibt Online-Ressourcen für Delphi, die man z.T. übernehmen kann. z.B. http://www.delphi-treff.de/tutorials/" onclick="window.open(this.href);return false;
Ansonsten Google.