Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Komponenten ohne Ereignisse kopieren (https://www.delphipraxis.net/211237-komponenten-ohne-ereignisse-kopieren.html)

Dr. Jack 19. Aug 2022 13:26

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

Uwe Raabe 19. Aug 2022 13:40

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.

jsheyer 19. Aug 2022 13:43

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.

himitsu 19. Aug 2022 14:37

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 ...

Harry Stahl 20. Aug 2022 17:01

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: https://www.devpage.de/PasInputHelperPage.htm

Erfreulicherweise trägt der Helper mit 624 kb Programmgröße (Exe) weiterhin nicht sonderlich auf...


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