AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Besitzt eine Komponente eine bestimmte Eigenschaft???
Thema durchsuchen
Ansicht
Themen-Optionen

Besitzt eine Komponente eine bestimmte Eigenschaft???

Ein Thema von dot · begonnen am 7. Nov 2007 · letzter Beitrag vom 8. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
dot

Registriert seit: 10. Okt 2007
39 Beiträge
 
#1

Besitzt eine Komponente eine bestimmte Eigenschaft???

  Alt 7. Nov 2007, 14:33
Hallo Leute,

wie stelle ich fest, ob eine Komponente eine bestimmte Eigenschaft besitzt?
Ich schreibe ein Object, dessen Instanz erzeugt wird und ein Parameter davon TComponent ist.
Es dreht sich alles um die Property "PopUpMenu"

ich will feststellen, ob mein übergebenes TComponent überhaupt diese Eigenschaft besitzt?

Sprich an mein Objekt dürfen nur TComponents übergeben werden, die diese Eigenschaft ausweisen!

danke für die hilfe

dot
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Besitzt eine Komponente eine bestimmte Eigenschaft???

  Alt 7. Nov 2007, 14:36
Delphi-Quellcode:
uses TypInfo;

IsPublishedProp(...)
Chris
  Mit Zitat antworten Zitat
dot

Registriert seit: 10. Okt 2007
39 Beiträge
 
#3

Re: Besitzt eine Komponente eine bestimmte Eigenschaft???

  Alt 7. Nov 2007, 14:51
danke leider kann ich aber irgendwie nicht beim TComponent die Eigenschaft ansprechen, muss ich in der Hierarchie höher gehen?

Delphi-Quellcode:
constructor TMyObject.Create(AOwner: TComponent; aImage : TImage; aImgList : TImagelist; aImgListIndex : Integer);
begin
  inherited Create(AOwner);
  Assert(Assigned(AOwner),Self.ClassName + ' : Objekt AOwner darf nicht NIL sein.');
  Assert(aImgList <> nil, Self.ClassName + ' : Parameter Imageliste darf nicht NIL sein.');
  Assert(aImgListIndex <> null, Self.ClassName + ' : Parameter ImagelistIndex darf nicht NULL sein.');

  fComponent:= AOwner;
  if IsPublishedProp(fComponent, 'PopupMenu') then
    fPopUpMenuCreated := not Assigned([b]fComponent.PopUpMenu[/b]);
im fettmarkierten klappt es nicht, keine Ahnung weshalb
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Besitzt eine Komponente eine bestimmte Eigenschaft???

  Alt 7. Nov 2007, 14:55
TComponent hat keine Eigenschaft PopupMenu, was ja dein Problem ist.
Höher gehen eigentlich ja, aber das wird dir nicht gelingen.

Schau dir die anderen Funktionen in TypInfo mal an. U.a. findest du da auch SetPropValue
Chris
  Mit Zitat antworten Zitat
dot

Registriert seit: 10. Okt 2007
39 Beiträge
 
#5

Re: Besitzt eine Komponente eine bestimmte Eigenschaft???

  Alt 7. Nov 2007, 15:04
das bedeutet das ich mit "SetPropValue"
beim create vom Object dem TComponent eine neue Property zuweisen kann?
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Besitzt eine Komponente eine bestimmte Eigenschaft???

  Alt 7. Nov 2007, 15:08
Nein. Wie der Funktionsname verrät, kannst du damit eine Eigenschaft, die über deren Name identifiziert wird, einen Wert zuweisen.

Delphi-Quellcode:
If IsPublishedProp(DasObject, NameDerEigenschaft) then
  SetPropValue(DasObject, NameDerEigenschaft, WertDerEigenschaft);
Chris
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Besitzt eine Komponente eine bestimmte Eigenschaft???

  Alt 7. Nov 2007, 15:08
Was hindert dich an:
fPopUpMenuCreated := not Assigned(TControl(fComponent).PopUpMenu); Edit: vergiss es, ist ja protected
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
dot

Registriert seit: 10. Okt 2007
39 Beiträge
 
#8

Re: Besitzt eine Komponente eine bestimmte Eigenschaft???

  Alt 7. Nov 2007, 15:16
also das Cast klappt leider nicht, weil er meint der Bezeichner wäre undefiniert
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Besitzt eine Komponente eine bestimmte Eigenschaft???

  Alt 7. Nov 2007, 15:20
Zitat von dot:
also das Cast klappt leider nicht, weil er meint der Bezeichner wäre undefiniert
Lies sirius sein Edit:
Zitat von sirius:
Edit: vergiss es, ist ja protected
Und auch so: "fComponent" muss nicht vom Typ TControl sein (wenn man schon castet, müsste man noch "If fComponent is TControl then" schreiben)
Chris
  Mit Zitat antworten Zitat
dot

Registriert seit: 10. Okt 2007
39 Beiträge
 
#10

Re: Besitzt eine Komponente eine bestimmte Eigenschaft???

  Alt 7. Nov 2007, 15:29
d.h ich muss in meiner Objectdeklaration ein fPopUpValue einführen und dann

Delphi-Quellcode:
If IsPublishedProp(fcomponent, 'PopUpMenu') then
  SetPropValue(fcomponent, 'PopUpMenu', fPopUpValue);
und dann immer auf fPopUpValue abfragen anstatt fComponent.popupmenu ???
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz