Bevor Delphi 2006 (glaube ich) das TFlowPanel und TGridPanel eingeführt habe, habe ich ein Steuerelement gemacht, das im Konzept ähnlich war. Es gibt immer noch ein paar Dinge, die diese Steuerelemente nicht tun, und als ich meinen Code auf Delphi 2009 aktualisiert habe, habe ich beschlossen, ein paar Verbesserungen hinzuzufügen.Entwurfszeit Drag & Drop in Delphi?
Im Moment wird die Reihenfolge der untergeordneten Steuerelemente durch ihre Erstellungsreihenfolge bestimmt. Das FlowPanel und das GridPanel zeigen einen besseren Weg mit ControlIndex und anderen gefilterten Eigenschaften, aber ich frage mich, ob es eine Möglichkeit gibt, Drag-and-Drop-Umordnungen in der Entwurfszeit zu handhaben? Soweit ich das beurteilen kann, ruft das Ziehen eines Bearbeitungssteuerelements und das Ablegen auf mein Panel nichts auf, auf das ich während der Entwurfszeit zugreifen kann.
Ich war halb phantasiert über eine Möglichkeit, entweder die Drop-Operation direkt zu erkennen, oder vielleicht zu erkennen, wenn ein Steuerelement bewegt wird, damit ich bestimmen kann, wohin es gehen soll.
Irgendwelche Ideen?
Update: OK, habe es funktioniert. Das Containersteuerelement überschrieb bereits AlignControls, um die Platzierung der Steuerelemente zu verwalten. Wenn Sie das verschachtelte Steuerelement ziehen und ablegen, wird AlignControls erneut aufgerufen. Ich habe dann die neuen Koordinaten des Steuerelements mit den anderen Steuerelementen in der Liste verglichen und an die entsprechende Position verschoben.
Es gab ein paar Probleme, die ich durcharbeiten musste (hauptsächlich in Bezug auf die vielen Aufrufe von AlignControls), aber das Grundkonzept ist einfach genug. Danke an alle Kommentatoren für die Hilfe.
"Die Reihenfolge der untergeordneten Steuerelemente wird durch ihre Erstellungsreihenfolge festgelegt" Was ist die Reihenfolge? Tab-Reihenfolge? Möchten Sie die Tabs in einem Panel von oben nach unten sortieren lassen? – Serguzest
Jetzt, wenn Sie das Panel auswählen und dann Steuerelemente hinzufügen, werden die Steuerelemente in der Reihenfolge angeordnet, in der Sie sie hinzugefügt haben. Um die Reihenfolge zu ändern, würden Sie das Formular ausschneiden und einfügen oder als Text anzeigen und verschieben. Ich habe jetzt eine ControlIndex-Eigenschaft a la TFlowPanel hinzugefügt, möchte aber, dass die Benutzer des Steuerelements einfach per Drag & Drop neu anordnen können. Ergreifen Sie Edit2 und lassen Sie es links von Edit1 fallen, und sie tauschen auf magische Weise Positionen auf dem Panel aus. –