Moin!
es war schon etwas schwierig einen passenden Titel für dieses Posting zu finden deshalb jetzt erst einmal worum es geht.
Im Rahmen eines GIS-Programmes aus dem Hause Autodesk sollen Schaltflächen erstellt werden die jeweils einen eindeutigen Namen haben und dann wiederum einer Funktion zugewiesen werden sollen. Da die Anzahl der Schaltflächen noch nicht final ist muss später erweitert werden - wobei der Erweiterungsumfang möglichst gering und einfach gehalten werden soll.
Hier einige Code-Passagen, wie es normalerweise ablaufen würde.
Soweit ist nun einmal das "Gerippe".
Ich hatte mir nun zuerst überlegt ein Array mit Namen der Schaltflächen (vergleiche _Button_ZF_Haltung) zu erstellen und dann diese in einer Schleife abzuarbeiten. Dafür brauche ich aber eine unterschiedliche Anzahl von Autodesk.Map.IM.Forms.Button-Variablen. Ein Array scheidet aus, weil dieses bei WithEvents wohl nicht geht.
An dieser Stelle muss ich dann wohl den Weg einschlagen die Namen, nach einem Benennungsprinzip, hard zu codieren - das geht dann auch noch.
Die Zuweisung der Funktionen aus dem Dialog_load könnte ich dann wieder über eine Schleife lösen.
Die Handles bei Action_ZoomFeature müssen wiederum zugewiesen werden. Das würde zwar noch in einem Rahmen manuell machbar sein. Dieses würde ich mit AddHandler machen wollen.
Soweit meine Gedanken zu dem Umfeld. Ich hoffe man kann dieses einigermaßen nachvollziehen.
Kann mir einer bei der Frage nach dem (halbautomatischen) Anlegen der Buttons weiterhelfen ?
.... oder hat einer von Euch eine ganz andere Idee ?
Gruß Jan
es war schon etwas schwierig einen passenden Titel für dieses Posting zu finden deshalb jetzt erst einmal worum es geht.
Im Rahmen eines GIS-Programmes aus dem Hause Autodesk sollen Schaltflächen erstellt werden die jeweils einen eindeutigen Namen haben und dann wiederum einer Funktion zugewiesen werden sollen. Da die Anzahl der Schaltflächen noch nicht final ist muss später erweitert werden - wobei der Erweiterungsumfang möglichst gering und einfach gehalten werden soll.
Hier einige Code-Passagen, wie es normalerweise ablaufen würde.
VB.NET-Quellcode
- Private WithEvents _BT_ZF_Haltung As Autodesk.Map.IM.Forms.Button = Nothing
- Private _Button_ZF_Haltung As String = "$EBLZFHALTUNG"
- ...
- ''' <summary>
- ''' Aktion beim Laden des Dialoges
- ''' </summary>
- '''
- Private Sub Dialog_load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
- _MapData = New EBL.MapService.MapData(Me.Document)
- Dim ControlName As String
- If Me.Dialog.Controls.Contains(ControlName) Then
- _BT_ZoomFeatures = CType(Me.Dialog.Controls.ApiItem(ControlName), Autodesk.Map.IM.Forms.Button)
- With _BT_ZoomFeatures
- .Text = "Zoom ->"
- ' deaktivieren der Schaltfläche, wenn die Datenbank schreibgeschützt ist
- If Me.Dialog.FeatureClass.ReadOnly Then
- .ToolTipText = "Auf Objekte zoomen ..."
- End If
- _Status_Zoom_Element = True
- End With
- End If
- ZentralButtonControlling()
- End Sub
- ...
- ' hier passiert dann etwas ...
- Private Sub Action_ZoomFeatures() Handles _BT_ZoomFeatures.Click
- ....
- End Sub
Soweit ist nun einmal das "Gerippe".
Ich hatte mir nun zuerst überlegt ein Array mit Namen der Schaltflächen (vergleiche _Button_ZF_Haltung) zu erstellen und dann diese in einer Schleife abzuarbeiten. Dafür brauche ich aber eine unterschiedliche Anzahl von Autodesk.Map.IM.Forms.Button-Variablen. Ein Array scheidet aus, weil dieses bei WithEvents wohl nicht geht.
An dieser Stelle muss ich dann wohl den Weg einschlagen die Namen, nach einem Benennungsprinzip, hard zu codieren - das geht dann auch noch.
Die Zuweisung der Funktionen aus dem Dialog_load könnte ich dann wieder über eine Schleife lösen.
Die Handles bei Action_ZoomFeature müssen wiederum zugewiesen werden. Das würde zwar noch in einem Rahmen manuell machbar sein. Dieses würde ich mit AddHandler machen wollen.
Soweit meine Gedanken zu dem Umfeld. Ich hoffe man kann dieses einigermaßen nachvollziehen.
Kann mir einer bei der Frage nach dem (halbautomatischen) Anlegen der Buttons weiterhelfen ?
.... oder hat einer von Euch eine ganz andere Idee ?
Gruß Jan