Discussion:
Problem mit drag&drop
(zu alt für eine Antwort)
Manfred Polak
2019-06-03 14:29:17 UTC
Permalink
Moin!

Ich hab da ein VCL-Programm, geschrieben mit 10.2 Community
Edition. Darin kann man Textdateien, die gewisse Metadaten
von Bildern enthalten, per drag&drop importieren. Das mache
ich so:

procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
var
Buffer: array[0..MAX_PATH] of Char;
meta: TextFile;
zeile: string;
begin
DragQueryFile(Message.Drop, 0, @Buffer, SizeOf(Buffer));
AssignFile(meta, buffer);
Reset(meta);
ReadLn(meta, zeile);
...
CloseFile(meta);
end;

Die Datei wird dann also zeilenweise eingelesen, und das Programm
zieht seine Schlüsse daraus. Das hat soweit perfekt funktioniert.
Weil ich das Programm unter die Leute bringen will, bin ich auf die
Idee gekommen, es etwas aufzuhübschen, indem der Anwender
einen der "Styles" wählen kann, die Delphi zur Auswahl anbietet.
Jetzt kann man per Menü zusätzlich zum Standard-Style "Windows"
einen von drei weiteren auswählen. Das mache ich so:

procedure TForm1.GoldenGraphiteblack1Click(Sender: TObject);
var Style: TStyleManager;
begin
Style.SetStyle('Golden Graphite');
end;

Das funktioniert an sich so, wie ich mir das vorgestellt hatte. Das
Problem: Wenn einer der drei Nichtstandard-Styles eingestellt ist,
funktioniert das drag&drop nicht mehr. Es passiert dann gar nichts
dabei. Schlimmer noch: Wenn ich dann zurück zum Style "Windows"
wechsle, funktioniert es immer noch nicht. Ich muss erst das Programm
beenden und neu starten, dann geht es wieder. Gibt es da Abhilfe?
Oder muss ich auf eines der beiden Features verzichten?


Manfred
Manfred Polak
2019-06-06 11:51:54 UTC
Permalink
Post by Manfred Polak
Das funktioniert an sich so, wie ich mir das vorgestellt hatte. Das
Problem: Wenn einer der drei Nichtstandard-Styles eingestellt ist,
funktioniert das drag&drop nicht mehr.
Hat sich erledigt. Ich hab auf Stack Overflow eine Lösung gefunden,
und jetzt funktioniert es perfekt.

https://stackoverflow.com/questions/10332931/delphi-vcl-styles-drag-n-drop

Dort die erste, einfachere Lösung war genau das, was ich gesucht
hatte.


Manfred

Lesen Sie weiter auf narkive:
Loading...