Сторінка 1 з 1

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

Додано: 01 серпня 2023, 13:35
jimS
при формуванні малюнка ділянки через DrawObject() программа центрує малюнок автоматично по <DM1.QbObject."XCenter" та <DM1.QbObject."YCenter". Це не завжди корректно. Частину малюнка не видно, якщо сама ділянка збоку.

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

Додано: 25 серпня 2023, 16:44
NickS
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: Звітні форми. Робота з малюнками в камеральних та карті

Додано: 28 серпня 2023, 09:54
jimS
де брать ці змінні WmfXCenter, WmfYCenter

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

Додано: 28 серпня 2023, 15:52
NickS
jimS писав:де брать ці змінні WmfXCenter, WmfYCenter

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

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

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

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

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

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