![]() |
Komponenten ohne Ereignisse kopieren
Hi zusammen,
gibt es die Möglichkeit Komponenten, z.B. eine Listview zu kopieren aber ohne die vorhandenen Ereignisse? Was passiert bei mir: Ich kopiere Listview1 und füge sie als neue Listview2 ein. Dann sind in der Lv2 aber alle Ereignisse von LV1 verlinkt und das für mich unverständliche: Ändere ich in LV2 ein Ereignis, ändert es sich gleichzeitig auch in LV1. Hat jemand hierzu einen Rat? Danke sehr |
AW: Komponenten ohne Ereignisse kopieren
Beim Kopieren werden die verlinkten Events mitgenommen. Beim Einfügen werden die Links wiederhergestellt wenn die Events im Ziel existieren, andernfalls entfernt.
In deinem Fall verlinken die Event-Properties beider ListView auf dieselben Event-Handler. Änderungen darin wirken sich also auf beide ListView aus. DU kannst aber relativ leicht die Event-Handler im zweiten ListView entfernen, in dem du im Objektinspektor den Even-Handler anwählst, mit Entf löschen und dann mit der Pfeil-Ab Taste den nächsten anwählst und so weiter. |
AW: Komponenten ohne Ereignisse kopieren
Beim kopieren einer visuellen Komponente wird nicht das Ereignis selber kopiert sondern der Name der procedure (event) das verwendet werden soll. Damit zeigen dann beide Komponenten auf die gleiche Procedure.
Wenn du unterschiedliche haben möchtest dann vorher die Einträge im Object Inspektor unter Ereignisse löschen, die Ereignisse selber bleiben dabei bestehen. Ab dann kannst du dann neue Ereignisse für das kopierte Objekt anlegen. Es ist ja auch öfters der Fall das man das gleiche Ereignis für verschiedene Objekte benutzt um redundanten Quellcode zu vermeiden. |
AW: Komponenten ohne Ereignisse kopieren
oder die Komponente mal kurz in eine leere Form/Unit einfügen und wieder neu ausschleiden/kopieren
oder mal kurz in einen Texteditor einfügen, im CODE die Events löschen, wieder kopieren und dann auf der Form einfügen oder eben nach dem Einfügen die unerwünschten Event-Zuweisungen löschen [Entf] und eventuell NEUE erstellen (Doppelklicken) oder ... |
AW: Komponenten ohne Ereignisse kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
Aber das stimmt. Hat mich auf oft genervt, dass ich dann unerwünschte Verknüpfungen zu Events habe. Manchmal passt das ja, aber oft eben nicht. Genau so blöd, wenn ein Control als Align = Client hat, und das dann woanders einfügt, wo das gar nicht passt und man mühsam das wieder alles in der Größe zurecht arrangieren muss.
Habe daher kurzerhand mein (Freeware-) Programm Pascal-Input-Helper erweitert. Das funktioniert so: Kopiert man ein oder mehrere Objekte in die Zwischenablage, dann ruft man den Inputhelper auf (am besten mit dem zugewiesenen Shortcut). Das Programm merkt, dass ein Object in der Zwischenablage ist und zeigt direkt den neuen Reiter "Copy Objects" an. Dort kann man mit einem Mausklick z.B. alle Events entfernen oder alle PopUpMenüs. Ferner kann man durch abwählen einer Checkbox weitere Dinge entfernen, die man evtl. nicht mehr braucht (z.B. Ownerdraw-Eigenschaft für Listbox, wenn man auch das OnDrawItemEvent entfernt. Schließlich kann man noch per F2-Taste die aktuelle Eigenschaft manuell bearbeiten. Dann kopiert man mit "Paste changes to Clipboard" das angepasste Control in die Zwischenablage und kann anschließend das so angepasste Control in Delphi einfügen. Siehe auch anliegende Screenshot. Wer es brauch kann (oder eh schon mit dem Pascal Inputhelper arbeitet: ![]() Erfreulicherweise trägt der Helper mit 624 kb Programmgröße (Exe) weiterhin nicht sonderlich auf... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz