2008-11-26 3 views
0

Я пытаюсь написать редактор макета печати в VB6 или VB.Net, и я ищу некоторые справочные статьи, которые помогут мне начать.Как написать редактор формы?

Идея состоит в том, что редактор будет использоваться для определения «областей» печати для расчётов счетов-фактур или заявлений, позволяя пользователю нарисовать поле для адреса клиента, номера счета-фактуры, строк, итогов и т. Д. Затем программа будет изображать как перевести размеры и позиции различных ящиков в места печати для хранения в файле определения макета, который позднее используется системой учетных записей для печати различных отчетов. Обратите внимание, что по разным причинам (главным образом, что система учетных записей не является Windows) размещение текста в Word или аналогичных продуктах и ​​их печать документа не является вариантом. Конечно, я могу редактировать файл макета документа вручную, но он не очень удобен для пользователя.

Как вы можете себе представить, поиск «редактора форм», «редактора макетов» и т. П. Приносит много сотен нерелевантных результатов. Удручающая вещь в том, что я видел очень актуальную статью, но потерял закладку.

Я надеюсь, что у кого-то есть указатели.


Спасибо, это звучит сложнее, чем я себе представлял. I действительно Я хотел бы найти оригинальную статью, которую я потерял, так как было довольно ясно, как это сделать в vb.net.

Поскольку это макет для печатной формы, я считаю, что это очень сложно сглаживает сложность - мне действительно нужно хранить размер и положение каждой области печати, а также информацию о шрифтах, выравнивании и цвете, а также, возможно, filename для графического изображения, если требуется логотип. Формат файла определения макета полностью находится под моим контролем.

ответ

1

Прежде всего, вы должны хорошо знать язык/API, который вы используете, и на самом деле вы должны указать, используете ли вы Windows.Forms, WPF, GTK # и т. Д. Убедитесь, что вы очень хорошо на этом.

Затем вы должны придумать формат для редактора форм для хранения форм. Обычно редакторы форм используют XML. Если вы также хотите следовать этой тенденции, вы должны изучить хороший XML API для VB.

Наконец, тщательно планировать свои шаги:

  1. Вы хотите использовать пользовательские элементы управления текстового поля вашего API, или вы хотите, чтобы сделать их вручную (если это так, то вам нужно узнать API-интерфейс чертежа)?
  2. Убедитесь, что вы хорошо знаете формат файла определения макета.

Теперь пришло время начать доказательство концепции: создать простой редактор, который может загружать/сохранять формы и добавлять к ним кнопки. Вероятно, это будет самый сложный шаг. Возможно, вам придется иметь дело с событиями и несколькими другими вещами, но в конце концов это сработает (если нет, то вы можете попросить снова). Наконец, просто добавьте необходимые функции, такие как вывод файла определения макета, новые элементы управления, управление перемещением/изменением размера и т. Д.

Если вам нужно что-нибудь еще (включая более конкретные инструкции), просто спросите.

0

Я помню, как я разработал именно этот вид редактора формы печати в vb6, около 10 лет назад iirc.не уверен, что я все еще могу найти источники печально: действительно, я нашел этот вопрос, потому что мне нужно написать еще один, и я надеялся найти какой-то код, чтобы начать, а не делать это с нуля еще раз. все равно, как я сделал реализовать это, более или менее, было так:

  • один пользовательский элемент управления для фона страницы, показывая легкую сетку и реагировать на события мышей (например, показать меню на праве нажмите);
  • Каждое поле было настраиваемым без окон, отображающим также световую сетку, по одной ячейке для каждой (фиксированной ширины) символа. он также реагировал на события мыши, чтобы его можно было перемещать и изменять; когда я говорю без окон, я имею в виду «не имея hwnd», своего рода оптимизацию, которая позволяла размещать множество контрольных экземпляров, не беспокоясь о влиянии на ресурсы; если вы собираетесь использовать .net, вам все равно, но если вы используете vb6, это имеет значение;
  • одна сетка свойств, такая как одна из vb6, показывающая свойства выбранного поля. в моем случае я мог бы установить стиль текста (сжатый, расширенный, полужирный) и выражение, используемое во время выполнения, для извлечения значения, которое будет напечатано;
  • Загрузка файла макета будет определять размер страницы и создавать элементы управления полем для каждого поля в файле;
  • Сохранение выписал свойства страницы (размер, имя и т. Д.), Затем перечислил коллекцию полей и выписал их свойства;
  • Я не использовал xml, потому что формат файла уже был исправлен, так как он использовался движком, который сделал фактическую печать; xml упростит мою жизнь, не нужно писать собственный синтаксический анализатор для формата файла данных.
  • Требование касалось только точечных матричных принтеров, но, к счастью, я не сокращал углов, и я мог легко адаптировать его, чтобы также обрабатывать более точное размещение и размеры полей. я имею в виду просто, я сопротивлялся искушению использовать координаты строк и столбцов и вместо этого использовал twips; он немного подумал о математике, но определенно не знал о ракетной науке.

В целом, это было не так уж сложно, и это получилось очень красиво, оно немного напоминало редактор форм «хрустальных отчетов».
Помню, что я потратил некоторое время, чтобы получить правильные сведения, например. привязка сетки при различной ширине символов, изменение размеров полей при изменении стилей текста, таких как сжатые или расширенные, без их перескакивания из-за ошибок округления, подобных вещей. не позволяйте этому пугать вас, имейте в виду, что вам не нужно заботиться обо всем с самого начала, просто будьте осторожны, чтобы не блокировать возможность сделать это позже.

В настоящее время я бы не советовал vb6 много, если только это не то, что вам известно лучше всего, и нужно создать файл .exe, не зависящий от того, что инфраструктура .net установлена ​​на целевых машинах.
Если вместо этого вы решите пойти с .net, я думаю, что было бы неплохо изучить wpf, если вы этого еще не знаете, это делает некоторые впечатляющие графики даже больше, чем windows.forms.