Приклади робочих скриптів у звітових формах
Re: Примеры рабочих скриптов в отчётных формах
Здравствуйте! А что нужно в коде прописать чтобы автоматически отключался показ стрелок и обозначений смежеств (по аналогии с слоями) ?
Re: Примеры рабочих скриптов в отчётных формах
NoViChoK писав:Здравствуйте! А что нужно в коде прописать чтобы автоматически отключался показ стрелок и обозначений смежеств (по аналогии с слоями) ?
Если Вы умете пользоваться включением/отключением слоёв, то и для меню "Отображение" проблем не должно возникнуть.
Для этого надо использовать функцию VisibleGisMenu(<Название>,<Отображение>), где
<Отображение> - true - включено, false - отключено
<Название> - название пункта меню.
Для смежеств:
ShowOMLine - Стрелок смежества
ShowOMLitera - Обозначений смежества
ShowOMColor - Смежества цветом
ShowOMCad - Кадастровых номеров
ShowOMMej - Описаний смежества
ShowOMName - Наименований смежества
Более детальный список названий есть в файле "_Описание переменных.txt" (в папке с программой)
Например, чтобы отключить показ стрелок смежеств, надо выполнить такую команду:
Код: Виділити все
VisibleGisMenu('ShowOMLine', false);
Re: Примеры рабочих скриптов в отчётных формах
Що потрібно змінити чи додати в коді:
щоб масштабувати картинку ? Не обов'язково на якесь точне значення масштабу (хоча якщо можливо, то не завадить), потрібно мати можливість зменшити/збільшити (не розміри, а масштаб) напрклад в 2 чи 3 рази.
P.S. Виставити масштаб у вікні "камеральні функції" не пропонувати. Потрібно саме в коді.
Код: Виділити все
procedure Picture1OnBeforePrint(Sender: TfrxComponent);
begin
with Picture1, Engine do
begin
VisibleGisLayer(0, true); // участок
VisibleGisLayer(1, true); // план
VisibleGisLayer(2, false); // агрогруппы
VisibleGisLayer(3, false); // таблица расчётов
VisibleGisLayer(4, true); // обозначения
VisibleGisLayer(5, false); // ситуация
VisibleGisLayer(6, true); // чертёж
VisibleGisLayer(7, false); // каталог координат
VisibleGisLayer(8, true); // горизонтали
VisibleGisLayer(9, true); // оформление
VisibleGisLayer(10, false); // общий
VisibleGisLayer(11, true); // сервитуты
VisibleGisLayer(12, true); // ограничения
VisibleGisLayer(13, true); // аренда
VisibleGisLayer(14, false); // теодолитный ход
VisibleGisLayer(15, true); // карта
VisibleGisLayer(16, false); // проектные дороги
VisibleGisLayer(17, false); // сторонние земли
VisibleGisLayer(18, false); // секущая линия
DrawWmf(Width * 100 /3.77953, Height * 100 /3.77953, 0);
Loadfromfile( StartPath +'\gis.wmf');
end;
end;
щоб масштабувати картинку ? Не обов'язково на якесь точне значення масштабу (хоча якщо можливо, то не завадить), потрібно мати можливість зменшити/збільшити (не розміри, а масштаб) напрклад в 2 чи 3 рази.
P.S. Виставити масштаб у вікні "камеральні функції" не пропонувати. Потрібно саме в коді.
Re: Примеры рабочих скриптов в отчётных формах
DRAWWMF(<Длинна>,<Высота>,<Масштаб>) - Выполняет формирование рисунка для активного земельного участка
Если <Масштаб> = 0, берется масштаб с Камералки.
есть переменная Scale() - она возвращает масштаб с камералки. Умножаете эту переменную на нужное число чтоб уменьшить картинку (увеличить масштаб).
Само число можно вводить например с диалог.окна:
Если <Масштаб> = 0, берется масштаб с Камералки.
есть переменная Scale() - она возвращает масштаб с камералки. Умножаете эту переменную на нужное число чтоб уменьшить картинку (увеличить масштаб).
Код: Виділити все
DrawWmf(Width * 100 /3.77953, Height * 100 /3.77953, Scale()*2);
Само число можно вводить например с диалог.окна:
Код: Виділити все
DrawWmf(Width * 100 /3.77953, Height * 100 /3.77953, Scale()*IntToStr( Edit1.Text));
Re: Примеры рабочих скриптов в отчётных формах
Использую этот код:
Пишет: "несумісні типи"
Код: Виділити все
DrawWmf(Width * 100 /3.77953, Height * 100 /3.77953, Scale()*2);
Пишет: "несумісні типи"
Re: Примеры рабочих скриптов в отчётных формах
Я пропустил один параметр, исправьте на StrToInt(Scale())*2
Re: Примеры рабочих скриптов в отчётных формах
Здравствуйте!
Помогите пожалуйста! Очень надо!
За сегодня добился от FastReport в GIS 6 примерно такого результата:
- <u>типу 01.05</u> - охоронна зона навколо (вздовж) об'єкта енергетичної системи на площі <b>0.0618 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 04.03.97 № 209 "Про затвердження Правил охорони електричних мереж") - кабельна мережа;
- <u>типу 01.05</u> - охоронна зона навколо (вздовж) об'єкта енергетичної системи на площі <b>0.0146 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 04.03.97 № 209 "Про затвердження Правил охорони електричних мереж") - кабельна мережа;
- <u>типу 01.05</u> - охоронна зона навколо (вздовж) об'єкта енергетичної системи на площі <b>0.0217 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 04.03.97 № 209 "Про затвердження Правил охорони електричних мереж") кабельна мережа;
- <u>типу 01.05</u> - охоронна зона навколо (вздовж) об'єкта енергетичної системи на площі <b>0.0217 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 04.03.97 № 209 "Про затвердження Правил охорони електричних мереж") кабельна мережа;
- <u>типу 01.08</u> - охоронна зона навколо інженерних комунікацій на площі <b>2.7392 га</b> (підставою для проектування обмеження є Постанова 355 від 02.10.1986, Рада міністрів Української РСР) - каналізація;
- <u>типу 01.08</u> - охоронна зона навколо інженерних комунікацій на площі <b>0.0023 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 30.03.94 № 198 "Про затвердження Єдиних правил ремонту і утримання автомобільних доріг, вулиць, залізничних переїздів, правил користування ними та охорони") - тепломережа;
- <u>типу 01.08</u> - охоронна зона навколо інженерних комунікацій на площі <b>0.0023 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 30.03.94 № 198 "Про затвердження Єдиних правил ремонту і утримання автомобільних доріг, вулиць, залізничних переїздів, правил користування ними та охорони") - тепломережа;
необходимо сделать так, чтобы типы ограничений не повторялись, а площади складывались. Чтобы вследствии вышло
- <u>типу 01.05</u> - охоронна зона навколо (вздовж) об'єкта енергетичної системи загальною площею <b>0.1198 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 04.03.97 № 209 "Про затвердження Правил охорони електричних мереж") кабельна мережа;
- <u>типу 01.08</u> - охоронна зона навколо інженерних комунікацій на площі <b>2.7392 га</b> (підставою для проектування обмеження є Постанова 355 від 02.10.1986, Рада міністрів Української РСР) - каналізація;
- <u>типу 01.08</u> - охоронна зона навколо інженерних комунікацій на площі <b>0.0046 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 30.03.94 № 198 "Про затвердження Єдиних правил ремонту і утримання автомобільних доріг, вулиць, залізничних переїздів, правил користування ними та охорони") - тепломережа;
Подскажите КАК это сделать??
Применял вот этот код:
Помогите пожалуйста! Очень надо!
За сегодня добился от FastReport в GIS 6 примерно такого результата:
- <u>типу 01.05</u> - охоронна зона навколо (вздовж) об'єкта енергетичної системи на площі <b>0.0618 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 04.03.97 № 209 "Про затвердження Правил охорони електричних мереж") - кабельна мережа;
- <u>типу 01.05</u> - охоронна зона навколо (вздовж) об'єкта енергетичної системи на площі <b>0.0146 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 04.03.97 № 209 "Про затвердження Правил охорони електричних мереж") - кабельна мережа;
- <u>типу 01.05</u> - охоронна зона навколо (вздовж) об'єкта енергетичної системи на площі <b>0.0217 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 04.03.97 № 209 "Про затвердження Правил охорони електричних мереж") кабельна мережа;
- <u>типу 01.05</u> - охоронна зона навколо (вздовж) об'єкта енергетичної системи на площі <b>0.0217 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 04.03.97 № 209 "Про затвердження Правил охорони електричних мереж") кабельна мережа;
- <u>типу 01.08</u> - охоронна зона навколо інженерних комунікацій на площі <b>2.7392 га</b> (підставою для проектування обмеження є Постанова 355 від 02.10.1986, Рада міністрів Української РСР) - каналізація;
- <u>типу 01.08</u> - охоронна зона навколо інженерних комунікацій на площі <b>0.0023 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 30.03.94 № 198 "Про затвердження Єдиних правил ремонту і утримання автомобільних доріг, вулиць, залізничних переїздів, правил користування ними та охорони") - тепломережа;
- <u>типу 01.08</u> - охоронна зона навколо інженерних комунікацій на площі <b>0.0023 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 30.03.94 № 198 "Про затвердження Єдиних правил ремонту і утримання автомобільних доріг, вулиць, залізничних переїздів, правил користування ними та охорони") - тепломережа;
необходимо сделать так, чтобы типы ограничений не повторялись, а площади складывались. Чтобы вследствии вышло
- <u>типу 01.05</u> - охоронна зона навколо (вздовж) об'єкта енергетичної системи загальною площею <b>0.1198 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 04.03.97 № 209 "Про затвердження Правил охорони електричних мереж") кабельна мережа;
- <u>типу 01.08</u> - охоронна зона навколо інженерних комунікацій на площі <b>2.7392 га</b> (підставою для проектування обмеження є Постанова 355 від 02.10.1986, Рада міністрів Української РСР) - каналізація;
- <u>типу 01.08</u> - охоронна зона навколо інженерних комунікацій на площі <b>0.0046 га</b> (підставою для проектування обмеження є Постанова Кабінету Міністрів України від 30.03.94 № 198 "Про затвердження Єдиних правил ремонту і утримання автомобільних доріг, вулиць, залізничних переїздів, правил користування ними та охорони") - тепломережа;
Подскажите КАК это сделать??
Применял вот этот код:
Код: Виділити все
Var NumberOfLim, NameOfLim, DecisionName, AreaOFLim,
Summa, Summa1, Summa2, Summa3, Summa4, Obmejennya, sStr :string;
iObmej :integer;
begin
//=================================================================================================
// ќ√–јЌ»„≈Ќ»я
//-----------------------------------------------------------------------------------------------
// Описание ограничений
Lim.SQL.Text := 'Select TR.*,D.Name DName,L.Area LArea From Limination L, Decision D, TypeRestrict TR Where L.ID_Object = ' +
IntToStr(<DM1.QbObject."ID_Object">) + ' and L.ID_Decision = D.ID_Decision and ' +
'L.ID_TypeRestrict = TR.ID_TypeRestrict order by TR.Number asc';
Lim.Open;
//---------------------------------------------------------------------------------------------------
// String + мемо ограничений
begin
Lim.First;
While Lim.EOF = false do
begin
NumberOfLim := <Lim."Number">;
NameOfLim := LowerFirst(<Lim."Name">);
DecisionName := <Lim."DName">;
AreaOFLim := (FormatFloat( fdLandAreaG, <Lim."LArea"> /10000)) + ' га';
Summa1 := ' - <u>типу ' + NumberOfLim;
Summa2 := Summa1 + '</u> - ' + NameOfLim;
Summa3 := Summa2 + ' на площі <b>' + AreaOfLim;
Summa4 := Summa3 + '</b> (підставою для проектуванн¤ обмеження є ' + DecisionName + ');';
Summa := Summa + Summa4;
Lim.Next;
end;
Obmejennya := Summa;
MemoObmej.Lines.Clear;
While Length( Summa) > 0 Do
Begin
If Pos( ';', Summa) > 0 Then
Begin
sStr := Trim( Copy( Summa, 1, Pos( ';', Summa)));
Summa := Trim( Copy( Summa, Pos( ';', Summa) +1, Length( Summa) -Pos( ';', Summa)));
End
Else
Begin
sStr := Trim( Summa);
Summa := '';
End;
iObmej := iObmej +1;
MemoObmej.Lines.Add( sStr);
End;
end;
//==================================================================================================
end.
Re: Примеры рабочих скриптов в отчётных формах
Я бы сделал SQL-запрос для выборки минимального набора данных: общая площадь, код типа ограничений и решения, а потом в цикле или в бендэ выполнил перебор объекта Lim (привязав к бенду и закинув код в обработчик событий OnBeforePrint).
На примере.
А в бендэ добавляете текстовое поле и в нем выводите Ваши переменные Decision LName.
На примере.
Код: Виділити все
Var
Decision, LName: String;
// перебор в бендэ
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
Decision := '';
LName := '';
If LocateData( 'DM1.QbDecision', 'ID_Decision', <Lim."ID_Decision">) Then
Decision := <DM1.QbDecision."Name"> + DateWriteFull( <DM1.QbDecision."Dec_Date">, True, False, True) + ' № ' + <DM1.QbDecision."Dec_Num">;
If LocateData( 'DM2.TbTypeRestrict', 'ID_TypeRestrict', <Lim."ID_TypeRestrict">) Then
LName := '- <u>типу'+ <DM2.TbTypeRestrict."Number"> +'</u> - '+<DM2.TbTypeRestrict."Name"> +' на площі <b>' +FormatFloat( '0.0000', <Lim."LArea">/10000)+' га</b>';
end;
// основное тело формы
begin
//-----------------------------------------------------------------------------------------------
// Описание ограничений
Lim.SQL.Text := 'Select Sum( L.Area) LArea, TR.ID_TypeRestrict, L.ID_Decision '+
'From Limination L, TypeRestrict TR ' +
'Where L.ID_Object = '+ IntToStr(<DM1.QbObject."ID_Object">)+' and '+
'L.ID_TypeRestrict = TR.ID_TypeRestrict '+
'Group By TR.ID_TypeRestrict, L.ID_Decision ' +
'Order by TR.ID_TypeRestrict ASC';
Lim.Open;
//---------------------------------------------------------------------------------------------------
end.
А в бендэ добавляете текстовое поле и в нем выводите Ваши переменные Decision LName.
Re: Примеры рабочих скриптов в отчётных формах
Спасибо за ответ, но у меня отчет не работает. SQL, понятно, выполняет запрос, а вот Decision и LName не выводит абсолютно ничего. Проверил у себя в базе данных, поле Lim."ID_Decision" и DM1.QbDecision."ID_Decision" совпадают, совпадают так же поля Lim."ID_TypeRestrict" и DM2.TbTypeRestrict."ID_TypeRestrict". То есть условия "Если" выполняются по идее.
Подскажите в чем может быть проблема, пожалуйста.
Подскажите в чем может быть проблема, пожалуйста.
Re: Примеры рабочих скриптов в отчётных формах
Скрипт рабочий, проверял у себя на примере - все выводит...
В текстовых полях вставили переменные? а к бэнду подключили источник данных Lim? Или у Вас бэнд не перебирается или что-то очищает текстовые поля или переменные (пройдитесь по всему коду).
Можете просто создать чистый (новый) отчет и проверьте этот скрипт. Если что - выполните отладку - заходите в закладку код и нажимаете отладка и двигайтесь к Вашей части кода, чтоб увидеть, происходит там присвоение значений или нет.
В текстовых полях вставили переменные? а к бэнду подключили источник данных Lim? Или у Вас бэнд не перебирается или что-то очищает текстовые поля или переменные (пройдитесь по всему коду).
Можете просто создать чистый (новый) отчет и проверьте этот скрипт. Если что - выполните отладку - заходите в закладку код и нажимаете отладка и двигайтесь к Вашей части кода, чтоб увидеть, происходит там присвоение значений или нет.