// получаем строку 01.01.2013,13, троеточие заменить на полный путь к тегу
Dogovir := XPath('.../MyParamets/Dogovir');
// получаем отдельно дату и номер договора
Date := Trim(GetV(1, Dogovir));
Number := Trim(GetV(2, Dogovir));
// результирующая строка
Dogovir := 'від ' + Date + ' року за №' + Number;
Уважаемые разработчики подкиньте простой пример использования элемента управления ComboBox, типа: текст 1, текст 2 …
С Edit как-бы разобрался, дальше…
Можно и другие примеры. Спасибо.
Пример работы с ComboBox есть в шаблоне госакта для XML-файлов (Сервис-Документы-<XMLГосакт>)
В этом шаблоне при наличие двух и более совладельцев при генерировании документа появляется диалоговое окно с ComboBox, в котором перечислены ФИО всех совладельцев.
…
//NMList - список совладельцев
//CoopCount либо NMList.Count - кол-во совладельцев
…
// заполнение комбобокса значениями из полученного ранее списка совладельцев
for i:=0 to NMList.Count-1 do
cmbProprietors.Items.Add(NMList[i]);
…
//проверка количества совладельцев
if CoopCount>1
then begin
// вначале DialogPage1.Visible был установлен в false, чтоб диалог не появлялся без надобности
// показ диалога
DialogPage1.ShowModal;
// если нажата кнопка ОК (у кнопки ОК свойство ModalResult установлено в mrOk)
if DialogPage1.ModalResult=mrOk
// ActualCoop - номер выбранного совладельца
then ActualCoop:=cmbProprietors.ItemIndex;
end
// если диалог закрыт “крестиком”, а не кнопкой ОК, то выбираем первого совладельца
else ActualCoop:=0;
…
Создал свой шаблон в репортс для составления технической документации. Проблема возникла с кадастровым планом. Подскажите как можно сделать так, чтобы сам кадастровый план подгружался. Пока нашёл выход - Экспорт чертежа в БМП и загрузку его на кадастровый план. Пробовал через Сервис-Документы-CadPlanA4, но там сбиваются параметры. Чертеж выглядит так
Я приложу свой шаблон с кад.планом, может подскажете его отредактировать, чтобы в него экспортировался чертеж без изменений условных обозначений ПЛАН.rar (87.2 KB)
Добавил в шаблон Image3 размером 180мм х 130мм c обработчиком события OnBeforePrint, который загружает “картинку” из файла Digitals/Pictures/cadplan.bmp:
procedure Picture3OnBeforePrint(Sender: TfrxComponent);
begin
Picture3.LoadFromFile(GetProgramDir+‘/Pictures/cadplan.bmp’);
end;
Картинку можно вручную сохранять перед запуском генератора отчетов, а можно и скриптом вроде этого:
;Проверяем кол-во помеченных объектов, прерываем выполнение, если помечено больше или меньше 1-го объекта
$SC=@Map.SelCount @if $SC<>1 then @Break Пометьте 1 участок
;Проверяем слой помеченного объекта, если не XML: Земельна ділянка (ID70005), то прерываем выполнение скрипта
$SO=@Map.SelectedObject
$LID=@Map.Object[$SO].LayerID @if $LID<>70005 then @Break Пометьте участок
;Устанавливаем рамку карты заданного размера вокруг помеченного объекта, размер рамки должен
;совпадать (180x130) с размером Image3 в шаблоне fr3-отчета для соблюдения масштаба @Map.FrameSelected 180 130 500
;Сохраняем картинку в файл
$PP=@ProgramPath @Map.SaveToTIF 300 24 $PP/Pictures/cadplan.bmp
;запускаем генератор отчетов @ReportGenerator 1 ПЛАН.zip (87.7 KB)
Доброго ранку! допоможіть будь ласка у мене така проблема відредагував шаблон технічної документації яка була виложена в дистрибутиві і вибиває помилку (0,4200 is not a valid floating point value)?! в настройках системи роздільника числа “,” поміняв на “.” всерівно вибиває помилку тільки навпаки (0.4200 is not a valid floating point value) Я замітившо помилку вибиває коли міняю в коді для експлікації старий класифікатор на новий 05 на 001.01 та 35 на 007.01 що робити?
met.fr3 (330 KB)
Змінив в одному місці виклик функції StrToFloat, яка чутлива до роздільника, на виклик AnyStrToFloat, яка сприймає розділником і кому і крапку.
Має працювати, але перевірити немає можливості
Я замітив що в обмінику код угіддя 35 а коли вкідаю в діджітал то там 009.01! репорт запускається, а коли виправляю на 007.01. або 35 чи 001.01; 05 сохраняю і запускаю репорт то зразу вибиває помилку…
Файли висилаю вам на почту.
В шаблоні використовувалась застаріла функція AnyStrToFloat(), тому помилка лишилась.
Виправлений шаблон скинув на e-mail.
Опишу також використання функції AnyStrToFloat()
var
…
…
DecDelimeter:Char; // змінна для роздільника
…
…
…
…
function AnyStrToFloat(S:string):Real;
var N:string;
i:Integer;
begin
N:=‘’;
for I:=1 to Length(S) do
if S[I] in [‘0’..‘9’,‘,’,‘.’]
then begin
if S[I] in [‘0’..‘9’]
then N:=N+S[I]
else N:=N+DecDelimeter;
end;
if N<>‘’ then Result:=StrToFloat(N) else Result:=0;
end;
…
…
begin
DecDelimeter:=Copy(FloatToStr(1/10),2,1); // ініціалізація роздільника
…
…
…
end.