Thema: dragdrop

Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#11

AW: dragdrop

  Alt 29. Aug 2012, 18:39
Dann sag mir mal bitte welche das sein sollen
Delphi-Quellcode:
// kommentierter Sourcecode
WM_DROPFILES:
    begin
      // es geht los
      // ganz offensichtlich soll die Namen von gedroppten Dateien ermittelt werden
      nFilesDropped := DragQueryFile(wP, LongWord(-1), '', 0);
      sFileName := ''; // <= überflüssiger Code

      // Wenn es nur eine Datei gab, dann ist das ein Spezialfall des allgemeinen Falls
      // dass mehrere Dateien möglich sind.
      // Entweder verarbeitet man nur die 1. Datei oder man muss dem User sagen,
      // dass er nur eine Datei droppen darf
      if nFilesDropped = 1 then
      begin
        SetLength(sFileName, DragQueryFile(wP, 0, nil, 0));
        DragQueryFile(wP, 0, @sFileName[1], Length(sFileName) + 1);

        // Nanu, weshalb wird jetzt der Dateiname verfälscht?
        // das macht doch keinen Sinn
        sFileName := LowerCase(sFileName);

        // was nun folgt hat nix mit Drag & Drop zu tun ***
        goProgBar.Dirty := True; // Hä?
        oButton.BmpFile := sFileName; // ein Dateiname wird einem Button zugewiesen
        IconHandle := GetHIconFromFile(sFileName); // was passiert mit dem IconHandle?
        
        GetCursorPos(p); // falsch, DragQueryPoint() muss benützt werden
        img := SKAERO_GetButImageBackProperty(Windowfrompoint(p));
        // hier endet der Code, der nix mit Drag & Drop zu tun hat ***
      end;
      DragFinish(wP); // ok, Drag & Drop ist fertig
      SetForegroundWindow(WinHandle); // wozu ?
    end;
Der Code zwischen den Zeilen die mit *** markiert sind hat dort nichts verloren.
Stattdessen dürfte dort nur ein Funktionsaufruf stehen:
Delphi-Quellcode:
// sauberer Sourcecode
WM_DROPFILES:
    begin
      // es geht los
      // ganz offensichtlich soll die Dateinamen von gedroppten Dateien ermittelt werden
      nFilesDropped := DragQueryFile(wP, LongWord(-1), '', 0);
      if nFilesDropped >= 1 then
      begin
        // 1. Dateiname holen
        SetLength(sFileName, DragQueryFile(wP, 0, nil, 0));
        DragQueryFile(wP, 0, @sFileName[1], Length(sFileName) + 1);
        DragQueryPoint(wP, p);
        
        ChangeButtonPicture(sFileName, p);
      end;
      DragFinish(wP); // ok, Drag & Drop ist fertig
    end;
Andreas
  Mit Zitat antworten Zitat