Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#10

Re: Objecte zwischenspeichern

  Alt 17. Sep 2008, 10:29
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
  Mit Zitat antworten Zitat