Читаем Программирование КПК и смартфонов на .NET Compact Framework полностью

Мы сделали еще один шаг вперед. Теперь наш маленький блокнот умеет работать с текстом. Но приложение нужно еще немного доработать. Например, пользователь может во время работы с блокнотом переключиться на другую программу и скопировать в буфер обмена картинку, а затем вернуться обратно к текстовому редактору. Конечно, картинку нельзя вставить в текстовое поле. Поэтому надо проверить тип содержимого в буфере обмена, и если там содержатся не текстовые данные, то нужно заблокировать пункт меню Вставить. Для этого можно использовать функцию IsClipboardFormatAvailable, а проверку данных в буфере обмена выполнять в событии Popup, как показано в листинге 7.34.

Листинг 7.34

[DllImport("Coredll.dll")]

private static extern bool IsClipboardFormatAvailable(uint uFormat);

// константа для буфера обмена

private const uint CF_UNICODETEXT = 13;

public static bool IsText() {

 try {

  return IsClipboardFormatAvailable(CF_UNICODETEXT);

 } catch (Exception ex) {

  MessageBox.Show("He могу понять, что содержится в буфере обмена!");

  return false;

 }

}

private void mnuEdit_Popup(object sender, EventArgs e) {

 if (IsText())

  mnuPaste.Enabled = true;

 else

  mnuPaste.Enabled = false;

}

Подобные изменения надо сделать и для пунктов меню. Если пользователь не выделил часть текста, то пункты Вырезать, Копировать и Удалить также должны быть заблокированы. Код, реализующий эту функциональность, приведен в листинге 7.35.

Листинг 7.35

//Если текст выделен

if (txtEditor.SelectionLength > 0) {

 mnuCut.Enabled = true;

 mnuCopy.Enabled = true;

 mnuDelete.Enabled = true;

} else {

 mnuCut.Enabled = false;

 mnuCopy.Enabled = false;

 mnuDelete.Enabled = false;

}

Следующим шагом в развитии программы будет добавление файловых операций. Работа с текстовым редактором предполагает не только правку текста, но и сохранение текста в файле, а также чтение данных из файла. Для этого в меню создаются соответствующие команды Создать, Открыть, Сохранить и Сохранить как. Код, связанный с этими командами, приведен в листинге 7.36.

Листинг 7.36

private void mnuOpen_Click(object sender, EventArgs e) {

 dlgOpenFile.Filter = "Текстовые документы (*.txt)|*.txt|Все файлы |*.*";

 dlgOpenFile.ShowDialog();

 if (File.Exists(dlgOpenFile.FileName)) {

  fname = dlgOpenFile.FileName;

  StreamReader sr =

   new StreamReader(fname, System.Text.Encoding.GetEncoding("Windows-1251"), false);

  txtEditor.Text = sr.ReadToEnd();

  flag = false;

  sr.Close();

 }

}

private void mnuSaveAs_Click(object sender, EventArgs e) {

 SaveFileDialog dlgSaveFile = new SaveFileDialog();

 dlgSaveFile.Filter = "Текстовые документы (*.txt)|*.txt|Все файлы |*.*";

 dlgSaveFile.ShowDialog(); fname = dlgSaveFile.FileName;

 savedata();

}

private void savedata() {

 if (fname == "") {

  SaveFileDialog dlgSaveFile = new SaveFileDialog();

  dlgSaveFile.Filter = "Текстовые документы (*.txt)|*.txt|Все файлы|*.*";

  DialogResult res = dlgSaveFile.ShowDialog();

  if (res == DialogResult.Cancel) {

   return;

  }

  fname = dlgSaveFile.FileName;

  MessageBox.Show(fname);

 }

 StreamWriter sw =

  new StreamWriter(fname, false, System.Text.Encoding.GetEncoding("Windows-1251"));

 sw.WriteLine(txtEditor.Text);

 sw.Flush();

 sw.Close();

 flag = false;

}

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных