AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

DWF viewer COM automation ?

Ein Thema von HPW · begonnen am 30. Mär 2007 · letzter Beitrag vom 1. Apr 2007
Antwort Antwort
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#1

DWF viewer COM automation ?

  Alt 30. Mär 2007, 10:27
Hallo,

Ich versuche das DWF-viewer 7 ActiveX von autodesk in delphi zu benutzen.
Ich bekomme das ActiveX importiert und es läuft soweit in der Testanwendung.

Ich habe aber keine Erfahrung mit der COM automation,
daher weiss ich nicht wie ich die events der ActivX nutzen kann:

Zum Beispiel möchte ich den Object-Namen eines Object anzeigen:
Delphi-Quellcode:
procedure TForm1.CExpressViewerControl1SelectObject(ASender: TObject; const pIAdPageObjectNode, pHandled: IDispatch);
begin
  Label1.Caption := ????;
end;
Die autodesk Dokumentation hat leider nur ein VB6 Beispiel:

Delphi-Quellcode:
Private Sub CExpressViewerControl1_OnSelectObject(ByVal pIAdPageObjectNode As Object, ByVal pHandled As Object)
    Dim strResult As String
    Dim objPageObjectNode As EPlotRenderer.IAdPageObjectNode
    Dim tHandled As AdCommon.CAdToggle

    'First parameter : piAdPageObjectNode
Set objPageObjectNode = pIAdPageObjectNode
strResult = "Object node name is " + objPageObjectNode.Name
lstLog.AddItem (strResult)

'Second parameter : pHandled
    Set tHandled = pHandled
    tHandled.State = True
    strResult = "Selected object shouldn't be highlighted (in yellow)"
lstLog.AddItem (strResult)
End Sub
Hat jemand einen Tip wie das in delphi gemacht wird?
Hans-Peter
  Mit Zitat antworten Zitat
Benutzerbild von Shivan
Shivan

Registriert seit: 5. Mär 2003
Ort: Ravensburg
131 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: DWF viewer COM automation ?

  Alt 30. Mär 2007, 14:19
Hi,

du bekommst ja pIAdPageObjectNode als Parameter mit. Da es als IDispatch übergeben wird, kannst du das casten und zwar so wie im VB-Beispiel.
IDispatch musst du in COM sehen wie ein TObject... ein Pointer auf eine Instanz von etwas...

also müsste
Label1.Caption := (pIAdPageObjectNode as EPlotRenderer.IAdPageObjectNode).Name; dir den Objectnamen geben. Falls nicht, dann musst du pIAdPageObjectNode noch als IDispatch hardcasten
Label1.Caption := (IDispatch(pIAdPageObjectNode) EPlotRenderer.IAdPageObjectNode).Name; Aber da es bereits als IDispatch übergeben wird, sollte das so funktionieren. Manchmal muss man auch ein Unknown Interface noch als IUnknown und dann als zweites (!) als IDispatch casten, so dass es dann später in die nächst höhere Klasse gecastet werden kann. Delphi ist da etwas arg seltsam.

Du kannst natürlich wie in dem Beispiel dir auch eine weitere Variable machen vom Typ EPlotRenderer.IAdPageObjectNode ... ist EPlotRenderer eigentlich die TLB? Weil dann musst du ggf. diesen "Präfix" nicht angeben.
Markus Stein
  Mit Zitat antworten Zitat
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#3

Re: DWF viewer COM automation ?

  Alt 30. Mär 2007, 19:48
Shivan,

Danke für die Info.

Da ich leider gar nicht weiss wo EPlotRenderer aus der VB source herkommt, komme ich damit im Moment nicht weiter.

Ich habe ja bislang nur diese ActiveX importiert:

// Typbib: C:\Programme\Gemeinsame Dateien\Autodesk Shared\dwf Common\AdView.dll (1)
// Hilfe-String: ExpressViewerDll 1.0 Type Library

Und darin gibt es kein EPlotRenderer.

Hans-Peter
  Mit Zitat antworten Zitat
Benutzerbild von Shivan
Shivan

Registriert seit: 5. Mär 2003
Ort: Ravensburg
131 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: DWF viewer COM automation ?

  Alt 1. Apr 2007, 09:24
Zitat von HPW:
Ich habe ja bislang nur diese ActiveX importiert:

// Typbib: C:\Programme\Gemeinsame Dateien\Autodesk Shared\dwf Common\AdView.dll (1)
// Hilfe-String: ExpressViewerDll 1.0 Type Library

Und darin gibt es kein EPlotRenderer.
Schonmal über Late-Binding nachgedacht? Hat zudem den Vorteil, dass du nicht ganz so abhängig bist von der ActiveX Schnittstelle...

Dafür hast dann nur keine Syntaxprüfung und siehst Fehler erst, wenn die Zeile zur Laufzeit ausgeführt wurde...

Hast du mal nach EPlotRenderer.dll auf deiner Festplatte gesucht? (nicht unbedingt mit der Windows Suche oder zumindest in der Windows-Suche so eingestellt, dass er auch versteckte Dateien + Systemdateien durchsucht)

Die Datei sollte nämlich in %PROGRAMFILES%\Autodesk\Autodesk DWF Viewer\EPlot\EPlotRenderer.dll sein
Markus Stein
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:59 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