я створення форми діалогу, необхідно додати для неї клас в проект. Для цього необхідно клацнути правою кнопкою миші по формі і в контекстному меню вибрати «Add Class». У виведеному на екран вікні вказати ім'я створюваного класу «CSetting» в полі «Class name». В якості базового класу, методи якого будуть успадковуватися, залишити запропонований за умовчанням CDialog. Клацнути «Finish». При додаванні подій для елементів форми, їх обрабочікі будуть поміщатися в певний для них клас Setting. Тобто, у щойно створений. Далі неообходімо вказати заголовний файл нового діалогу в cpp-файлі основного діалогу. Потім внести оголошення класу у вигляді запису «class CSetting» в заголовний файл класу CXMLConverterDlg. Для виклику вікна представленого на малюнку 4.11 при клацанні мишкою по кнопці в головному діалозі, необхідно внести в обробник відповідної події код поданий нижче. * PSitting=new CSitting (); gt; DoModal (); [] pSitting;
Для того, щоб зчитувати і зберігати значення вносяться до елемент «Edit Controll» необхідно додати змінну. Для цього в редакторі форм необхідно клацнути правою кнопкою миші по потрібному об'єкту, вибрати в меню «Add Variable». У вікні вказати категорію, ім'я та тип змінної. Можливо так само ввести мінімальне і максимальне її значення. Приклад представлений на малюнку 4.12.
Малюнок 4.12
У результаті виконання робіт описаних в поточній чолі, був розроблений користувальницький інтерфейс додатка XMLConverter.
4.1.2 Розробка функцій реалізують алгоритм перетворення вихідного XML в новий XML
Під час виконання справжньою кваліфікаційної роботи був розроблений алгоритм перетворення xml-документа в проміжний xml-документ. При його розгляді приймемо до уваги, що всі розрахунки кількості додаються рядків ведуться з урахуванням заданих величин відступів зверху і знизу для розділів в специфікації. Відступи представлені у вигляді порожніх рядків. Введемо в алгоритм лічильник загальної кількості рядків i. Він потрібен для контролю позиції поточного елемента, а також, щоб обчислити кількість порожніх рядків, які потрібно додати кінець xml-документа. Перед запуском алгоритму i дорівнює 0. Під елементами будемо розуміти, теги lt; line/ gt; і lt; section/ gt ;. Перетворення розглядається на рівні цих об'єктів. Розглядаючи їх, будемо мати на увазі, що вони несуть з собою дані, збережені в атрибутах. Кожен з цих елементів ( lt; line/ gt; і lt; section/ gt;) утворює рядок таблиці специфікації. Тобто, говорячи про рядку pdf-документа, будемо мати на увазі, що це lt; line/ gt; або lt; section/ gt; xml-документа і навпаки.
Алгоритм складається з наступних кроків.
1 етап. Збільшуємо лічильник на одиницю. Розглядаємо i-й рядок xml-документа. Якщо це lt; section/ gt ;, переходимо до етапу 2. Інакше переходь до етапу 5.
2 етап. Перевіряємо, чи не потрапить розділ на другий рядок сторінки специфікації, при додаванні порожніх рядків (по одній, починаючи з нуля) зверху, в межах заданого відступу. Якщо так, вносимо необхідне число порожніх елементів lt; line/ gt; і збільшуємо лічильник на кількість доданих рядків. Переходимо до етапу 7. Інакше, збільшуємо лічильник на величину заданого відступу. Переходимо до етапу 3.
етап. Перевіряємо, чи не виходить розрив між розділом і першою не порожній рядком, після нього, у вигляді перенесення останньої на інший аркуш специфікації, при додаванні порожніх рядків (по одній, починаючи з нуля) знизу, в межах заданого відступу. Якщо так, додаємо перед lt; section/ gt; необхідне число lt; line/ gt ;, зрушуючи, таким чином, розділ на другий рядок наступного листа. Збільшуємо лічильник на число доданих рядків. Переходимо до етапу 7. В іншому випадку переходимо до етапу 4.
етап. Перевіряємо, чи не потрапить розділ на перший рядок сторінки специфікації. Якщо так, додаємо перед lt; section/ gt; один порожній lt; line/ gt; і збільшуємо лічильник на одиницю. Переходимо до етапу 7.
етап. Перевіряємо, чи не потрапить lt; line/ gt; на останній рядок сторінки специфікації. Якщо так, додаємо перед ним дві порожні рядки і збільшуємо лічильник на два. ісло додавання рядків, у вигляді перенесення останньої люсмие в атрибутах. Переходимо до наступного етапу.
етап. Перевіряємо, чи не потрапить lt; line/ gt; на перший рядок сторінки специфікації. Якщо так, додаємо перед ним один порожній lt; line/ gt; і збільшуємо лічильник на одиницю. Переходимо до етапу 8.
етап. Збільшуємо лічильник на величину заданого відступу знизу розділу. Переходимо до наступного етапу. ісло додавання рядків, у вигляді перенесення останньої люсмие в атрибутах.
етап. Перевіряємо, як...