Звітні форми. Робота з малюнками в камеральних та карті
Звітні форми. Робота з малюнками в камеральних та карті
при формуванні малюнка ділянки через DrawObject() программа центрує малюнок автоматично по <DM1.QbObject."XCenter" та <DM1.QbObject."YCenter". Це не завжди корректно. Частину малюнка не видно, якщо сама ділянка збоку.
- Вкладення
-
- треба так
- Без имени-1.gif (9.82 Кіб) Переглянуто 20533 разів
Re: Звітні форми. Робота з малюнками в камеральних та карті
jimS писав:при формуванні малюнка ділянки через DrawObject() программа центрує малюнок автоматично по <DM1.QbObject."XCenter" та <DM1.QbObject."YCenter". Це не завжди корректно. Частину малюнка не видно, якщо сама ділянка збоку.
Це так і потрібно, бо функція DrawObject() виконується тоді, коли потрібно відображати різні ділянки в одній звітній формі. В такому випадку для кожної ділянки потрібно перерахувати масштаб і відцентруватись у потрібне місце (центр ділянки). Якщо ж у вас вона використовується для однієї ділянки, то є два варіанта:
1. Прибрати функцію DrawObject(). Для однієї ділянки вона не потрібна, адже в камеральних і так буде сформований малюнок.
2. Використати змінні центра екрана (WmfXCenter, WmfYCenter) та функцію зміщення GisShift().
Більш детальніше розглянемо як реалізувати другий варіант:
1. Спершу описуємо нові змінні для центру екрана, куди ми помістили нашу ділянку:
Код: Виділити все
CenterX, CenterY : extended;
2. В блоці ініціалізації (в самому кінці, де begin ... end.) після "begin" запам'ятовуємо положення екрану яке ми виставили перед запуском шаблону:
Код: Виділити все
// Запам'ятовуємо координати центра екрану до запуску шаблона
CenterX := StrToFloat(WmfXCenter);
CenterY := StrToFloat(WmfYCenter);
Цей код має виконуватись самим першим, до виконання функції DrawObject()! В ньому ми використовуємо змінні WmfXCenter, WmfYCenter.
3. Відразу після використання функції DrawObject() але до функції формування малюнка (DrawWmf()) змістимо положення екрану зі стандартного на те, яке нам потрібно:
Код: Виділити все
// Повертаємо правильні координати центра екрана
GisShift(CenterX, CenterY);
Загальний приклад виглядає так:
Код: Виділити все
var
CenterX, CenterY : extended;
procedure Picture1OnBeforePrint(Sender: TfrxComponent);
begin
With Picture1, Engine do
begin
DrawObject();
// Повертаємо правильні координати центра екрана
GisShift(CenterX, CenterY);
DrawWmf(Width * 100 /3.77953, Height * 100 /3.77953, 0);
Loadfromfile(StartPath +'\gis.wmf');
end;
end;
begin
// Запам'ятовуємо координати центра екрану до запуску шаблона
CenterX := StrToFloat(WmfXCenter);
CenterY := StrToFloat(WmfYCenter);
end.
Re: Звітні форми. Робота з малюнками в камеральних та карті
де брать ці змінні WmfXCenter, WmfYCenter
Re: Звітні форми. Робота з малюнками в камеральних та карті
jimS писав:де брать ці змінні WmfXCenter, WmfYCenter
Вони автоматично формуються, коли ви запускаєте шаблон із камеральних функцій.
Звісно, ці змінні додали нещодавно. Треба оновитись на версію 6.2.3.1
Re: Звітні форми. Робота з малюнками в камеральних та карті
дякую оновився на версію 6.2.3.1. все працює. Чи не розглядаете ви введення и програму ГІС редактора звітів на HTML та JS. Більше можливостей та функцій і мова програмування доволі поширена.
Re: Звітні форми. Робота з малюнками в камеральних та карті
jimS писав:Чи не розглядаете ви введення и програму ГІС редактора звітів на HTML та JS. Більше можливостей та функцій і мова програмування доволі поширена.
Що це за редактор звітів?