Newsgroup: it.comp.lang.visual-basic
Titolo: Errore di Implements ILocateCommandEvents  con VB.Net-Microstation

VB.Net 2010
 Il codice di sotto  l'ho preso dal VBA di Microstation 2004 e l'ho adattato 
al VB.net 2010. Con  VBA funziona perfettamente mentre da una serie di 
errori con 
vb.net
.
Qualcuno  sa come risolvere il problema?
L'elenco degli errori sono alla fine del messagiio.
Ciao
nerp23
----------------------------------------------------------------------------------------------------
' CODICE DELLA CLASSE LCE_Text2
Imports MicroStationDGN
Public Class LCE_Text2
Implements ILocateCommandEvents 'RIGA CHE GENERA L'ERRORE
Public ustn As New MicroStationDGN.Application()
Private SelElement As Element
Private Sub ILocateCommandEvents_Accept(ByVal Element As Element, ByVal 
Point As Point3d, ByVal View As View)
End Sub
Private Sub ILocateCommandEvents_Cleanup()
End Sub
Private Sub ILocateCommandEvents_Dynamics(ByVal Point As Point3d, ByVal View 
As View, ByVal DrawMode As MsdDrawingMode)
End Sub
Private Sub ILocateCommandEvents_LocateFailed()
If SelElement Is Nothing = False Then
ustn.ActiveModelReference.UnselectAllElements()
SelElement = Nothing
End If
End Sub
Private Sub ILocateCommandEvents_LocateFilter(ByVal Element As Element, 
ByVal Point As Point3d, ByVal Accepted As Boolean)
Accepted = False
Dim elemText As TextElement
If Element.IsTextElement = True Then
elemText = Element
elemText.Redraw(ustn.msdDrawingModeErase)
elemText.Text = UCase(elemText.Text)
elemText.Redraw(ustn.msdDrawingModeNormal)
elemText.Rewrite()
ustn.ActiveModelReference.UnselectAllElements()
End If
End Sub
Private Sub ILocateCommandEvents_LocateReset()
ustn.CommandState.StartDefaultCommand()
End Sub
Private Sub ILocateCommandEvents_Start()
End Sub
End Class
---------------------------------------------------------------------------
'CODICE PULSANTE
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button1.Click
ustn.CommandState.StartLocate(New LCE_Text2)
End Sub
End Class
---------------------------------------------------------------------------------
   LISTA ERRORI IN 
VB.NET
Errore 1 Class 'LCE_Text2' deve implementare 'Sub Accept(Element As 
_Element, ByRef Point As Point3d, View As View)' per l'interfaccia 
'MicroStationDGN.ILocateCommandEvents'. D:\00 
Visual.NET\test\test\LCE_Text2.vb 5 16 test
Errore 2 Class 'LCE_Text2' deve implementare 'Sub Cleanup()' per 
l'interfaccia 'MicroStationDGN.ILocateCommandEvents'. D:\00 
Visual.NET\test\test\LCE_Text2.vb 5 16 test
Errore 3 Class 'LCE_Text2' deve implementare 'Sub Dynamics(ByRef Point As 
Point3d, View As View, DrawMode As MsdDrawingMode)' per l'interfaccia 
'MicroStationDGN.ILocateCommandEvents'. D:\00 
Visual.NET\test\test\LCE_Text2.vb 5 16 test
Errore 4 Class 'LCE_Text2' deve implementare 'Sub LocateFailed()' per 
l'interfaccia 'MicroStationDGN.ILocateCommandEvents'. D:\00 
Visual.NET\test\test\LCE_Text2.vb 5 16 test
Errore 5 Class 'LCE_Text2' deve implementare 'Sub LocateFilter(Element As 
_Element, ByRef Point As Point3d, ByRef Accepted As Boolean)' per 
l'interfaccia 'MicroStationDGN.ILocateCommandEvents'. D:\00 
Visual.NET\test\test\LCE_Text2.vb 5 16 test
Errore 6 Class 'LCE_Text2' deve implementare 'Sub LocateReset()' per 
l'interfaccia 'MicroStationDGN.ILocateCommandEvents'. D:\00 
Visual.NET\test\test\LCE_Text2.vb 5 16 test
Errore 7 Class 'LCE_Text2' deve implementare 'Sub Start()' per l'interfaccia 
'MicroStationDGN.ILocateCommandEvents'. D:\00 
Visual.NET\test\test\LCE_Text2.vb 5 16 test

 ---------------------------------------------------------------------------­------

.....a me sembra chiaro!...anche se non so che è sto microstation....
se dichiari di usare una interfaccia...(o se lo fa un wizard per
te...)poi la devi implementare TUTTA!
sub start
sub locatereset
etc etc
ti/vi sono rimasti nella penna virtuale!!!
In vba probabilmente ti funziona perchè da dentro il prodotto tutto è
correttamente referenziato....
dall'esterno....è tutto un altro paio di maniche!
Devi avere tutti i namespace correttamente referenziati...altrimenti
(e potrebbe essere una causa di quegli errori) al tuo sw mancano dei
"mattoni" per costruire la "casa"!
Cmq vada....nel tuo programma stand alone...mancano alcune
implementazioni di una interfaccia...probabilmente è una dll da
referenziare

.....a me sembra chiaro!...anche se non so che è sto microstation....
se dichiari di usare una interfaccia...(o se lo fa un wizard per
te...)poi la devi implementare TUTTA!
 sub locatereset
etc etc
come si implementa  sub start,   ecc. ecc.
Microstation è un programma Cad come Autocad.
Ciao
nero23 

Ho risolto modificando il codice come riportato sotto.
Delle due sintassi, quale è quella corretta dato che il programma funziona 
con entrame?
1) Implements MicroStationDGN.ILocateCommandEvents
2) Implements ILocateCommandEvents
Ciao a tutti
nero23
    NUOVO CODICE
----------------------------------------------------------
Imports MicroStationDGN
Public Class LCE_Text2
    Implements MicroStationDGN.ILocateCommandEvents
    Public ustn As New MicroStationDGN.Application()
    Private SelElement As Element
    Public Sub Accept(ByVal Element As MicroStationDGN._Element, ByRef Point 
As Point3d, ByVal View As View) Implements 
MicroStationDGN.ILocateCommandEvents.Accept
    End Sub
    Private Sub ILocateCommandEvents_Cleanup() Implements 
MicroStationDGN.ILocateCommandEvents.Cleanup
    End Sub
    Private Sub Dynamics(ByRef Point As Point3d, ByVal View As View, ByVal 
DrawMode As MsdDrawingMode) Implements 
MicroStationDGN.ILocateCommandEvents.Dynamics
    End Sub
    Private Sub ILocateCommandEvents_LocateFailed() Implements 
MicroStationDGN.ILocateCommandEvents.LocateFailed
        If SelElement Is Nothing = False Then
            ustn.ActiveModelReference.UnselectAllElements()
            SelElement = Nothing
        End If
    End Sub
    Private Sub LocateFilter(ByVal Element As _Element, ByRef Point As 
Point3d, ByRef Accepted As Boolean) Implements 
MicroStationDGN.ILocateCommandEvents.LocateFilter
        Accepted = False
        Dim elemText As TextElement
        If Element.IsTextElement = True Then
            elemText = Element
            elemText.Redraw(MsdDrawingMode.msdDrawingModeErase)
            elemText.Text = UCase(elemText.Text)
            elemText.Redraw(MsdDrawingMode.msdDrawingModeNormal)
            elemText.Rewrite()
            ustn.ActiveModelReference.UnselectAllElements()
        End If
    End Sub
    Private Sub ILocateCommandEvents_LocateReset() Implements 
ILocateCommandEvents.LocateReset
        ustn.CommandState.StartDefaultCommand()
    End Sub
    Private Sub ILocateCommandEvents_Start() Implements 
ILocateCommandEvents.Start
    End Sub
End Class

 wrote:
mi sà che ti manca qualche passaggio fondamentale nel tuo percorso
formativo:
Un namespace sai cos'è
se lo sai bene altrimenti
http://totemslair.org/guide/viewchapter.php?guida=vb&id=2
se hai un Namespace chiamato Pippo con dentro una classe Topolino
se dichiaro
Imports Pippo
poi ha la facilitazione di poter scrivere Topolino direttamente
altrimenti devo dichiarare tutta la sequenza di annidamento (un po
come un path!)
ossia
Pippo.Topolino
Considera una cosa che dico sempre ai miei allievi: il pc è un
precisissimo idiota!
Non sà quello che vuoi fare...ma se glielo mostri...finchè c'è
corrente lui ripeterà quello che gli hai mostrato!
in altri termini:
Se non gli mostri DOVE STA' topolino lui non sà dove cercarlo e si
inchioda!
Seconda parte
se ti riferisci ad una interfaccia..stringi stringi non fai altro che
dichiarare una serie di sub function ed altro già predefinite da te
stesso o altri! Serve a non reinventare sempre la ruota e a
"standardizzare" il più possibile operazioni comuni!
Se in VB.net dichiari
Implements IPaperino
...il sistema cerca da se una interfaccia con quel nome...la legge e
ti riporta pari pari tutte le sub function ed altro che l'interfaccia
prevede...NON DEVI CANCELLARE NULLA...pena il "quintale" di alert che
già hai visto!
Leggi qui!
http://totemslair.org/guide/viewchapter.php?guida=vb&id=37
In conclusione
per me ti conviene ripassare la parte oop di 
vb.net
!
Saluti!

 wrote:
mi sà che ti manca qualche passaggio fondamentale nel tuo percorso
formativo:
<Un namespace sai cos'è
<se lo sai bene altrimenti
<
http://totemslair.org/guide/viewchapter.php?guida=vb&id=2
 So cosa sono i namespace, ma non capisco perchè entrambe le soluzioni vanno 
bene.
Ero convinto che solo la prima era quella corretta.
1 soluzione ) Implements MicroStationDGN.ILocateCommandEvents
2 soluzione) Implements ILocateCommandEvents
Grazie di tutto
Ciao
nero23

 2 soluzione) Implements ILocateCommandEvents
se vai nelle proprietà del progetto vedrai che codesto MicroStationDGN
è referenziato...quindi l'ambiente conosce codesto namespace.
In più SE ILocateCommandEvents è presente SOLO in quel namespace il
sistema non và in confusione ed accetta ambedue le sintassi...
comunque a livello di "eleganza" sintattica e chiarezza futura....hai
ragione Implements MicroStationDGN.ILocateCommandEvents è più chiaro!

Non posso che ringraziarti.
Ciao
nero23