AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TCategoryPanel.ControlCount immer = 1
Thema durchsuchen
Ansicht
Themen-Optionen

TCategoryPanel.ControlCount immer = 1

Ein Thema von Nils S. · begonnen am 20. Mär 2015 · letzter Beitrag vom 3. Mai 2015
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: TCategoryPanel.ControlCount immer = 1

  Alt 3. Mai 2015, 08:18
Also ist Cpl.Controls[0] quasi das TCategoryPanelSurface und dieses enthält alle Controls.
So ist es.

Um an die einzelnen Controls zu kommen müsste ich jetzt Cpl.Controls[0].Controls[i] verwenden, was aber nicht geht.
Daher muss ich die Typumwandlung mit as wohl machen
Eigentlich reicht hier auch eine Umwandlung in TWinControl, denn dort wurden die Eigenschaften Controls und ControlCount eingeführt.

Aber da ich ja auch lernen und verstehen will,


warum funtkioniert z.B. bei einem TPanel Components/ComponentCount, bei einem TCategoryPanel aber nicht, bzw. wieso hat TCategoryPanel dieses Surface, was alle Controls enthält?
Das ist ein durchaus übliches Pattern (siehe auch TCategoryButtons). Die Instanz von TCategoryPanelSurface ist nicht unbedingt genau ein TCategoryPanelSurface, sondern kann auch davon abgeleitet sein. Die tatsächlich verwendete Klasse wird in der virtuellen Methode GetCategoryPanelSurfaceClass bestimmt, die in einer Ableitung von TCategoryPanel durchaus etwas anderes zurückgeben kann.

Und woran erkennt man sowas bei einer Komponente oder muss man die ganze Klasse durchstöbern, ob man irgendwo ein TXyzSurface findet?
Ich finde sowas eigentlich immer durch Analyse der Sourcen (mach ich immer als Erstes, wenn eine neue Version rauskommt). Gerade für diesen Fall führt ein Blick in die Methode GetChildren meist schnell in die richtige Richtung.

So ein schickes UML-Diagramm wäre da sicher ganz hilfreich, aber das müsste nicht nur jemand einmal erstellen, sondern auch regelmäßig pflegen. Bis dahin gilt: Use the source, Luke!
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:05 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