AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Komponenten ohne Ereignisse kopieren

Komponenten ohne Ereignisse kopieren

Ein Thema von Dr. Jack · begonnen am 19. Aug 2022 · letzter Beitrag vom 20. Aug 2022
Antwort Antwort
Dr. Jack

Registriert seit: 17. Mär 2010
78 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#1

Komponenten ohne Ereignisse kopieren

  Alt 19. Aug 2022, 14:26
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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#2

AW: Komponenten ohne Ereignisse kopieren

  Alt 19. Aug 2022, 14:40
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
jsheyer

Registriert seit: 9. Jun 2005
Ort: Jüchen
78 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Komponenten ohne Ereignisse kopieren

  Alt 19. Aug 2022, 14:43
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.
Jörg Heyer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.015 Beiträge
 
Delphi 12 Athens
 
#4

AW: Komponenten ohne Ereignisse kopieren

  Alt 19. Aug 2022, 15:37
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 ...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.477 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Komponenten ohne Ereignisse kopieren

  Alt 20. Aug 2022, 18:01
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...
Miniaturansicht angehängter Grafiken
pasinputhelperobjects.jpg  

Geändert von Harry Stahl (20. Aug 2022 um 18:06 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 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