Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi RegisterDragDrop Wann? (https://www.delphipraxis.net/212004-registerdragdrop-wann.html)

Gruber_Hans_12345 1. Dez 2022 09:21

RegisterDragDrop Wann?
 
Hallo ich hab ne Frage zum RegisterDragDrop.
alles funktioniert ganz gut, wenn ich das RegisterDragDrop irgendwann aufrufe nachdem die Control erzeugt worden sind.
Allerdings wenn ich im constructor Create oder im AfterConstruction. meines TWinControls aufrufe, dann bekomme ich beim RegisterDragDrop zwar keinen Fehler, aber es wird einfach kein Drag akzeptiert.

Salbe Funktion in einem Timer, oder per Button aufgerufen funktioniert.

Das TWinControl das ich da verwende, wird zur laufzeit erzeugt.

Weiss wer wo ich das Register am beten reinpacken kann?

KodeZwerg 1. Dez 2022 09:58

AW: RegisterDragDrop Wann?
 
Zitat:

Zitat von Gruber_Hans_12345 (Beitrag 1515696)
Das TWinControl das ich da verwende, wird zur laufzeit erzeugt.

Weiss wer wo ich das Register am beten reinpacken kann?

Öhm, direkt nach dem erzeugen würde ich sagen.

Gruber_Hans_12345 1. Dez 2022 10:04

AW: RegisterDragDrop Wann?
 
Nein wenn ich es direkt nach dem erzeugen mache, dann funktioniert das bei mir nicht, dann akzeptiert er keine OLE DragDrop's

jaenicke 1. Dez 2022 10:06

AW: RegisterDragDrop Wann?
 
Zitat:

Zitat von Gruber_Hans_12345 (Beitrag 1515696)
Weiss wer wo ich das Register am beten reinpacken kann?

Du kannst z.B. auf CM_SHOWINGCHANGED reagieren. Wenn das Control dann sichtbar ist, kannst du es registrieren, wenn es dann unsichtbar ist, wieder deregistrieren. Visible ist zum Zeitpunkt der Nachricht bereits gesetzt.

Zitat:

Zitat von KodeZwerg (Beitrag 1515699)
Öhm, direkt nach dem erzeugen würde ich sagen.

Nein, dass das nicht geht, steht ja schon in der Frage. Das liegt daran, dass das Control zu dem Zeitpunkt noch "in der Luft hängt". Es hat noch keinen Parent und ist nicht sichtbar.

Gruber_Hans_12345 1. Dez 2022 10:35

AW: RegisterDragDrop Wann?
 
Zitat:

Zitat von jaenicke (Beitrag 1515701)
Zitat:

Zitat von Gruber_Hans_12345 (Beitrag 1515696)
Weiss wer wo ich das Register am beten reinpacken kann?

Du kannst z.B. auf CM_SHOWINGCHANGED reagieren. Wenn das Control dann sichtbar ist, kannst du es registrieren, wenn es dann unsichtbar ist, wieder deregistrieren. Visible ist zum Zeitpunkt der Nachricht bereits gesetzt.

Zitat:

Zitat von KodeZwerg (Beitrag 1515699)
Öhm, direkt nach dem erzeugen würde ich sagen.

Nein, dass das nicht geht, steht ja schon in der Frage. Das liegt daran, dass das Control zu dem Zeitpunkt noch "in der Luft hängt". Es hat noch keinen Parent und ist nicht sichtbar.

Danke das funkt, übrigens das Parent reicht auch nicht, weil einer meiner Versuche war es beim SetParent reinzuhängen

peterbelow 1. Dez 2022 11:02

AW: RegisterDragDrop Wann?
 
Zitat:

Zitat von Gruber_Hans_12345 (Beitrag 1515696)
Hallo ich hab ne Frage zum RegisterDragDrop.
alles funktioniert ganz gut, wenn ich das RegisterDragDrop irgendwann aufrufe nachdem die Control erzeugt worden sind.
Allerdings wenn ich im constructor Create oder im AfterConstruction. meines TWinControls aufrufe, dann bekomme ich beim RegisterDragDrop zwar keinen Fehler, aber es wird einfach kein Drag akzeptiert.

Salbe Funktion in einem Timer, oder per Button aufgerufen funktioniert.

Das TWinControl das ich da verwende, wird zur laufzeit erzeugt.

Weiss wer wo ich das Register am beten reinpacken kann?

CreateWnd des Controls, nach dem inherited-Call, unregister in DestroyWnd vor dem inherited call. Ole drag&drop braucht halt ein window handle und die VCL erzeugt die erst wenn benötigt und auch danach können sie manchmal zerstört und neu angelegt werden.

jaenicke 1. Dez 2022 11:42

AW: RegisterDragDrop Wann?
 
Stimmt, das dürfte der sauberste Zeitpunkt sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 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