Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 29 мар 2024 04:31

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 300 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 20  След.
Автор Сообщение
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 19 апр 2011 11:04 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
kukin писал(а):
Дмитрий, пожалуйста поверхностно опешите алгоритм последовательности выполнения процедур и функций, чтоб решить как создать вторую форму 6-зем, её "клон" с измененными memo.
Как создать "клон", чтоб небыло повторяющихся имен?
Хотел узнать, можно ли не лазить в код, а "переназначать" текст клону, через диалоговое окно, по имени создаваемого memo?

Там 600 строк кода + данные (6zemcols.txt), поверхностно и в то же время доступно может не получится
Areas - массив площадей угодий
HeaderPrint - вывод "шапки" таблицы
AddMemoToHeader(j,l) - вывод ячейки "шапки" таблицы в j-й столбец, l-й уровень (с уровнем "все сложно" :))
BodyPrint - вывод "тела" таблицы
AddMemoToBody(i,j) - вывод ячейки "тела" таблицы в i-ю строку, j-й столбец

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 19 апр 2011 17:03 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 312
Откуда: Ужгород
Спасибо!
Цитата:
Там 600 строк кода + данные (6zemcols.txt),

6zemcols.txt довольно читабельно открывает MS Excel или Oo Calc, но там ничего менять вроде не надо.
Шпаку менять не надо, если это не "зміна цільового призначення", что делается не так часто(тут уже можно ручками в готовом отчете).
В итоге надо разобраться с именами Memo, и как запустить 2 диалоговых окна, первое до обработки кода, а второе после.

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 20 апр 2011 10:31 
Участник
Участник

Зарегистрирован:
20 апр 2011 10:20
Сообщения: 1
Хотелось бы в Поземельной книге в Экспликацию добавить строку "з них в зоні дії обмежень" с соответствующими площадями.
Можно рассчитывать на такое?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 20 апр 2011 21:15 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 312
Откуда: Ужгород
DmitrNick писал(а):
в Экспликацию добавить строку "з них в зоні дії обмежень" с соответствующими площадями.Можно рассчитывать на такое?

Хорошая прозьба, правда как её решить.. вопрос затруднительный.
Слой "обмеження" больше не объединен с участками, тут надо определять по перекрытию угодья ограничением.
Изображение
Это будет "по круче" клона экспликации!

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 21 апр 2011 13:26 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 312
Откуда: Ужгород
Так с переименовыванием Memo я помоему начал разбиратся:
в функции function AddMemoToHeader(Col:Integer; Level:Integer):Integer;
за это отвечают :
with TfrxMemoView(HeaderMemo[Num]) do
begin
Name:='HDRMemo'+IntToStr(Num)+;
case Level of
8:if Col=1

а в procedure AddMemoToBody(Row: Integer; Col:Integer);
отвечает
with TfrxMemoView(BodyMemo[BodyMemo.Count-1]) do
begin
Name:='BodyMemo'+IntToStr(MemoCounter);
Inc(MemoCounter);

Теперь надо будет сделать "клон" кода.
Или впихнуть еще формальные параметры в функции и процедуры.
Также Bondarets Alexander подсказал насчет диалогового окна, надо в тело добавить:
dialogpage1.showmodal
где dialogpage1 имя диалогового окна (надо переобозвать это окно, чтоб язык не ломать :lol: )

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 21 апр 2011 14:05 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 312
Откуда: Ужгород
Дмитрий подскажите:
Все функции по экспликации проходят в теле procedure AddExplication?
Если я внесу в неё дополнительный формальный параметр Boolean (True, False) и он будет действителен для всех внутренних функций?
По этому у меня и не работает функция function AnyStrToFloat(S:string):Real; в определении периметра участка? Просто к ней нет доступа из тела программы?

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 21 апр 2011 15:13 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 312
Откуда: Ужгород
В общем разобрался, клон уже выводит!
проделанные изменения:
procedure AddExplication(ParentPage:TfrxReportPage; ParentMemo:TfrxMemoView; );
поменял на:
procedure AddExplication(ParentPage:TfrxReportPage; ParentMemo:TfrxMemoView; NewOldExpl:Boolean;);

Name:='BodyMemo'+IntToStr(MemoCounter)
поменял на:
begin
if NewOldExpl then
Name:='BodyMemo'+IntToStr(MemoCounter)
else
Name:='BodyMemo2'+IntToStr(MemoCounter);
end;


Name:='HDRMemo'+IntToStr(Num)+
поменял на:
begin
if NewOldExpl=true
then
Name:='HDRMemo'+IntToStr(Num)+
else
Name:='HDRMemo2'+IntToStr(Num)+;
end;


Вывод мемо:
AddExplication(Page3,ExplicationMemo1);//правда не помню какая страничка была
змаенено на:
AddExplication(Page7,ExplicationMemo1,False);
AddExplication(Page3,ExplicationMemo2,true);

Дело за диалоговым окном :wink:

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 21 апр 2011 15:38 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
kukin писал(а):
Все функции по экспликации проходят в теле procedure AddExplication?

Да
kukin писал(а):
Если я внесу в неё дополнительный формальный параметр Boolean (True, False) и он будет действителен для всех внутренних функций?

Да
kukin писал(а):
По этому у меня и не работает функция function AnyStrToFloat(S:string):Real; в определении периметра участка? Просто к ней нет доступа из тела программы?
Да, но эту функцию можно целиком перенести в начало скрипта, в этом случае нужно также переменную DecDelimeter объявить как глобальную и позаботиться о ее инициализации до первого вызова AnyStrToFloat.

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 21 апр 2011 18:20 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 312
Откуда: Ужгород
Продолжим:
Я создал DialogPage2 (диалоговое окно) и в нем 4 элимента EditA, EditB, EditV, EditG(которые отвечают за столбцы А, Б, В, г)
case StringPart(SL[Col],1,chr(9)) of
'А':if NewOldExpl then
// ячейка А, если NewOldExpl=True, то
Begin // открываем первый раздел (который существовал до изменений)
if XMLMode //проверка режима дигиталс-регистратор
then
Memo.Text:=SEF(XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/Proprietors/ProprietorInfo/ProprietorCode'),'KZ.txt')
//присваивание Мемо значенияиз списка KZ.txt для ХМЛ
else Memo.Text:=SEF(Param('KZ',Row),'KZ.txt'); //иначе присваиваем значения из списка KZ.txt для ин4
end //закрываем первый раздел
else //иначе (если NewOldExpl=False)
begin //открываем второй раздел (для работы с диалоговым окном)
EditA.text:=SEF(XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/Proprietors/ProprietorInfo/ProprietorCode'),'KZ.txt'); //в мемо EditA назначаем подсказку (номер рядка из фактического обменника)
EditB.text:=PrepareXMLNMList(',');//и также назначаем остальным элементам EditB, EditV, EditG значения подсказок
EditV.text:=XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/Proprietors/ProprietorInfo/ProprietorCode');
EditG.text:=XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/CategoryPurposeInfo/Purpose');
dialogpage2.showmodal;
//терепь выводим диалог на экран, с подсказками, который можно править. Для диалогового окна задаем в свойствах Visible False, чтоб не віводить окошко по окончанию обработки кода.
Memo.Text:=EditA.text //заносим в в мемо экспликации значение из окна диалогового окна
end;//закрываем второй раздел
'Б':if NewOldExpl then // Запускаем ячейку Б, все делается аналогично описанному выше, только не надо присваивать каждый раз подсказку и выводить диалоговое окно, так как делается это один раз
Begin
if XMLMode
then Memo.Text:=PrepareXMLNMList(',')
else
Memo.Text:=' '+Param('NM',Row);
HAlign:=haLeft;
end
else
Memo.Text:=EditB.text;
'В': if NewOldExpl then
Begin
if XMLMode
then Memo.Text:=XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/Proprietors/ProprietorInfo/ProprietorCode')
else Memo.Text:=Param('KZ',Row);
end
else
Memo.Text:=EditV.text;
'Г':if NewOldExpl then
Begin
if XMLMode
then Memo.Text:=XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/CategoryPurposeInfo/Purpose')
else Memo.Text:=Param('CV',Row);
end
else
Memo.Text:=EditG.text;

Сперва выводит окно, потом идет обработка и вторая экспликация вылазит так как надо!
Вот вам и 600 строк кода, в которых я не шибко разобрался(хотя общую схему понял).
Я вынужден отказаться от поддержки ин4, у меня есть другой (старый) дигиталс для этого. Иначе шаблон становится слишком громоздким и не читабельным, также откажусь от кода регистратора. Мне оно явно не надо.
Цитата:
Да, но эту функцию можно целиком перенести в начало скрипта, в этом случае нужно также переменную DecDelimeter объявить как глобальную и позаботиться о ее инициализации до первого вызова AnyStrToFloat.

Пока выставил в региональных настройках символ точки, как разделителя. И убрал пробелы в цифровых значениях.
Подумаю об этом после "облегчения" шаблона.

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 21 апр 2011 20:57 
Специалист
Специалист

Зарегистрирован:
15 мар 2009 18:45
Сообщения: 49
Откуда: Хмельницький
а как насчёт каталога координат под XML в генераторе отчётов? У меня почему то не пашет. Есть ли пример шаблона?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 22 апр 2011 08:04 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 312
Откуда: Ужгород
fair_18 писал(а):
а как насчёт каталога координат под XML в генераторе отчётов? У меня почему то не пашет. Есть ли пример шаблона?

Шаблон для ин4? Если так, то и не удивительно :lol:
Вы меня опередили, вот хотел за это браться, да еще первые циферки "по обрубать", чтоб под ДСК не подходил.

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 22 апр 2011 08:25 
Специалист
Специалист

Зарегистрирован:
15 мар 2009 18:45
Сообщения: 49
Откуда: Хмельницький
Факт в том что под ин4 он есть, а как его переделать по XML ? :roll:


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 22 апр 2011 11:47 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 312
Откуда: Ужгород
fair_18 писал(а):
Факт в том что под ин4 он есть, а как его переделать по XML ?

Чтоб каталог координат заработал в отчете, надо или вернуть хоть часть старого буфера обмена (как было в ин4),
или писать все заново.
Самый простой метод на данный момент, это получать каталог из DMF.

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 20 июн 2011 19:51 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 312
Откуда: Ужгород
Призрак ИН4 все еще "ходит", ну не могут без него наши "коллеги" в регистрации, акты "не печатаются", планы "не формируются"...

И опять руки потянулись к шаблонам, по причине создания полной совместимости ин4 и хмл.
Надо заметить, что точность у ин4 и у хмеля разные, по этому надо-бы в настройках ин4 шаблонов выставить точность хотяб до 3 знаков (сам же с 2008 года использую обменники с 4мя знаками, до сих пор никто за руку не поймал, дурного слова не сказал :D )
Поскольку созданный шаблон базировался на "Поземельній книзі version 1.0" которая создана в конце марта, у которой не все возможности были "заточены" под ин4, да и у меня изначально цель не стояла в создании универсального шаблона, по этому не дополнял шаблон кодами для ИН4.
Возник такой вопрос Дмитрию (Dmitry_Zolotar), изменялись ли шаблоны, оттачивались ли они под ИН4? Если да, то какие, и можно ли коротко, что было сделано?
Самостоятельные ковыряния шаблонов займут еще довольно много времени, которого и без этого вечно не хватает.

Почему то у меня не работает строка
Memo.Text:=SEF(Param('KZ',Row),'KZ.txt');
выводит полную строку и по этому не сравнивает по KZ.txt
зато такой "изврат канает" Memo.Text:=SEF(copy(param('KZ'),1,2),'KZ.txt');
в каком случае используется Param('KZ',Row), не понял описания этой функции в дереве данных(какая разница между Param('KZ',Row) и Param('KZ') )?

Где "закопан" код, который отвечает за вывод столбца "Код цільового використання" в экспликацию, для ИН4 столбец не выводится

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 21 июн 2011 08:07 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2298
Откуда: Vinnytsia
kukin писал(а):
Почему то у меня не работает строка
Memo.Text:=SEF(Param('KZ',Row),'KZ.txt');
выводит полную строку и по этому не сравнивает по KZ.txt
зато такой "изврат канает" Memo.Text:=SEF(copy(param('KZ'),1,2),'KZ.txt');

Может тип параметра 'KZ' не список, а строка? Тогда вся строка попадет и в репортс.

kukin писал(а):
в каком случае используется Param('KZ',Row), не понял описания этой функции в дереве данных(какая разница между Param('KZ',Row) и Param('KZ') )?

Второй аргумент функции Param - номер участка (от 1 до ObjCount), если он не указан явно, то он равен 1, то есть параметры извлекаются из первого участка.
Param('KZ') = Param('KZ',1)
Есть еще третий аргумент функции: Param('IDxxx',I,J) - извлекает параметр из J-го угодья I-го участка, где 1<=I<=ObjectCount, 1<=J<=ChildCount(I);
kukin писал(а):
Где "закопан" код, который отвечает за вывод столбца "Код цільового використання" в экспликацию, для ИН4 столбец не выводится

строка поиска в коде 'Г': (с апострофами и двоеточием)

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 300 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 20  След.

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 114


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB