Hallo Emil,
ich versteh' das nicht:
Heißt das, Du hast hier Dein Problem?
Delphi-Quellcode:
procedure TMainForm.JvDesignPanelSelectionChange(Sender: TObject);
bumm???
end;
Dann müsstest Du für meine Begriffe mit Hilfe der TypInfo herausbekommen können, was denn da bitte jetzt genau in Sender steckt.
Hiermit solltest Du z. B. herausbekommen, in welcher
Unit Deine Klasse definiert ist:
Delphi-Quellcode:
{ Die Funktion liefert den Namen der Unit, in der die übergebene Klasse defi- }
{ niert wurde. }
function GetUnitName(AClass : TObject) :
String;
var
ClassTypeInfo : PTypeInfo;
ClassTypeData : PTypeData;
begin
ClassTypeInfo := AClass.ClassInfo;
ClassTypeData := GetTypeData(ClassTypeInfo);
Result := ClassTypeData.UnitName;
end;
Das sollte Dir eine Liste der Vorfahren Deiner Klasse bringen:
Delphi-Quellcode:
{ Die Prozedur ermittelt die Vererbungsstruktur des übergebenen Objektes und }
{ gibt die Struktur in der Stringliste zurück. }
procedure GetClassAncestry(AClass: TObject);
var
AncestorClass : TClass;
begin
AncestorClass := AClass.ClassParent;
{ Iteriert durch die Parentklassen, beginnend mit dem übergebenen Objekt, }
{ bis kein Vorfahre mehr vorhanden ist. }
GlobaleStringListe.Add('Class Ancestry');
while AncestorClass <> nil do begin
GlobaleStringListe.Add(AncestorClass.ClassName));
AncestorClass := AncestorClass.ClassParent;
end;
end;
Es müsste doch damit und ggfls. weiteren Funktionen möglich sein, herauszubekommen, was für ein Objekt da jetzt ankommt und zu entscheiden, das nehme ich oder das nehme ich nicht an oder das behandle ich so oder eben anders oder auch garnicht.
Wenn Du nun nur TImage und TLabel hast, müsste doch ein
If HasProperty(Sender, 'Picture') Then
anstelle von "bumm???" reichen, um festzustellen, ob es ein TImage ist oder nicht? Oder bin ich hier momentan auf dem falschen (Rhein)-Dampfer.
Stephan