Можно создать экранную форму для решения произвольной задачи. Для этого в проекте модуля создаем новый объект Windows Form и наследуем его от класса CommonForm (из пространства имен Ultima.Client):
public partial class CustomForm : CommonForm { public CustomForm() { InitializeComponent(); } } |
Чтобы иметь возможность открыть созданную экранную форму в клиентском приложении, добавляем в ранее созданный класс, унаследованный от класса BaseModule, соответствующую команду:
[Command("{BB8B0BA1-EE2B-4102-BB1C-BA958CA0F303}", "Name", "Descr", "Category")] public void OpenMyClientModuleForm(object sender, CommandEventArgs args) { new CustomForm().ShowChild(); } |
Теперь, используя созданную форму, можно получить, например, информацию о текущем пользователе:
[Import] private IUserManager UserManager { get; set; }
private void simpleButton1_Click(object sender, EventArgs e) { /// Получаем данные о текущем пользователе. textEdit1.Text = UserManager.CurrentUserID + ", " + UserManager.CurrentUser.RealUserName;
/// Получаем информацию о компьютере пользователя. textEdit2.Text = UserManager.CurrentUser.MachineName + UserManager.CurrentUser.OsUserName; } |
Можно получить ту же информацию, обращаясь непосредственно к таблице пользователей в базе данных.
[Import] private ITableSource DataContext { get; set; }
private void simpleButton2_Click(object sender, EventArgs e) { var id = long.Parse(textEdit3.Text); var users = from u in DataContext.GetTable<User>() where u.ID == (id == null ? 1 : id) select u; var user = users.Single();
if (user != null) { memoEdit1.Text = "логин:\t" + user.Login + "\r\n" + "имя:\t" + user.Name + "\r\n" + "язык (ID):\t" + user.LangID + "\r\n" + "заблокирован:\t" + user.IsLocked + "\r\n" + "срок действия пароля истек:\t" + user.IsExpired; } } |