Zum Hauptinhalt springen

Dialog Plugin erzeugen

Hinweis

Wir empfehlen Ihnen Visual Studio 2022 oder 2019 zu verwenden um Plugins für MapEdit zu erstellen. Für diese Anleitung wurde Visual Studio 2022 mit C# verwendet. Dies Anleitung bezieht sich auf MapEdit Version 23.1.261 (23.2.54) und höher. Benutzten Sie keine MapEdit Versionen älter als diese.

Mittels "Dialog Plugins" können Sie die Funktionaliät eines Generic Formulares um eigene Funktionen erweitern.

Sie können unter anderem einfache Steuerelemente wie Knöpfe, Menüs, Toolbars usw einfügen oder auch komplexere eigene Steuerelemente in einen Dialog mit aufnehmen.

Fügen Sie in ihrem Visual Studio Projekt eine neue Klasse hinzu und nennen Sie diese so wie ihre Tabelle (Dialog) plus Dialog.

z.B. BaumDialog.cs

Fügen Sie am Kopf der Klasse diese using statements hinzu.

using System;
using Mum.Geo.PlugIns;
using Mum.Geo.Client.Generic;
using Mum.Geo.Client.Events;
using XSystem;

Leiten Sie ihre Klass nun von "GenericFormPlugIn" ab in dem Sie hinter ihre Klasse ": GenericFormPlugIn" schreiben.

public class IHR_KLASSEN_NAME : GenericFormPlugIn  

Fügen der der Klasse das Attribut "GenericFormPlugIn" hinzu und tragen sie den Namen ihrer Tabelle ein.

Diese Attribut teil MapEdit mit das die Klasse immer dann geladen werden soll wenn ein Generic Dialog auf die Tabelle "IHRE_TABELLE" geöffnet wird.

[GenericFormPlugIn("*.IHRE_TABELLE")]
public class IHR_KLASSEN_NAME : GenericFormPlugIn

Der * bedeutet das die Klasse bei allen Datenbankverbindungen geladen werden soll wo der Name der Tabelle/Formulares "IHRE_TABELLE" ist.

Wenn Sie statt einem Tabellenamen ein * schreiben dann wird diie Klasse bei allen Dialogen geladen.

[GenericFormPlugIn("*.*")]
public class IHR_KLASSEN_NAME : GenericFormPlugIn

Sie können eine Klasse auch mehreren Dialogen/Tabellen zuweisen in dem Sie das Attribut mehrfach setzen.

Beispiel:

[GenericFormPlugIn("*.BAUM")]
[GenericFormPlugIn("*.BUSCH")]
public class IHR_KLASSEN_NAME : GenericFormPlugIn

Wenn Sie wollen das ihr Plugin nur bei einem bestimmten Datenmodell geladen werden soll dann können sie als zweiten Parameter den Datenmodel Code angeben.

Beispiel:

[GenericFormPlugIn("*.BAUM","1.3.0")]  
public class IHR_KLASSEN_NAME : GenericFormPlugIn

Bei MapEdit Datenmodellen ist der Datenmodel Code eine GUID in der Form "390B83CE-11C8-4701-B7FE-D9F754B76E62"
Bei Topobase Datenmodellen ist es im Regelfall eine Nummer wie "1.3.0"

Fügen Sie nun einen Konstruktor hinzu.

public IHR_KLASSEN_NAME(GenericForm genericForm) : base(genericForm)
{

}

Dieser wird aufgerufen wenn der Dialog geladen wird.

Ihre Klasse sollte dann komplett so oder aehnlich aussehen.

using System;
using Mum.Geo.PlugIns;
using Mum.Geo.Client.Generic;
using Mum.Geo.Client.Events;
using XSystem;

namespace MySample1
{
[GenericFormPlugIn("*.BAUM")]
public class BaumDialog : GenericFormPlugIn
{
public BaumDialog(GenericForm genericForm) : base(genericForm)
{

}
}
}

Setzen Sie nun einen Breakpoint in den Konstruktor und
kompilieren und starte Sie Ihr Projekt. Öffen Sie den zugewiesenen Generic Dialog und Vosual Studio sollte bei ihrem Breakpoint anhalten.

Die Klasse GenericFormPlugIn bietet viele Funktionen. Diese können Sie mittel "this" erreichen.

Weitere Funktionen zum Dialog finden Sie auch bei "this.GenericForm".