| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Angezeigte Attribute durch ISmView (1471 mal gelesen)
|
floe Mitglied Application Engineer

 Beiträge: 32 Registriert: 22.03.2004
|
erstellt am: 15. Jan. 2007 16:39 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen habe eine Suche mittels VB6 erstellt, das Resultat wird in einer Liste in SmarTeam dargestellt. Code:
Private Function DisplayList(objects As ISmObjects) Dim GUISrv As SmGUISrv.SmGUIServices Dim view As ISmView Set GUISrv = SmSession.GetService("SmGUISrv.SmGUIServices") Set view = GUISrv.NewView(vwtCustom) view.DisplayObjects.SingleObject = objects(0) view.SmViewWindow.Style = swsMDIChild view.SmViewWindow.Show End Function
funktioniert soweit ganz gut. Nun möchte ich aber in der angezeigten Tabelle die angezeigten Attribute selber bestimmen, sowie auch deren Reihenfolge, wie in einer 'Standardsuche' mittels 'Attribute...' Button. kann mir da jemand helfen? Besten dank gruss floe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChristianS Mitglied Leiter Kundenbetreuung
  
 Beiträge: 635 Registriert: 27.09.2000
|
erstellt am: 18. Jan. 2007 15:14 <-- editieren / zitieren --> Unities abgeben:          Nur für floe
Hi, das kannst Du erreichen, indem Du das ViewObject aus einer reclist erzeugst, die so aufgebaut ist, wie Du sie sehen willst. Beispiel (ist aus einer meiner StandardRoutinen die für ich für solche Zwecke erstellt habe): SmRecList2Select ist eine leere Recordlist. ShownAtributes ist in diesem Fall ein Record in dem die Header aufgelistet sind smobjects ist das Objects mit allen enthaltenen anzuzeigenden Objekten. Dieses SmObjects muß auch alle Header und Werte enthalten, die Du anzeigen willst For x = 0 To ShownAtributes.Headers.count - 1 SmRecList2Select.AddHeader ShownAtributes.Headers.Item(x).Name, ShownAtributes.Headers.Item(x).ValueSize, ShownAtributes.Headers.Item(x).ValueType Next x For x = 0 To smobjects.count - 1 SmRecList2Select.AddRecord For y = 0 To SmRecList2Select.HeaderCount - 1 SmRecList2Select.value(SmRecList2Select.Headers.Item(y).Name, x) = smobjects.Item(x).value(SmRecList2Select.Headers.Item(y).Name) Next y Next x Set SmViewObjects = smsession.ObjectStore.ObjectsFromData(SmRecList2Select, True) Set CompositeObjects = smsession.ObjectStore.CompositeObjectsFromData(SmViewObjects.Data, True) SmView.DisplayObjects.CompositeObjects = CompositeObjects Eventuell geht mittlerweile auch etwas mit .CAT oder .COPY für die Recordlist. Zu dem Zeitpunkt als ich diese Funktion entwickelt habe, ging es nicht. Daher war die Weg über die 2 Schleifen (X und Y) der einzige... und damit der beste... Weg. Gruß Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
floe Mitglied Application Engineer

 Beiträge: 32 Registriert: 22.03.2004
|
erstellt am: 19. Jan. 2007 11:33 <-- editieren / zitieren --> Unities abgeben:         
Hallo Christian ich muss gestehen, dass ich mich mit den composit objects immer meine mühe hatte, habe die noch nie richtig verstanden. die 'SmRecList2Select' zu füllen war kein problem. aber dann die zuweisung zu 'SmViewObjects' klappt nicht richtig. ich nehme jetzt mal an dass die beiden ersten headers OBJECT_ID und CLASS_ID sein müssten, sonst können die objekte nicht eindeutig definiert werden. ich habe den ShownAtributes Record gefüllt mit OBJECT_ID, CLASS_ID, TDM_ID und DESCRIPTION. was muss hier noch beachtet werden damit die zuweisung 'Set SmViewObjects = smsession.ObjectStore.ObjectsFromData(SmRecList2Select, True)' funktioniert? Fehlermeldung: "Die Methode 'ObjectsFromData' für das Objekt 'ISMObjectStore' ist fehlgeschlagen" Wäre Dir für weitere Hilfe dankbar gruss floe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChristianS Mitglied Leiter Kundenbetreuung
  
 Beiträge: 635 Registriert: 27.09.2000
|
erstellt am: 19. Jan. 2007 11:47 <-- editieren / zitieren --> Unities abgeben:          Nur für floe
Hi, so auf die Schnelle, es gibt einen Unterschied zwischen Entwicklunsgumgebung und DLL. Hast Du Deine Funktion schon als DLL getestet ? Ansonsten werde ich heute Abend in meinen Code reinschauen, und Dir ein Beispiel zusammenstellen. Am Montag .. oder vielleicht noch heute später am Abend könnte ich es dann posten. Gruß Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
floe Mitglied Application Engineer

 Beiträge: 32 Registriert: 22.03.2004
|
erstellt am: 19. Jan. 2007 12:00 <-- editieren / zitieren --> Unities abgeben:         
|
floe Mitglied Application Engineer

 Beiträge: 32 Registriert: 22.03.2004
|
erstellt am: 19. Jan. 2007 13:34 <-- editieren / zitieren --> Unities abgeben:         
ja leider bin ich doch noch nicht zufrieden.. habe bisher gar nicht bemerkt, dass wenn ich in der resultat-liste auf eine eintrag klicke, die entsprechende profilkarte gar nicht angezeigt wird!!! ausgegeben wird also nur eine tabelle ohne jede logik dahinter.. ist das bei dir auch so oder ist da bei mir irgendwo der hund drin? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChristianS Mitglied Leiter Kundenbetreuung
  
 Beiträge: 635 Registriert: 27.09.2000
|
erstellt am: 19. Jan. 2007 13:39 <-- editieren / zitieren --> Unities abgeben:          Nur für floe
|
ChristianS Mitglied Leiter Kundenbetreuung
  
 Beiträge: 635 Registriert: 27.09.2000
|
erstellt am: 22. Jan. 2007 16:55 <-- editieren / zitieren --> Unities abgeben:          Nur für floe
Hi, es gibt 2 Punkte die zu beachten sind 1.) Richtige Deklaration der Header 2.) Systemattribute die mit in den Record müssen Anbei findest Du ein Script, in dem es funktioniert, mit einigen Erklärungen. Binde es einfach als Benutzerdefinierte Funktion ein und lege es auf die Rechte Maustaste. Suche nach Objekten, selektiere diese und führe die Funktion aus. Wenn das klappt, kannst Du ja mal in Deinem Programm nachsehen, wo der Haken ist. Gruß Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
floe Mitglied Application Engineer

 Beiträge: 32 Registriert: 22.03.2004
|
erstellt am: 22. Jan. 2007 17:19 <-- editieren / zitieren --> Unities abgeben:         
Hallo Christian habe die fehlenden zeilen gleich in mein script eingebaut. funktioniert perfekt. waren nur die "erweiterten" systemattribute, da ich die revision auch angezeigt haben will. die lösung ist doch manchmal so einfach, man muss nur drauf kommen ich danke dir auf jeden fall ganz herzlich für deine unterstützung. wenn doch nur immer alle threads so kompentent gelöst würden... schönen abend liebe grüsse floe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |