xxx->Owner hintergrundfarbe rausfinden
-
Hallo,
ich hab ein TStringGrid und würde gerne die Hintergrundfarbe gleich der, des owners setzten. Also sowas:
StringGrid->Color = Form1->Color;so, ists ja ganz einfach. Aber wie mach ich das jetzt wenn ich eine methode hab z.b.
void FormatStringGrid( TStringGrid *Grid ) { // hier soll jetzt *Grid die Color des Parents bekommen. // also der Form1. // Form1 ist hier aber nicht bekannt weil hier das eine eigene // klasse ist. Die Form ebenfalls als zeiger übergeben möchte ich gerne // sparen. }jemand ne idee?
-
Hallo
entweder ein Pointer auf das Form als Parent ist bekannt oder nicht. Wenn nicht, kannst du das Form nicht verwenden.
Wenn du weder das Form als Parameter übergeben willst, noch die Funktion als Methode des Form deklarieren willst kannst du noch einen globalen Pointer auf das Form benutzen. Allerdings ist das die schlechteste Lösung, die Methodenlösung ist eindeutig die beste.bis bald
akari
-
in dem StringGrid aus der parameterliste ist ja die Eigenschaft Parent bekannt und Owner müßte ebelfalls die Form1 sein.
Aber wie bekomme ich aus derm Parent oder Owner einen Pointer auf Form1?
-
Hallo
// wenn 100% sicher ist das Parent vom Typ TForm1 ist TForm1 *Form1 = static_cast<TForm1*>(Grid->Parent); // wenn du statdessen auch überprüfen willst TForm1 *Form1 = dynamic_cast<TForm1*>(Grid->Parent); if (Form1) { // Typ korrekt } else { // Typ nict korrekt }Wenn du das nur wegen der Eigenschaft Color machen willst, dann brauchst du das allerdings nicht, denn Parent ist vom Typ TControl und der hat diese Eigenschaft schon.
bis bald
akari
-
Hallo,
also ich hab das mit den Casts noch net verstanden. Ich hab das jetzt mal so gemacht:
newGrid->Color = ( (TForm*)newGrid->Parent )->Color;Explizite Typenzuweisung nennt sich sowas doch, oder?
Ist das einfach nur "C" Style und dein beispiel "C++"?
-
Hallo
dein Cast ist C-Style und für den Compiler ohne jede Überprüfungsmöglichkeit.
Meine Besipiele sind C++ und bieten Typsicherheit, beim dynamic sogar zur Laufzeit ausgewertet.
bis bald
akari