Table of Contents

DotNET-View in Dockingpanes

Informationen

  • Kategorien: GUI | Docking
  • Version: 20.0.0.10113
  • Veröffentlichungsdatum: Donnerstag, 9. November 2017
  • Entwickler: Schulze
  • Benötigt Datenbankänderung: Nein
  • Betreff: DotNET-View in Dockingpane

Beschreibung

Mit einer neuen Schnittstelle in CliControl.dll wurde die Möglichkeit geschaffen, .NET-UserControls in eigenen DockingPanes einzubetten. Diese werden zur Laufzeit genau wie die Baum-, Tabelle, Favoriten-Panes etc. als eigene Views angezeigt.

Die Einrichtung erfolgt folgendermaßen:

[1] ein .NET-UserControl erstellen (C#),

  • die Schnittstelle [CliControl.dll].PitFM.Frontend.Views.IUserView im User-Control implementieren Um z.B. Daten des Entity anzuzeigen, welches in der Funkion OnUpdate angegeben wird, kann man mit dem EntityHandle und einem/mehreren Attributnamen über die .NET-Schnittstelle in CliModel.dll die Funktion PitFM.Model.UserData.EntityData.GetEntityData aufgerufen werden.

[2] die Assembly und den Klassennamen des User-Control in der pit-Registrierung eintragen (External/WinformViews), Keys: AssemblyName=... // der Name der Dll in welcher sich das UserControl befindet FullClassName=... // der vollständige Klassenname des UserControls (mit Namespace) PrintName=... // optional, wird in der DockingPane als Titel angezeigt, wenn leer dann wird der Name angezeigt MetaDataMode=TRUE|FALSE // optional, Default=FALSE, steuert ob die View im UserDataMode oder im MetaDataMode angezeigt wird

Update 05.09.2017 Revision 9954: Image=... // optional, der Name des Bitmaps welches in der eingeklappten Dockingpane erscheinen soll, die bmp-Datei muss im Ordner ...\system\image liegen

Bilder

DotNET-View in Dockingpanes

Beispielcode

// C# UserControl
// - Assembly=TestUserControl1.dll
// - das UserControl enthält ein Listbox-Control (listBox1)
// - Verweis auf CliControl.dll ist notwendig (Schnittstelle PitFM.Frontend.Views.IUserView)
//

using System.Windows.Forms;

namespace TestUserControl1
{
    public partial class UserControl1 : UserControl, PitFM.Frontend.Views.IUserView
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        #region IUserView Member
     
        public void OnUpdate(object sender, PitFM.Frontend.Views.Events.UpdateEventArgs e)
        {
            // Hinweis: Entity und EntityList werden in der Struktur "UpdateEventArgs" als Handle (int-Zahlen) übergeben. 
            // Mit diesen Handles können alle relevanten Daten zu den entsprechenden Objekten
            // über die .NET-Schnittstelle im Namensraum "PitFM.Model.Userdata" in CliModel.dll abgefragt werden.
            //
            listBox1.Items.Add( string.Format("Type={0}|Entity={1}|Entitylist={2}|Attribute={3}|Class={4}",
                e.UpdateType.ToString(),
                e.EntityHandle.ToString(),
                e.EntityListHandle.ToString(),
                e.AttributeName,
                e.EntityClassName ));

            if (e.Font != null)
            {
                this.Font = e.Font;
            }
        }

        bool PitFM.Frontend.Views.IUserView.IsEnabled
        {
            get { return true; }
            set { this.Enabled = value; }
        }

        #endregion
    }
}