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
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
}
}