Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как понять какой тип DataWindow из source file? / 21 сообщений из 21, страница 1 из 1
12.02.2008, 01:09
    #35125523
romankuzmik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
Если ли какая-нибудь возможность определить тип (freeform, grid, ...) DataWindow из DWO binary source? Т.к. в текстовом исходном фале 'SRD' такой информации нету, она просто обязана быть где-то внури DWO, а вот где (по какому offset) понять не могу.

Thanx in avdance! :-)
...
Рейтинг: 0 / 0
12.02.2008, 01:20
    #35125525
breathem
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
Processing DataWindow object property. А на будущее, пользуйтесь поиском PB.
...
Рейтинг: 0 / 0
12.02.2008, 09:21
    #35125780
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
Код: plaintext
1.
2.
3.
4.
5.
datawindowchild ldwc
string ls

dw_1.GetChild('col_name', ldwc)

ls = ldwc.Describe("DataWindow.Processing")
...
Рейтинг: 0 / 0
12.02.2008, 11:37
    #35126281
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
romankuzmikЕсли ли какая-нибудь возможность определить тип (freeform, grid, ...) DataWindow из DWO binary source? Т.к. в текстовом исходном фале 'SRD' такой информации нету, она просто обязана быть где-то внури DWO, а вот где (по какому offset) понять не могу.

В бинарнике: смещение 0x0190, тип INT16
На счет .SRD - как уже выше сказали, эта информация есть в datawindow( processing=...)
...
Рейтинг: 0 / 0
12.02.2008, 12:01
    #35126388
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
Anatoly MoskovskyВ бинарнике: смещение 0x0190, тип INT16
А откуда такие познания?
...
Рейтинг: 0 / 0
12.02.2008, 12:04
    #35126408
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
Локшин Марк Anatoly MoskovskyВ бинарнике: смещение 0x0190, тип INT16
А откуда такие познания?
Посмотрел только что :)
...
Рейтинг: 0 / 0
12.02.2008, 18:56
    #35128119
romankuzmik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
Спасибо за processing и за смешение :-)

Но в моём случае задачу не решило, т.к. необходимо роспознать ТОЧНО тип DW, а processing (оно же 0x0190) показывеет '0' для: Form, group, query, or tabular. В то время как tabular это же почти Grid и принципиально по другому рендериться в отличие от freeform.

Стало быть, либо есть еще одна проперти котороя точно указывает на тип DW (один из 11), либо есть какие-то негласные правила которые использует PB чтобы точно определить как рендерить DW с processing=0. Типа: если processing==0 но есть text(band=header ...) => это tabular.

Буду признателен за любые идеи и информацию.

Прикладываю два файла:
- d_prod_type_master_maint.srd - откровенный grid, видимо tabular с processing=0
- d_prod_type_detail_maint.srd - freeform с processing=0, но с text(band=header ...)
...
Рейтинг: 0 / 0
12.02.2008, 18:57
    #35128120
romankuzmik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
d_prod_type_detail_maint.srd
...
Рейтинг: 0 / 0
12.02.2008, 19:09
    #35128141
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
romankuzmik wrote:

> В то время как tabular это же почти Grid и принципиально по
> другому рендериться в отличие от freeform.

Не смешно. Freeform от tabular-а не отличается ничем, кроме дефолтного
взаимного расположения объектов.

> Стало быть, либо есть еще одна проперти котороя точно указывает на тип
> DW (один из 11)

Нет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.02.2008, 19:26
    #35128172
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
romankuzmikНо в моём случае задачу не решило, т.к. необходимо роспознать ТОЧНО тип DW, а processing (оно же 0x0190) показывеет '0' для: Form, group, query, or tabular.
Как уже было сказано, типы "Form, group, query, or tabular" - отличаются только на уровне работы визарда (это названия визарда), т.е. имеют смысл только перед созданием объекта.
Созданный объект имеет тип из другого множества:
0 - FreeForm (он же Tabular)
1 - Grid
4 - Crosstab
5 - Composite
остальные типы не помню

Group может быть и в Grid и в FreeForm, анализируйте по наличию "group(" в синтаксисе
Query - содержимое копируется визардом в DW и в дальнейшем теряется инф. о происхождении запроса
FreeForm от Tabular можно отличить только по координатам и бэндам объектов (например если заголовки столбцов в band=detail, то скорее всего - freeform, band=header - tabular)
...
Рейтинг: 0 / 0
12.02.2008, 19:49
    #35128208
romankuzmik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
мне вообще не смешно, наш application должен рендерить эти DW и разница в обработке freeform и tabular при этом принципиальная:

1. The Freeform presentation style presents data with the data columns going down the page and labels next to each column.
Короче Label:InputField - обычно форма для ввода данных

2. The Tabular presentation style presents data with the data columns going across the page and headers above each column. As many rows from the database will display at one time as can fit in the DataWindow object.
Да, вроде тоже самое, только Label сверху. Но это может паказывать '...As many rows...' и выглядит оно как Grid и соотвт обробатываться должно. btw, N-Up туда же.

1. и 2. реально по разному ведут себя в отношении presentation layer rendering.

Предпологаю что если в processing=0 DW передёться DataSet c multiple rows то DW просто повторяет (копируя все column(band=detail) definitions and increments Y-coordinate) data field row наполняя каждый новый данными их соотв row из DataSet.

Спасибо, Анатолий за valuable input. Именно такой алгоритм и использовал пока не встерил d_prod_type_detail_maint.srd c text(band=header) и processing=0 которая на самом деле FreeForm :-(
...
Рейтинг: 0 / 0
12.02.2008, 20:08
    #35128239
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
romankuzmikнаш application должен рендерить эти DW и разница в обработке freeform и tabular при этом принципиальная
Её нет, и тем более принципиальной. Кстати, что, по-твоему, на рисунке: freeform или tabular ;)?
...
Рейтинг: 0 / 0
12.02.2008, 20:17
    #35128252
romankuzmik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
так что, просто если у DW в DataSet есть multiple rows то оно (DW) просто копирует целиком соджержимое detail band встявляя новые данные из сделующей Dataset row?

т.е. если даже если во FreeForm передать multiple rows то оно скопирует весь detail band (header на то и хедер чтобы не копировать, так?) со всеми labels вниз по Y и заполнит соотв данными?
...
Рейтинг: 0 / 0
12.02.2008, 20:52
    #35128288
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
romankuzmikт.е. если даже если во FreeForm передать multiple rows то оно скопирует весь detail band (header на то и хедер чтобы не копировать, так?) со всеми labels вниз по Y и заполнит соотв данными?
Угумс. К сожалению, более понятного скриншота нет под рукой, но в том, что я прицепил, в двух записях было разное поле "Счёт". А если вытянуть лейблы из detail в header и расположить данные в ряд, а не вразброс, - получится типичный tabular .
...
Рейтинг: 0 / 0
12.02.2008, 21:46
    #35128356
romankuzmik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
вот оно, спасибо!
DW Grid (processing type 1) как я понял вообще не редактируемая (editable) ad hoc reporting structure?
а как раз с помощью freeform/tabular можно создавать подобие редактируемой таблицы.
...
Рейтинг: 0 / 0
12.02.2008, 22:51
    #35128430
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
romankuzmikDW Grid (processing type 1) как я понял вообще не редактируемая (editable) ad hoc reporting structure?
Хи-хи. Grid прекрасно редактируется. А при желании можно сделать редактируемым даже Crosstab ;).

romankuzmikа как раз с помощью freeform/tabular можно создавать подобие редактируемой таблицы.
Я предпочитаю для отчётов использовать tabular - красивше (ИМХО).
____________________________________
- Гарфилд, мышь!
- Спасибо, я сыт!
...
Рейтинг: 0 / 0
13.02.2008, 01:00
    #35128555
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
romankuzmikмне вообще не смешно, наш application должен рендерить эти DW и разница в обработке freeform и tabular при этом принципиальная:
чтобы отличить tabular от freeform в качестве критерия удобно использовать отношение ширины dw к detail height.
т.е. если ширина dw на порядок больше высоты detail то это с большой вероятностью tabular
...
Рейтинг: 0 / 0
13.02.2008, 10:14
    #35128976
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
Dim2000Хи-хи. Grid прекрасно редактируется. А при желании можно сделать редактируемым даже Crosstab ;).
В процессе внесения изменений в который PB громко упадет
...
Рейтинг: 0 / 0
13.02.2008, 10:33
    #35129052
urvas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
Локшин Марк Dim2000Хи-хи. Grid прекрасно редактируется. А при желании можно сделать редактируемым даже Crosstab ;).
В процессе внесения изменений в который PB громко упадет

Не факт, если Crosstab в статик моде...
...
Рейтинг: 0 / 0
13.02.2008, 10:59
    #35129182
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
romankuzmikнаш application должен рендерить эти DW и разница в обработке freeform и tabular при этом принципиальная:

1. The Freeform presentation style presents data with the data columns going down the page and labels next to each column.
Короче Label:InputField - обычно форма для ввода данных

2. The Tabular presentation style presents data with the data columns going across the page and headers above each column. As many rows from the database will display at one time as can fit in the DataWindow object.
Да, вроде тоже самое, только Label сверху. Но это может паказывать '...As many rows...' и выглядит оно как Grid и соотвт обробатываться должно. btw, N-Up туда же.

1. и 2. реально по разному ведут себя в отношении presentation layer rendering.

Предпологаю что если в processing=0 DW передёться DataSet c multiple rows то DW просто повторяет (копируя все column(band=detail) definitions and increments Y-coordinate) data field row наполняя каждый новый данными их соотв row из DataSet.


В DW2XLS рендеринг всех типов DW в XLS делается одним алгоритмом (даже без параметров) - цикл по строкам данных с отрисовкой для каждой строки всех релевантных бэндов.
Так что скорее всего Вы просто недостаточно понимаете принцип функционирования DW, поэтому не смогли отразить это в своем алгоритме.


Спасибо, Анатолий за valuable input. Именно такой алгоритм и использовал пока не встерил d_prod_type_detail_maint.srd c text(band=header) и processing=0 которая на самом деле FreeForm :-(
Что в detail ни одного text нет? Что же это за форма такая без подписей к полям :)

Впрочем как я выше писал - это никакого значения для отрисовки DW не имеет.
...
Рейтинг: 0 / 0
13.02.2008, 19:01
    #35131063
romankuzmik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой тип DataWindow из source file?
в итоге пришел к правилу:

if DW constructor has 'this.of_setrowselect(true);' (PFC pfc_u_dw.sru function) then freeform DW is Grid like component

посмотрим как оно в нашем случае отработает :-)
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как понять какой тип DataWindow из source file? / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]