/// <summary> /// Unmarshals and deallocates an OPCHDA_ANNOTATION structure. /// </summary> internal static TsCHdaAnnotationValueCollection GetAnnotationValueCollection(OpcRcw.Hda.OPCHDA_ANNOTATION input, bool deallocate) { TsCHdaAnnotationValueCollection output = new TsCHdaAnnotationValueCollection(); output.ClientHandle = input.hClient; DateTime[] timestamps = Utilities.Interop.GetDateTimes(ref input.ftTimeStamps, input.dwNumValues, deallocate); string[] annotations = Utilities.Interop.GetUnicodeStrings(ref input.szAnnotation, input.dwNumValues, deallocate); DateTime[] creationTimes = Utilities.Interop.GetDateTimes(ref input.ftAnnotationTime, input.dwNumValues, deallocate); string[] users = Utilities.Interop.GetUnicodeStrings(ref input.szUser, input.dwNumValues, deallocate); for (int ii = 0; ii < input.dwNumValues; ii++) { TsCHdaAnnotationValue value = new TsCHdaAnnotationValue(); value.Timestamp = timestamps[ii]; value.Annotation = annotations[ii]; value.CreationTime = creationTimes[ii]; value.User = users[ii]; output.Add(value); } return(output); }
/// <summary> /// Adds a new item value by copying an existing one. /// </summary> private void CopyMI_Click(object sender, System.EventArgs e) { try { // check for valid selection. if (ReadOnly || ValuesLV.SelectedItems.Count != 1) { return; } TsCHdaAnnotationValue value = (TsCHdaAnnotationValue)ValuesLV.SelectedItems[0].Tag; // create new item value. TsCHdaAnnotationValue copy = new AnnotationValueEditDlg().ShowDialog((TsCHdaAnnotationValue)value.Clone()); // prompt user to edit item value. if (copy == null) { return; } // update display. AddListItem(copy, ValuesLV.SelectedIndices[0]); // adjust columns AdjustColumns(); } catch (Exception exception) { MessageBox.Show(exception.Message); } }
/// <summary> /// Updates an item in the list view. /// </summary> private void UpdateListItem(ListViewItem listItem, TsCHdaAnnotationValue value) { // set column values. for (int ii = 0; ii < listItem.SubItems.Count; ii++) { listItem.SubItems[ii].Text = OpcClientSdk.OpcConvert.ToString(GetFieldValue(value, ii)); } // save object as list view item tag. listItem.Tag = value; }
/// <summary> /// Adds a new item value. /// </summary> private void AddMI_Click(object sender, System.EventArgs e) { try { // check control state. if (ReadOnly) { return; } // create new item value. TsCHdaAnnotationValue value = new TsCHdaAnnotationValue(); value.Annotation = null; value.Timestamp = RunTestDlg.BASETIME; value.CreationTime = DateTime.MinValue; value.User = null; // prompt user to edit item value. value = new AnnotationValueEditDlg().ShowDialog(value); if (value == null) { return; } // get the current selection. int index = -1; if (ValuesLV.SelectedIndices.Count > 0) { index = ValuesLV.SelectedIndices[ValuesLV.SelectedIndices.Count - 1]; } // update display. AddListItem(value, index); // adjust columns AdjustColumns(); } catch (Exception exception) { MessageBox.Show(exception.Message); } }
/// <summary> /// Returns the value of the specified field. /// </summary> private object GetFieldValue(TsCHdaAnnotationValue value, int fieldID) { if (value != null) { switch (fieldID) { case TIMESTAMP: { return(value.Timestamp); } case VALUE: { return(value.Annotation); } case CREATION_TIME: { return(value.CreationTime); } case USER: { return(value.User); } } } return(null); }
/// <summary> /// Returns the value of the specified field. /// </summary> private object GetFieldValue(TsCHdaAnnotationValue value, int fieldId) { if (value != null) { switch (fieldId) { case Timestamp: { return(value.Timestamp); } case Value: { return(value.Annotation); } case CreationTime: { return(value.CreationTime); } case User: { return(value.User); } } } return(null); }
/// <summary> /// Prompts the user to edit an item value. /// </summary> public TsCHdaAnnotationValue ShowDialog(TsCHdaAnnotationValue item) { // create a new item if none provided. if (item == null) { item = new TsCHdaAnnotationValue(); } // initialize controls. annotationTb_.Text = item.Annotation; timestampCtrl_.Value = DateTime.Now; creationTimeCtrl_.Value = DateTime.Now; userTb_.Text = item.User; if (timestampCtrl_.MinDate < item.Timestamp) { timestampCtrl_.Value = item.Timestamp; } if (creationTimeCtrl_.MinDate < item.CreationTime) { creationTimeCtrl_.Value = item.CreationTime; } // display dialog. if (ShowDialog() != DialogResult.OK) { return(null); } // update object. item.Annotation = annotationTb_.Text; item.Timestamp = timestampCtrl_.Value; item.CreationTime = creationTimeCtrl_.Value; item.User = userTb_.Text; // return new value. return(item); }
/// <summary> /// Prompts the user to edit an item value. /// </summary> public TsCHdaAnnotationValue ShowDialog(TsCHdaAnnotationValue item) { // create a new item if none provided. if (item == null) { item = new TsCHdaAnnotationValue(); } // initialize controls. AnnotationTB.Text = item.Annotation; TimestampCTRL.Value = DateTime.Now; CreationTimeCTRL.Value = DateTime.Now; UserTB.Text = item.User; if (TimestampCTRL.MinDate < item.Timestamp) { TimestampCTRL.Value = item.Timestamp; } if (CreationTimeCTRL.MinDate < item.CreationTime) { CreationTimeCTRL.Value = item.CreationTime; } // display dialog. if (ShowDialog() != DialogResult.OK) { return(null); } // update object. item.Annotation = AnnotationTB.Text; item.Timestamp = TimestampCTRL.Value; item.CreationTime = CreationTimeCTRL.Value; item.User = UserTB.Text; // return new value. return(item); }
/// <summary> /// Adds an item to the list view. /// </summary> private void AddListItem(TsCHdaAnnotationValue value, int index) { // create list view item. ListViewItem listItem = new ListViewItem("", Resources.IMAGE_YELLOW_SCROLL); // add empty columns. while (listItem.SubItems.Count < ColumnNames.Length) { listItem.SubItems.Add(""); } // update columns. UpdateListItem(listItem, value); // add to list view. if (index < 0) { ValuesLV.Items.Add(listItem); } else { ValuesLV.Items.Insert(index, listItem); } }