Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Результати виконання практичних завдань. Завдання 1. Реалізація команд редагування даних
Завдання 1. Реалізація команд редагування даних.
У випадку використання ієрархії форм редагування, програмний код, що забезпечує виконання операцій додання, видалення та зміни даних розподілений між двома класами: EditingForm та FMembershipsEditor. Взаємодія між цими класами реалізується за допомогою механізму генерації і обробки подій. Форма редагування може працювати в одному з чотирьох режимів (вибору, додання, редагування, видалення), які визначаються значенням.поля editingMode типу перераховування EditingMode: public enum EditingMode { Selection, Adding, Editing, Deleting }; private EditingMode editingMode; При зміні значення даного поля методом доступу set властивості EditingMode (лістинг 1): · відображується відповідне повідомлення у рядку стану; · змінюється стан активності кнопок панелей інструментів редагування та навігації; · встановлюється відповідне значення поля editingBackColor, яке використовується в методами похідних класів у якості значення кольору фону полів введення даних; · генерується подія EditingModeChanged.
Лістинг 1 – Реалізація властивості EditingMode. public EditingMode EditingMode { get { return editingMode; } set { editingMode = value; ShowStatusMessage(); SetEditingControlsState(); editingBackColor = Changing ? GUIColors.ChangingBackColor : GUIColors.ReadOnlyBackColor; EditingModeChanged(this, new EventArgs()); } }
У відповідь на подію EditingModeChanged похідна форма FMembershipsEditor змінює стан компонентів редагування даних і відображує значення атрибутів вибраного об’єкту: private void editingForm_EditingModeChanged( object sender, EventArgs e) { SetDataControlsState(); ShowSelectedEntity(); }
Форма EditingForm генерує також події DataControlsClearing, DataAdding, DataEditing, DataDeleting та DataChanged, назви яких вказують на їх призначення. Ці події оброблюються відповідними методами класу FMembershipsEditor (лістинг 2).
Лістинг 2 – Фрагмент програмного коду класу FMembershipsEditor namespace WorldDivisionForms.Editing.Derived {
public partial class FMembershipsEditor: EditingForm {
private WorldRepository dataRepository;
private CountriesMembership selectedEntity;
private CountriesMembership[] countriesMembershipsArray;
protected override void SetEntitiesArray() { //EntitiesArray = dataRepository //.CountriesMembershipsArray; countriesMembershipsArray = dataRepository .CountriesMembershipsArray; EntitiesCount = countriesMembershipsArray.Length; SetDefaultSelectedIndex(); SetSelectedEntity(); }
private void SetDefaultSelectedIndex() { selectedIndex = countriesMembershipsArray.Length == 0? -1: 0; }
protected override void SetSelectedEntity() { selectedEntity = selectedIndex < 0? null : countriesMembershipsArray[selectedIndex]; ShowSelectedEntity(); SetNavigationControlsState(); }
protected override void SetDataControlsState() { comboBoxOrganization.Enabled = Changing; comboBoxCountry.Enabled = Changing; comboBoxMembershipStatus.Enabled = Changing; flowLayoutPaneAccessionDate.Enabled = Changing; flowLayoutPanelSecessionDate.Enabled = Changing; checkBoxIsFounder.Enabled = Changing; textBoxDescription.ReadOnly =!Changing; textBoxURL.ReadOnly =!Changing;
Color backColor = Changing ? GUIColors.ChangingBackColor : GUIColors.ReadOnlyBackColor; textBoxAccessionDate.BackColor = backColor; textBoxSecessionDate.BackColor = backColor; textBoxDescription.BackColor = backColor; textBoxURL.BackColor = backColor; comboBoxOrganization.BackColor = backColor; comboBoxCountry.BackColor = backColor; comboBoxMembershipStatus.BackColor = backColor; }
private void FMembershipsEditor_Load( object sender, EventArgs e) { RefreshSelectionLists(); ShowSelectedEntity(); base.DataAdding += editingForm_DataAdding; base.DataEditing += editingForm_DataEditing; base.DataDeleting += editingForm_DataDeleting; }
private void editingForm_DataAdding( object sender, EventArgs e) { Organization organization; Country country; MembershipStatus membershipStatus; bool? isFounder; DateTime accessionDate; DateTime? secessionDate; string description; string url; ConvertEnteringValues( out organization, out country, out membershipStatus, out isFounder, out accessionDate, out secessionDate, out description, out url); CountriesMembership countriesMembership = new CountriesMembership(organization, country, membershipStatus, isFounder, accessionDate) { SecessionDate = secessionDate, Description = description, URL = url }; dataRepository.AddCountriesMembership( countriesMembership); }
private void ConvertEnteringValues( out Organization organization, out Country country, out MembershipStatus membershipStatus, out bool? isFounder, out DateTime accessionDate, out DateTime? secessionDate, out string description, out string url) { organization = dataRepository .OrganizationByName(comboBoxOrganization.Text); country = dataRepository .CountryByName(comboBoxCountry.Text); membershipStatus = dataRepository .MembershipStatusByName( comboBoxMembershipStatus.Text); isFounder = checkBoxIsFounder.CheckState == CheckState.Indeterminate? (bool?)null : checkBoxIsFounder.Checked; accessionDate = DateTime.Parse( textBoxAccessionDate.Text); secessionDate = String.IsNullOrWhiteSpace( textBoxSecessionDate.Text)? (DateTime?)null : DateTime.Parse(textBoxSecessionDate.Text); description = textBoxDescription.Text; url = textBoxURL.Text.Trim(); }
private void editingForm_DataEditing( object sender, EventArgs e) { Organization organization; Country country; MembershipStatus membershipStatus; bool? isFounder; DateTime accessionDate; DateTime? secessionDate; string description; string url; ConvertEnteringValues( out organization, out country, out membershipStatus, out isFounder, out accessionDate, out secessionDate, out description, out url); selectedEntity.Organization = organization; selectedEntity.Country = country; selectedEntity.MembershipStatus = membershipStatus; selectedEntity.IsFounder = isFounder; selectedEntity.AccessionDate = accessionDate; selectedEntity.SecessionDate = secessionDate; selectedEntity.Description = description; selectedEntity.URL = url; }
private void editingForm_DataDeleting( object sender, EventArgs e) { dataRepository.RemoveCountriesMembership( selectedEntity); }
private void checkBoxAccessionDate_CheckedChanged( object sender, EventArgs e) { dateTimePickerAccessionDate.Visible = checkBoxAccessionDate.Checked; }
private void dateTimePickerAccessionDate_ValueChanged( object sender, EventArgs e) { textBoxAccessionDate.Text = dateTimePickerAccessionDate .Value.ToShortDateString(); }
private void checkBoxSecessionDate_CheckedChanged( object sender, EventArgs e) { dateTimePickerSecessionDate.Visible = checkBoxSecessionDate.Checked; }
private void dateTimePickerSecessionDate_ValueChanged( object sender, EventArgs e) { textBoxSecessionDate.Text = dateTimePickerSecessionDate .Value.ToShortDateString(); }
} }
Завдання 2. Реалізація взаємодії батьківської форми і дочірніх форм редагування даних.
Date: 2015-09-02; view: 299; Нарушение авторских прав |