Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  PropertyGrid

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  PropertyGrid (1747 mal gelesen)
Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 20. Okt. 2011 15:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo an Alle,

mal wieder eine Frage an die Spezialisten.
Ich verwende in einer Form ein PropertyGrid. Was sehr komfortabel funktioniert. Dort kan der User eine Eigenschafft und auch einen Wert für diese Eigenschaft wählen und eingeben. Anschließend möchte ich den Wert für alle Objekte eines Auswahlsatzes einstellen. Jetzt mein Problem: Ich hab die Eigenschaft ja nur als String. Wie krieg ich aus diesem die richtige Eigenschaft des zu ändernden Objects heraus?
Also z.B. der User hat als Eigenschaft "Layer" gewählt und hat als Wert "NeuerLayer" eingegeben, wie komme ich dann auf "Object.Layer = NeuerLayer"? Kann ich die Eigenschaft des Objects irgendwie über ihren Namen ansprechen?

Danke, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 21. Okt. 2011 11:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Theo37 10 Unities + Antwort hilfreich

Hallo Theo,

du musst mit dem PropertyInfo-Object arbeiten.
EDIT: PropertyInfo ist in System.Reflection; enthalten
Das heißt du lässt dir alle Eigenschaften des Types auslesen
(Code ist nur exemplarisch hier so herunter getippt)
->PropertyInfo[] _pis = obj.Gettype().Getproperties();
und gehst dann die Liste der EIgenschaften durch
foreach (PropertyInfo _pi in _pis)
{
if (_pi.Name == %MEINEGESUCHTEEIGENSCHAFTNAME%)
_pi.Setvalue(obj,val);
}
Das war's imgrunde.

Bei Fragen ...

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

   
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

[Diese Nachricht wurde von Brischke am 21. Okt. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 24. Okt. 2011 13:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke, ich denke das hilft mir sehr. Probier ich gleich aus.

Gruß, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 423
Registriert: 08.10.2008

ACAD 2019
WIN 7 64bit
Intel Xenon CPU E5-1620 3.60GHz
16GB RAM

erstellt am: 24. Okt. 2011 14:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi, ist doch nicht so einfach wie ich dachte.

ich hab mal was geschrieben:

    Sub Move(ByVal Eigname As String, ByVal Value As Double)
        Dim MyEnti As AcadEntity
        Dim Eigens() As System.Reflection.PropertyInfo
        Dim Eig As System.Reflection.PropertyInfo
        Dim Mytype As System.Type
        Mylayer()
        For Each MyEnti In ThisDrawing.ModelSpace
            Try
                Mytype = MyEnti.GetType
                Eigens = Mytype.GetProperties
                For Each Eig In Eigens
                    If Eig.Name = Eigname Then
                        MsgBox("Treffer")
                    End If
                Next
            Catch ex As Exception

            End Try
        Next
    End Sub

Aber die Zeile : "Eigens = Mytype.GetProperties" funktioniert leider nicht Eigens bleibt leer. was mach ich falsch?
Danke Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 25. Okt. 2011 16:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo an Alle,

neue Erkenntnisse von mir.
Die Zeile : "Eigens = Mytype.GetProperties" funktioniert mit dem Managed Objekt "Entinity". Mit dem ist aber das PropertyGrid lange nicht so schön. Jetzt weiß ich nicht was ich machen soll.
Wenn ich mische, also das Com-Objekt für das PropertyGrid verwende und danach das Managed-Objekt für das finden der Eigenschaft verwende, dann bin ich mir nicht sicher ob die Eigenschaften wirklich gleich heissen. Hat jemand nee Idee?

Danke, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 26. Okt. 2011 08:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Theo37 10 Unities + Antwort hilfreich

Hallo,

schau dir doch erst einmal die Managed-Eigenschaften-Namen an. Layer heißt auch dort Layer, und Farbe = Color. Name = Name usw. ... . Was macht denn die Com-Eigensachaften schöner als die Managed-Eigenschaften? (Englisch sind sie doch alle)

Im Zweifel arbeitest du mit einer Übersetzuungstabelle.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 26. Okt. 2011 08:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Holger,

mit "schöner" meinte ich das PropertyGrid, wenn ich dort das Com-Objekt einlese dann sieht das fast aus wie das Eigenschaften Fenster von AutoCad. Also für den Benutzer eine gewohnte Umgebung. Wenn ich dort das Managed-Objekt einlese, dann bekomme ich zwar auch die Eigenschaften wie Layer, Farbe... , aber auch sehr viele mit denen der normale User nicht viel anfangen kann. Das gefällt mir nicht so.
Gut wäre es, wenn ich das PropertyGrid auf die A-CAD spezifischen Sachen beschränken könnte, also so die klassischen Eigenschaften wie
Layer, Farbe, linienstärke, Linientyp, Plotstil, Linientypfaktor, Länge, Winkel..... Aber da weiß ich nicht wie das gehen könnte.
Ich probiers jetzt einfach mal mit dem COM-Objekt und zum Bearbeiten der Eigenschaften nehme ich dann das Managed-Objekt. Notfalls, verwende ich ne Tabelle, aber das macht das Ganze ein bisschen unflexibel.
Danke, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 423
Registriert: 08.10.2008

ACAD 2019
WIN 7 64bit
Intel Xenon CPU E5-1620 3.60GHz
16GB RAM

erstellt am: 28. Okt. 2011 14:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Holger,

jetzt bin ich so weit. ich mische lustig durcheinander und es funtioniert trotzdem. Kann ich in dem PropertyGrid auch einzelne Eigenschaften ausblenden? Kann ich das Bearbeiten der Eigenschaften verhindern? Also die Werte sollen nur angezeigt werden aber nicht verändert werden können.

Danke, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 30. Okt. 2011 08:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Theo37 10 Unities + Antwort hilfreich

Hallo Theo,

kann ich dir nicht sagen, weil ich damit noch nie gearbeitet habe.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 09. Nov. 2011 17:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Holger,

darf ich dich doch nochmal mit einer Frage belästigen?
Wenn die Eigenschaft ein Double-array ist z. B. bei Endpoint, Startpoint oder Delta. Wie muß dann die "getValue" Zeile aussehen?
Bisher steht da bei mir:
        MyValue = Eig.GetValue(NewObjekt, Index)
Wobei MyValue ein leeres Object ist
Eig ist die Eigenschaft wie etwa Delta
NewObjekt ist eine Linie
Index ist Object-Array mit einer Integer die 0 ist
Das führt unweigerlich zu einer Fehlermeldung, die Anzahl der Parameter stimmen nicht.
Kann ich ein Array nur als ganzes auslesen?
Oder was muß ich als Index angeben?
Kannst Du mir ein Beispiel geben?

Danke Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 09. Nov. 2011 17:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Theo37 10 Unities + Antwort hilfreich

Hallo Theo,

ich kann gerade nicht im Code nachschauen oder testen, aber ich denke man kann beim Index ein Null mitgeben, dann funktioniert das mit allen ObjectTypen.
Ich hoffe, dass morgen mein Server wieder läuft, dann schaue ich aber noch einmal nach.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 11. Nov. 2011 10:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Theo37 10 Unities + Antwort hilfreich

Hallo Theo,

ich habe eben mal nachgeshen .. es ist tatsächlich so, dass ich die Methode GetProperty mit dem Index-Parameter Null 'füttere'.

ich habe mir eine eigene Klasse hierfür erstellt, in der die Variable _PropertyInfoObject als interne Eigenschaft gesetzt ist:
private PropertyInfo _PropertyInfoObject;

Code:
public Object GetValue(Object _Object)
        {
            if (_CanRead)
            {
                try
                {
                    return _PropertyInfoObject.GetValue(_Object, null);
                }
                catch { return null; }
            }
            else
                return null;
        }

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 11. Nov. 2011 10:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Holger,

was ist NULL bei dir? Ich hab schon einiges ausprobiert. aber am besten funktioniert es wenn der Index ein leeres Object-Array ist.
Also: Dim Index() as Object
Bei dem Ergebniss-Object muß es sich anscheinend um den korrekten Typ handeln. Also es darf nicht einfach vom Typ Object sein sondern muß z.B. Geometry.Point3d sein.
Könnte ich mal einen Codeschnipsel von dir haben, wo Du deine Variablen deklinierst? das würde mir am meisten helfen.

Danke Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 11. Nov. 2011 11:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Theo37 10 Unities + Antwort hilfreich

private PropertyInfo _PropertyInfoObject;

public Object GetValue(Object _Object)
        {
            if (_CanRead)
            {
                try
                {
                    return _PropertyInfoObject.GetValue(_Object, null);
                }
                catch { return null; }
            }
            else
                return null;
        }
ich habe die ObjectTypen mal FETT gemacht. Eigentlich siehst du alles. Wie du Null in VB.Net angibst ... keine Ahnung vbNull?

Grüße Holger


------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

   
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

[Diese Nachricht wurde von Brischke am 11. Nov. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


Sehen Sie sich das Profil von Theo37 an!   Senden Sie eine Private Message an Theo37  Schreiben Sie einen Gästebucheintrag für Theo37

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 11. Nov. 2011 11:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

OK, verstanden. Und damit kriegst Du alle Datentypen raus? Egal ob das Ergebniss ein String, Double oder Vector3d ist.
Das probier ich am Montag aus. Bin heut ein bisschen im Stress.
Danke und Gruß, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz