Delphi-PRAXiS
Seite 2 von 3     12 3      

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 Drag&Drop (https://www.delphipraxis.net/1731-drag-drop.html)

nailor 20. Dez 2002 21:48

chronologisch:

-ich will drag und drop, drück mich falsch aus
-du gibts mir mit file open
-ich frag noch mal nach
-du bist enttäuscht
-ich sag, dass ich beides einbau
-du gibst mir das mit text statt file auch noch

jetzt kommt:
-ich teste, ob das mit dem text klappt
-ich suche den fehler in dem mit der datei

Christian Seehase 21. Dez 2002 00:55

Moin Nailor,

Du musst statt WM_DROPFILES WMDROPFILES nehmen, dann sollte es gehen.

Luckie 21. Dez 2002 02:16

Nein, er hat es schin richtig gemacht, er muß nur auch das ganze implementieren, sonst klappt es nicht.

Ich weiß immer noch nicht, was du willst. :(
Zitat:

Was soll den Auf das Label gezogen werden? Ich habe das jetzt so verstanden, dass das, was du auf das Label ziehst im Memo erscheinen soll. Aber was wird von wo auf das Label gezogen?

nailor 21. Dez 2002 11:36

also ich will genau folgendes:

ein pagecontrol, ind dem jede geöffnete textdatei ein tabsheet bekommt. markiert man jetzt in einer textdatei (in einem Richedit) den text, kann man ihn ja verschieben. nun soll man ihn aber auf ein anderes Tabsheet "droppen" können, und dann soll er beim jeweiligen RichEdit hinten angehängt werden. Wenn das mit den TabSheets nicht geht, kann man alternativ auch Labels oder Panels oder so was nehmen. Nur halt nicht das andere RichEdit direkt, weil das bei 10 Dateien nicht mehr alles so gut auf einen desktop passt!

nailor 18. Feb 2003 20:39

Noch ein Versuch:

Ich will, dass folgendes geht:

1. Ich starte mein Programm aus einm Arbeitsplatz-Ordner
2. Ich geh mit der Maus aus meinem Programm, in den Ordner, klick die Project1.dpr an und halte gedrückt
3. Ich zieh die Maus wieder in mein Programm, und lass los
4. Irgendwo steht nun ein String mit dem Pfad+Namen der Datei (also in nem Edit, als Caption, als string in einer Variable...)

Jan 18. Feb 2003 21:28

Hallöchen,
ich wollte nur mal schnell dem Luckie meinen Dank aussprechen, der drag & drop code ist echt klasse, also deine Arbeit war mit Sicherheit umsonst, aber nicht vergebens. :spin:
Gruß
Jan

eddy 19. Feb 2003 10:28

Hallo Nailor,

ich habe diese Beiträge gelesen und weiß immer noch nicht genau, was Du eigentlich willst. Es gibt zwar ein Haufen Interpretationen, aber eindeutig ist's wohl nicht.

Du öffnest Dein Programm und es wird ein Memo oder RichEdit angezeigt. Das ist erstmal leer. Jetzt minimierst Du Deine Anwendung, damit als Icon irgendwo abgelegte Text(??)-Dateien sichtbar werden, z.B. Project1.dpr Du siehst das Symbol auf Dein Memo und beim Loslassen soll Dein Programm die entsprechende Datei prüfen, ob es sich um eine Datei mit lesbaren Text handelt (keine EXE, DLL, GIF, PPS, ...) und, sollte es ein Text sein, öffnen, den gesamten Inhalt makieren und diesen dann in den Zwischenspeicher kopieren. Diese Kopie soll anschließend an der Stelle, an dem sich der Cursor in Deinem Memo befindet eingefügt werden.

Dann wiederholst Du das Ganze mit dem nächsten Text z.B Projekt.pas

Anschließend kannst Du Dein Memo bearbeiten, sicherlich speichern (??)

Habe ich das so richtig verstanden?


mfg
eddy

eddy 20. Feb 2003 23:27

Hallo Nailor,

vielleicht hilft Dir das weiter:

Code:
procedure TFTest.WMDROPFILE(var msg: TMessage);
var
  hDrop : Cardinal ;
  fName : array[0..MAX_PATH] of Char ;
  fnnew, fnold : string;
  i : integer;
begin
   hDrop := Msg.WParam ;
   fName := '' ;

   i := 0;
   fnold := '';
   DragQueryFile(hDrop, i, fName, MAX_PATH);
   fnnew := string(fName);
   while fnnew <> fnold do begin
     fnold := fnnew;
     Memo2.Lines.LoadFromFile(String(fName));
     Memo2.SelectAll;
     Memo2.CopyToClipboard;
     Memo1.SelStart := Memo1.GetTextLen;
     Memo1.Lines.Add('');
     Memo1.Lines.Add('');
     Memo1.Lines.Add('');
     Memo1.Lines.Add(fnnew);
     Memo1.Lines.Add('');
     Memo1.PasteFromClipboard;

//     RichEdit1.Lines.LoadFromFile(String(fName));
     inc(i);
     DragQueryFile(hDrop, i, fName, MAX_PATH);
     fnnew := string(fName);
   end;
   DragFinish (hDrop);
end;


procedure TFTest.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle,True);
end;
Im Explorer angeklickte Dateien (eine oder mehrere) werden ins Memo der eigenen Anwendung gezogen. Nach loslassen der Maustaste werden diese im Memo eingetragen.

Das Löschen des Memo's sowie die Auswertung, ob die ins Memo gezogene Datei auch lesbarer Text ist, sind hier noch nicht enthalten.

Die Variante, aus TabSheet's Text ins Memo zu transferieren ist noch einfacher:
- Text markieren
- Text in den Zwischenspeicher
- Text in Memo aus Zwischenspreicher

mfg
eddy

nailor 21. Feb 2003 15:20

soweit alles schön und gut! Aber es läuft nicht! Was muss ich einbinden für: DragQueryFile, DragFinish, DragAcceptFiles? Mit dem Code den ich habe sind das Undefined Identifiers. :cry:

eddy 21. Feb 2003 20:09

Hallo Nailor,

Code:
uses
  shellapi;
steht im ersten Beitrag von Luckie zu diesem Thema!

mfg
eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 Uhr.
Seite 2 von 3     12 3      

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