Objektinspector auffordern die Attribute neu auszugeben

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Lorca
Beiträge: 127
Registriert: Di 3. Nov 2020, 12:25

Objektinspector auffordern die Attribute neu auszugeben

Beitrag von Lorca »

Hallo zusammen,

gibt es eine Möglichkeit, während der Designphase, den ObjectInspector aufzufordern, seine Eigenschaftsattribute neu Aufbauen zu lassen?


Hintergrund:
Beide u.g. Propertys sind Attribute eines TCollectionItem's.
Property: Lade_Tabelle : TDataSource
Property: Lade_Definition : TIF_Data_Load ( Wurde im Constructor auf NIL gesetzt).

In der Methode SET_Lade_Tabelle( AValue : TDataSource) wird nun festgestellt, ob es sich um eine Query oder um eine Tabelle
( AValue.DataSet.ClassNameIs( 'TZTable' ) ) handelt. Abhängig von dieser Erkenntnis wird nun das Interface für das Property Lade_Definition mit einer der beiden eigenen Definitions Klasse für Tabellen (TCL_TableDef ) oder für Query's (TCL_QueryDef) Instanziiert.
Dies ist m.E. notwendig, da eine Tabelle andere Eigenschaften als eine Query hat. (Stichwort Params )

Nun sollen auch diese neuen Eigenschaften dem Entwickler zur Design Zeit zur Verfügung stehen.
Das funktioniert derzeit jedoch NUR, wenn ich dieses Collection Item schließe und danach erneut auf die Items dieser Collection
anklicke. Das PopUp Fenster für die TCollectionItem's öffnet sich nun mit der gewünschten Klasse mit welcher das Interface instanziiert wurde.
Diesen Vorgang würde ich gerne im Coding automatisiert durchführen lassen, um diese Änderung nicht manuell durchführen zu müssen.

Kann jemand helfen? Ist das überhaupt möglich?


Viele Grüße
Lorca

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5254
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Objektinspector auffordern die Attribute neu auszugeben

Beitrag von af0815 »

Der Objektinspektor ist ein relativ unabhängiges Objekt, wie ich schon feststellen durfte. Den kann man für seine Programme auch verwenden, der ist nicht in den Tiefen von Lazarus verankert. Eher als assoziiert zu betrachten.

Ich gehe davon aus, das der für Collections einen eigenen Editor hat. Nur mit welchen Ergebnis/Änderung soll man den sinnvoll antriggern. Das mit dem Schliessen und wieder Öffnen erscheint mir schon logisch.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wennerer
Beiträge: 372
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon, Lazarus Stable 2.2.0 (rev lazarus_2_2_0) FPC 3.2.2 x86_
CPU-Target: x86_64-linux-gtk2

Re: Objektinspector auffordern die Attribute neu auszugeben

Beitrag von wennerer »

Hallo Lorca,
ich verstehe zwar nicht so wirklich was du erreichen willst aber eigentlich kannst du doch in dem Setter SET_Lade_Tabelle die gewünschte Property per Code setzen. Ich hänge mal ein Beispiel an. Klickst du auf Eigenschaft1 ändert sich Eigenschaft2 und umgekehrt. Falls ich die Frage falsch verstanden habe kannst du es ja ignorieren :D
oi.png
oi.png (124.2 KiB) 601 mal betrachtet
Viele Grüße
Bernd
Dateianhänge
project1.zip
(127.73 KiB) 32-mal heruntergeladen

Lorca
Beiträge: 127
Registriert: Di 3. Nov 2020, 12:25

Re: Objektinspector auffordern die Attribute neu auszugeben

Beitrag von Lorca »

Hi,

zuerst einmal herzlichen Dank an euch alle :)
Lieber wennerer. Ja Dein Beispiel funzt auch bei mir. Jedoch war dies nicht das was ich meinte, SRY. :)

Was ich meinte war folgendes:
Wenn man im Objekt Inspector auf den Buttom für die Eigenschaft eines Propertys mit dem Typ TCOLLECTION Clickt, öffnet sich ein PopUp mit welchem man neue Items hinzu fügen kann. Klickt man nun auf dieses neue ITEM, werden die Eigenschaften dieses TCOLLECTIONITEM's im Objekt Inspector angezeigt.
Nun soll zu diesem aktuellen ITEM die Ladetabelle eingestellt werden. Und danach soll der Objekt Inspector sich für dieses aktuell dargestellt ITEM die Eigenschaften neu darstellen.


Viele Grüße
Lorca

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5254
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Objektinspector auffordern die Attribute neu auszugeben

Beitrag von af0815 »

Hier mal mein Testprojekt für den ObjectInspector (OI) als standalone. Das Projekt stammt aus einem Bugfix für Lazarus und enthält deswegen einiges an auskommentierten Code.
Vielleicht kannst du dort ein Beispiel mit einer TCollection einfügen. Dann sieht man es besser.

Wenn man in dem Beispiel sich dann die unit PropEdits ansieht, so findet man dann den TCollectionPropertyEditor der für deine Problemstellung von Bedeutung ist. Da kann man sich vermutlich den Weg ansehen, warum das Verhalten so ist, wie es ist.

Edit: Der ist gut - Ein Hinweis direkt über dem PropertyEditor
{ TCollectionPropertyEditor
Default property editor for all TCollections, embedded in the OI
UNDER CONSTRUCTION by Mattias}
Dateianhänge
GuiOITest.zip
ObjectInspector standalone
(127.26 KiB) 30-mal heruntergeladen
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten