Звітні форми. Робота з малюнками в камеральних та карті

Геодезична інформаційна система 6 та Геодезична інформаційна система 6 Агро

Модератори: NickS, feNICKs

jimS
Повідомлень: 17
З нами з: 21 грудня 2021, 09:27

Звітні форми. Робота з малюнками в камеральних та карті

Повідомлення jimS » 01 серпня 2023, 13:35

при формуванні малюнка ділянки через DrawObject() программа центрує малюнок автоматично по <DM1.QbObject."XCenter" та <DM1.QbObject."YCenter". Це не завжди корректно. Частину малюнка не видно, якщо сама ділянка збоку.
Вкладення
Без имени-1.gif
треба так
Без имени-1.gif (9.82 Кіб) Переглянуто 20529 разів

Аватар користувача
NickS
Повідомлень: 1393
З нами з: 04 квітня 2008, 12:21

Re: Звітні форми. Робота з малюнками в камеральних та карті

Повідомлення NickS » 25 серпня 2023, 16:44

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.

jimS
Повідомлень: 17
З нами з: 21 грудня 2021, 09:27

Re: Звітні форми. Робота з малюнками в камеральних та карті

Повідомлення jimS » 28 серпня 2023, 09:54

де брать ці змінні WmfXCenter, WmfYCenter

Аватар користувача
NickS
Повідомлень: 1393
З нами з: 04 квітня 2008, 12:21

Re: Звітні форми. Робота з малюнками в камеральних та карті

Повідомлення NickS » 28 серпня 2023, 15:52

jimS писав:де брать ці змінні WmfXCenter, WmfYCenter

Вони автоматично формуються, коли ви запускаєте шаблон із камеральних функцій.
Звісно, ці змінні додали нещодавно. Треба оновитись на версію 6.2.3.1

jimS
Повідомлень: 17
З нами з: 21 грудня 2021, 09:27

Re: Звітні форми. Робота з малюнками в камеральних та карті

Повідомлення jimS » 29 серпня 2023, 09:39

дякую оновився на версію 6.2.3.1. все працює. Чи не розглядаете ви введення и програму ГІС редактора звітів на HTML та JS. Більше можливостей та функцій і мова програмування доволі поширена.

Аватар користувача
NickS
Повідомлень: 1393
З нами з: 04 квітня 2008, 12:21

Re: Звітні форми. Робота з малюнками в камеральних та карті

Повідомлення NickS » 29 серпня 2023, 18:12

jimS писав:Чи не розглядаете ви введення и програму ГІС редактора звітів на HTML та JS. Більше можливостей та функцій і мова програмування доволі поширена.

Що це за редактор звітів?