Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem: Eine Klasse in eine andere implementieren (https://www.delphipraxis.net/104975-problem-eine-klasse-eine-andere-implementieren.html)

NickelM 13. Dez 2007 15:23


Problem: Eine Klasse in eine andere implementieren
 
Hallo Miteinander,

ich wollte mir mal ein Panel erstellen, mit dem man alle Farben ändern kann (Light, Showdown, usw.)
Diese Eigenschaften sollte man für innerBevel und outerBevel ändern können. Um die Übersicht zu verbessern wollte ich, dass die Eigenschaften Lightcolor, Showdowncolor und Borderweight im Objektinspektor unter einer bestimmten Klasse ausgeklappt werden können.

Z.B. wie bei Font:

- Font (TFont)
Color
Size
usw...


aber das mit dem implementieren einer Klasse in meiner Panelklasse funktioniert nicht.

Ich habe mir auch Beispiele von Delphi-Komponenten angeschaut und versucht, zu verstehen, wie diese aufgebaut sind. Aber trotzdem funktioniert es nicht wirklich

Ich hoffe ihr habt verstanden was ich meine und Könnt mir weiterhelfen.
Danke im Vorraus


Gruß
NickelM

Muetze1 13. Dez 2007 15:25

Re: Problem: Eine Klasse in eine andere implementieren
 
Diese Unterklasse muss einfach nur von TPersistent abgeleitet werden. Du musst entsprechend die Assign() Methode implementieren und ansonsten die gewollten properties definieren.

NickelM 13. Dez 2007 15:30

Re: Problem: Eine Klasse in eine andere implementieren
 
Ok, das habe ich auch schon versucht, aber irgendwie funktionierte es nicht. Ich konnte im Objektinspektor die Daten reinschreiben und Daten ändern, aber das Panel zeichnete sich nicht neu und ich konnte es nur zur Laufzeit ändern, sodass es sich neu zeichnet. Ich habe irgendwie versucht, auf die Panelklasse zuzugreifen, damit es sich neu zeichnet aber dies verursachte entweder eine Zugriffsverletzung oder es zeichnete sich gar nicht neu.

Muetze1 13. Dez 2007 16:45

Re: Problem: Eine Klasse in eine andere implementieren
 
Zitat:

Zitat von NickelM
Ich konnte im Objektinspektor die Daten reinschreiben und Daten ändern, aber das Panel zeichnete sich nicht neu ...

Das musst du selber auslösen - genauso wie bei anderen Properties.

Zitat:

Zitat von NickelM
Ich habe irgendwie versucht, auf die Panelklasse zuzugreifen, damit es sich neu zeichnet aber dies verursachte entweder eine Zugriffsverletzung oder es zeichnete sich gar nicht neu.

Und wie hast du es versucht?

SirThornberry 13. Dez 2007 17:48

Re: Problem: Eine Klasse in eine andere implementieren
 
um hier effektiv helfen zu können wird es unabdingbar sein das du uns deinen Quelltext offenbarst und wir sehen auf welche Art und Weise du versucht hast das Ziel zu erreichen.

NickelM 14. Dez 2007 08:58

Re: Problem: Eine Klasse in eine andere implementieren
 
Hm....Als das mit dem Neuzeichnen habe ich so gemacht:

Delphi-Quellcode:
{in der von TPersistent abgeleitete Klasse die Set...prozeduren}
{habe in private ein Feld mit TColorPanel(meinPanel) gemacht, der beim Create von TColorPanel zugewiesen wird d.h. in TColorPanel ist ein Feld mit TInnereOption(TPersistent)}
procedure SetBorderWidth(Value : TBorderWidth);
begin
FBorderWidth := Value{feld für BorderWidth;
TColorPanel(FColorPanel).Relividate{halt die neuzeichen befehl, der auch beim normalen Panel benutzt wird}
end;
Ich hoffe dass ihr wisst wie ich es meine, wenn nicht muss ich halt mal schauen ob ich hingebkomme mit der Datei als Text reinzuposten

SirThornberry 14. Dez 2007 09:06

Re: Problem: Eine Klasse in eine andere implementieren
 
ist SetBorderWidth keine Methode sondern wirklich eine globale Funktion?


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