![]() |
Objekte finden, egal ob TLMDEdit oder TRzEdit
Hallo,
wie kann ich abfragen ob ein Objekt im grunde ein TEdit ist. Egal ob es in wirklichkeit ein TRzEdit ober ähnlich ist. Zur zeit mache ich das so. Aber ich müsste die Schleife immer ändern, bzw. erweitern wenn ich nun ein z.b. TLMDEdit auf dem Panel habe. Danke im voraus
Delphi-Quellcode:
function GetDataFromGBox(var FN:TStringList;var FV:TStringList;Box:TPanel):Integer;
var obj :TControl; i :Integer; begin Result:=0; Assert(Assigned(Box)); for i:=0 to Box.ControlCount-1 do begin obj:=Box.Controls[i]; if ( obj is TRzEdit ) then begin if ( Pos('_',TRzEdit(obj).Name)<>0 ) then begin FN.Add(Copy(TRzEdit(obj).Name,1,Pos('_',TRzEdit(obj).Name)-1)); FV.Add(TRzEdit(obj).Text); inc(Result); end; end; end; end; |
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Wenn die Komponenten alle von TEdit abstammen, kannst Du doch daraufhin prüfen.
|
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Das habe ich versucht. Aber ich weiss leider nicht wie?!?
|
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Delphi-Quellcode:
if obj.InheritsFrom(TEdit) then begin
|
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Delphi-Quellcode:
oder evtl. besser
if obj is TEdit
Delphi-Quellcode:
if obj is TCustomEdit
Zitat:
|
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Vielen Dank
|
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Ich habe noch eine Frage. Wie finde ich den entsprechenden Custom-Typ raus? Ich habe z.b. eine TRzGroupBox auf dem Panel, aber mit TCustomGroupBox finde ich das nicht.
Danke im voraus |
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Das Stichwort hierzu lautet
Delphi-Quellcode:
TObject.ClassParent
![]() |
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Oder wenn man die Sourcen hat: einfach nachschauen, wovon die Komponente abgeleitet ist.
|
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Erstmal danke für die antworten,
aber ich bekomme z.b. bei TRzGroupBox.ClassParent.ClassName den Namen TRzCustomGroupBox zurück. Irgendwie verwirrt mich das nun. Ich habe rausgefunden das ich TRzGroupBox als TCustomPanel finden kann. Kann das stimmen? |
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Zitat:
|
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Damit kannst du dir den gesamten Vererbungspfad anzeigen lassen:
Delphi-Quellcode:
Ergebnis bei einem Button:
function GetClassInheritancePathFrom( Instance : TObject ) : string;
var LClass : TClass; begin Result := Instance.ClassName; LClass := Instance.ClassParent; while Assigned( LClass ) do begin Result := LClass.ClassName + '->' + Result; LClass := LClass.ClassParent; end; end;
Code:
TObject->TPersistent->TComponent->TControl->TWinControl->TButtonControl->TCustomButton->TButton
|
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Geil, vielen dank.
Bei meinem "Problemkind" kommt folgendes raus.
Code:
Debug-Ausgabe: TObject->TPersistent->TComponent->TControl->TWinControl->TCustomControl->TCustomPanel->TRzCustomPanel->TRzCustomGroupBox->TRzGroupBox
Gruß |
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Es ist also eigentlich ein TCustomPanel (und indirekt auch TPanel), welches man als Vorlage für die GroupBox verwendet.
Wäre es von TCustomGroupBox/TGroupBox abgeleitet, dann wäre der grundlegende Code kompatibel und man hätte es im Code auch als TGroupBox ansprechen können. |
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Zitat:
aber erstmal drauf kommen von wo das abgeleitet wird. Mit der kleinen Routine von Sir Rufo klappt das wunderbar. An dieser stelle nochmal Thx... |
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Zitat:
|
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Man kann sich natürlich auch mit Strg+Linksklick durch den Source hangeln und sieht so auch, wovon was abstammt.
|
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Wenn man den Source hat... aber etwas in der Art hatte ich ja auch schon angesprochen.
|
AW: Objekte finden, egal ob TLMDEdit oder TRzEdit
Natürlich möchte ich mich auch bei allen anderen bedanken. Sorry, hatte ich oben vergessen. :oops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 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