AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

dragdrop

Ein Thema von EWeiss · begonnen am 29. Aug 2012 · letzter Beitrag vom 29. Aug 2012
Antwort Antwort
Seite 2 von 2     12   
shmia

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

AW: dragdrop

  Alt 29. Aug 2012, 19: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
EWeiss
(Gast)

n/a Beiträge
 
#12

AW: dragdrop

  Alt 29. Aug 2012, 19:50
sFileName := ''; // <= überflüssiger Code Ok.

sFileName := LowerCase(sFileName); kann ich auch noch nachvollziehen.

Zitat:
// was nun folgt hat nix mit Drag & Drop zu tun ***
ChangeButtonPicture(sFileName, p);
Ob ich nun innerhalb DragDrop meine Dateien verarbeite oder innerhalb von dragdrop
auf eine function außerhalb dragdrop verweise ist letztendlich das gleiche.
Denn auch hier wird dragdrop dann unterbrochen bzw.. meine funktionen verarbeitet.

Da muss ich also gegenhalten
// was nun folgt hat nix mit Drag & Drop zu tun ***
ChangeButtonPicture(sFileName, p);
Aber Ok ist eine saubere lösung.

Delphi-Quellcode:
GetCursorPos(p); // falsch, DragQueryPoint() muss benützt werden
img := SKAERO_GetButImageBackProperty(Windowfrompoint(p));
Hatte ich im Sample oben schon korrigiert.

SetForegroundWindow(WinHandle); // wozu ?
Kann man sich auch sparen korrekt.
if nFilesDropped >= 1 then

Mehr auf keinen Fall.
Zumal das dann hier ein Zähler von nöten wäre..
Delphi-Quellcode:
SetLength(sFileName, DragQueryFile(wP, Zähler, nil, 0));
DragQueryFile(wP, Zähler, @sFileName[1], Length(sFileName) + 1);

mehr als 1 wäre dann auch unnötig

EDIT:
DragQueryPoint(wP, p);
Ist unnötig.
Bekomme damit zwar die koordinaten innerhalb des Button
aber nicht zum Screen daher kann ich damit nicht das Handle ermitteln.

Danke für die doku..

gruss

Geändert von EWeiss (29. Aug 2012 um 20:20 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr.
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