![]() |
[TCstmCrl] Änderung an einer Instanz beieinflusst andere...
Hi
habe folgendes Problem: Ich habe eine Komponente von TCustomControl abgeleitet, ihr ein canvas verliehen und daraus eine Art Listbox mit mehreren Spalten erzeugt. Davon habe ich 2 Instanzen dynamisch im OnCreate auf unterschiedlichen MDI-Formen erstellt. Die Eigenschaften (z.B. was gerade markiert ist) werden im Implementation-Teil in integer Variablen gespeichert. Das Problem: Fahre ich mit der Maus über eine Liste, verändert sich der Balken (der dem Mauszeiger nachläuft und einzelne Einträge highlightet) auch auf der anderen Liste!. Irgendwie sind die beiden Listen verknüft. So wird z.B auch in der 2. Liste nur der Teil gezeichnet, der der Größe der Liste in der anderen Form entspricht (ich zeichne erst auf ein TBitmap und dann aufs canvas). Warum sind beide Instanzen nicht unabhängig voneinander? |
Re: [TCstmCrl] Änderung an einer Instanz beieinflusst andere
Die Unit, in der du das abgeleitete Control definiert hast, wird doch insgesamt nur ein einziges mal in deine Application hineingelinkt. Ergo existieren auch die Variablen aus dem Implementation-Teil insgesamt nur ein einziges mal, dh. für alle Controls zusammengenommen gibt es nur einen einzigen Datensatz.
Und um eben gerade diesem deinem Problem zuvorzukommen, sollten solche eigenen Controls ihre Daten daher auch möglichst immer vollständig in sich selbst definiert haben. Also z.B. so:
Delphi-Quellcode:
TOwnButton = class(TPanel)
private FBlablaData1 : integert; FBlablaData2 : Double; FBlablaFlag : boolean; ... public ... end; |
Re: [TCstmCrl] Änderung an einer Instanz beieinflusst andere
Also muss ich nur einfach alle Variablen aus dem implementation Teil in den private Teil kopieren.
Einfacher als ich dachte zu lösen. Für was ist der protected Teil?? Danke für die Hilfe. |
Re: [TCstmCrl] Änderung an einer Instanz beieinflusst andere
Hm, also besser als in der OH kann ich es eigentlich auch nicht erklären:
Zitat:
|
Re: [TCstmCrl] Änderung an einer Instanz beieinflusst andere
Nur mal so am Rande:
TCustomControl hat bereits einen Canvas implementiert (nicht dass du es vielleicht doppelt machst) ;) |
Re: [TCstmCrl] Änderung an einer Instanz beieinflusst andere
Ich hab einfach
Delphi-Quellcode:
geschrieben um es nutzen zu können.
property canvas
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 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-2025 by Thomas Breitkreuz