![]() |
Alias für Objektname?
Moin!
Ich möchte z.B. Form1.Height einfach mit Hoehe bezeichnen und hab mir das so gedacht:
Delphi-Quellcode:
Jetzt müsste sich ja theoretisch Form1.Height auf 190 ändern. Weil x ja auf die Stelle im RAM zeigt, wo Form1.Height steht. Wenn ich jetzt den Wert dieser Stelle (x^) verändere müsste sich doch auch die Höhe von Form1 ändern oder?
var
Hoehe: ^Integer; begin Hoehe := Pointer(@(Form1.Height)); Hoehe^ := 190; end; Da ich mir relativ sicher war, dass es funktionieren muss hab ich das ganze nochmal mit ner Variable getestet:
Delphi-Quellcode:
In dem Fall ist a am Ende 190 und alles klappt.
var
a: Integer; x: ^Integer; begin a := 10; x := Pointer(@a); x^ := 190; end; Kann mir jemand sagen warum das bei Form1.Height nicht geht? MfG Niels |
Re: Alias für Objektname?
Delphi-Quellcode:
mfG
var
Hoehe: ^Integer; begin Hoehe := @(Form1.Height); Hoehe^ := 190; end; mirage228 |
Re: Alias für Objektname?
Das geht generell nicht, da Form.Height eine Eigenschaft und nicht eine Variable ist ;-) Eigenschaften wirden intern durch Methoden gesteuert.
...:cat:... |
Re: Alias für Objektname?
Achso das ist ne Property, sag mir das doch einer! (Ja, obwohl, hätte ich auch selber drauf kommen können)...
mfG mirage228 |
Re: Alias für Objektname?
@mirage228:
Ich hatte das auch schon in Klammern stehn ... hat trotzdem net geklappt @sakura: Das war ja auch nur ne Idee von mir, mein oben geschildertes Problem zu lösen. Gibt's denn irgend ne andere Möglichkeit sowas zu machen? Hoehe muss ja kein Pointer sein ... ein Integer wäre mir da sogar lieber. MfG Niels |
Re: Alias für Objektname?
Mal eine andere Frage, warum schreibst Du nicht:
Delphi-Quellcode:
:?: - oder anders, warum so umständlich?
Form1.Height := 190
...:cat:... |
Re: Alias für Objektname?
Moin!
Das war jetzt nur ein Beispiel mit Form1.Height. Ich greif aus ner Klasse einer anderen Unit auf Komponenten von Form1 zu. Man soll die Komponentennamen aber variable wählen können und dann einfach im Constructor Create das entsprechende eintragen. Da es relativ viele Zugriffe sind, wäre es umständlich das in jeder Prozedur zu ändern. Außerdem ist es ja nicht immer Form1, auf welcher die Klasse genutzt wird. MfG Niels |
Re: Alias für Objektname?
Dann übergebe die Componente als Parameter vom Typ TControl, damit hast Du die wichtigsten Eigenschaften verfügbar ;-)
...:cat:... |
Re: Alias für Objektname?
Ich hab anfangs auch probiert es an den Constructor zu übergeben. Dann hab ichs ja aber nur im Constructor und nicht global in der Klasse verfügbar. Das Problem ist ja auch, wenn ich z.B. in ner Prozedur der Klasse was in die PaintBox auf dem übergebenen Formular zeichne, dann soll das auch im Original zu sehen sein.
Mein Constructor sieht dann jetzt erstmal so aus:
Delphi-Quellcode:
Ich hab das Formular als Referenzparameter übergeben um es dann auch ändern zu können. Im Constructor nützt mir das ganze nur eben nicht viel. Ich brauchs global in der Klasse. Deshalb hab ich auch diesen Thread geöffnet :wink:
uses
unit1; // unit, die die Klasse TForm1 und enthält..von hier erfolgt der Aufruf ... constructor Create(var Formular: TForm1); MfG Niels |
Re: Alias für Objektname?
übergeb doch nen Pointer von TForm1, eben PForm1
EDIT: In der Hauptunit (über der Formdekl.) :
Delphi-Quellcode:
und dann speicher das als Private in deiner Klasse ab.
type
PForm1 = ^TForm1 TForm1 = class(TForm) ... ... end;
Delphi-Quellcode:
nun können die Funktionen und Procs deiner Klasse auf das Form zugreifen ^^
private
FForm: PForm1; ... mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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