Registriert seit: 2. Mär 2004
5.508 Beiträge
Delphi 5 Professional
|
AW: dragdrop
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
|
|
Zitat
|