Как написать редактор форм?

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

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

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

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


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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
664
2

Ответы 2

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

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

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

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

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

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

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

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

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

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

Другие вопросы по теме