powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Отобразить невидимые поля
7 сообщений из 7, страница 1 из 1
Отобразить невидимые поля
    #37599788
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа мощные строители, прошу помощь клуба.

Задача: пройтись по датавиндову, у которого имеются невидимые поля, и сделать их видимыми. Важное пояснение - эти поля существуют только в списке полей (таб Column Specification), в layout-е (т.е. визуально) их нет. Невысвечиваемые поля должны быть добавлены после высвечиваемых, причём эстетика неважна - интересуют только данные. Следующий код задачу НЕ выполняет (он обрабатывает только поля, которые имеются в layout-е и у которых Visible не равно 1):


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
// Convert invisible fields to visible:
li_qty_of_fields = Integer(dw_display.Describe("DataWindow.Column.Count"))
for i = 1 to li_qty_of_fields
	ls_col_name = dw_display.Describe("#"+ String(i) + ".Name")
	if wf_col_is_visible(dw_display, ls_col_name) then continue
	ls_err = dw_display.Modify(ls_col_name + ".Visible=1")
	if ls_err <> "" then MessageBox("", "Modify failed")
next



Не знаю, решаема ли задача в принципе (возможно, надо написать "чёрный" код, который бы создавал (Create) для обсуждаемых полей DWO вычисляя координаты динамически), но, может, у кого-то уже имеется готовое решение?

Спасибо!

Работаю на восьмом пи-би.
...
Рейтинг: 0 / 0
Отобразить невидимые поля
    #37600022
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сдаётся мне, что без CREATE не обойтись. Вот попробовал у себя

Сделал видимым поле (в Grid'е)
string ls_create = 'CREATE column(band=detail id=6 alignment="1" tabsequence=32766 border="0" color="33554432" x="2089" y="8" height="76" width="507" format="[general]" html.valueishtml="0" name=max_status_set_dtm visible="1" edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=yes edit.autohscroll=yes font.face="Tahoma" font.height="-10" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )'
Parent.dw_1.Modify( ls_create)

( жирным выделены - новый идентификатор колонки, новая координата Х и название поля из Column spec)


и заголовок к нему
ls_create = 'CREATE text(band=header alignment="2" text="max_status_set_dtm" border="0" color="33554432" x="2089" y="8" height="64" width="507" html.valueishtml="0" name=max_status_set_dtm_t visible="1" font.face="Tahoma" font.height="-10" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" )'
Parent.dw_1.Modify( ls_create)
...
Рейтинг: 0 / 0
Отобразить невидимые поля
    #37601939
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давайте исходить из того, что у полей, кроме имени, есть ещё и номер.

long ll_column_count , &
ll_index

string ls_columnname , &
ls_visible_criterion

ll_column_count=long(dw_test.object.datawindow.column.count)
if ll_column_count=0 or isnull(ll_column_count) then return

dw_test.insertrow(0)

for ll_index=1 to ll_column_count

ls_visible_criterion="#"+string(ll_index)+".visible=1"
dw_test.modify(ls_visible_criterion)

next

Отладку оставляю Вам.
...
Рейтинг: 0 / 0
Отобразить невидимые поля
    #37601944
KOLCHOZ_POSTEVENT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочёл задачу, ещё раз, вам это решение известно...
Ну да, чего не знаю, того не знаю.
...
Рейтинг: 0 / 0
Отобразить невидимые поля
    #37601995
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изначально сделайте нужные поля видимыми, а в "Expression" для "Visible" у этих полей задайте "0".
Тогда при открытии DW этих полей видно не будет, но их видимостью уже можно будет управлять, например через "Modify".
...
Рейтинг: 0 / 0
Отобразить невидимые поля
    #37602127
maniac85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ursegoпричём эстетика неважна - интересуют только данные. а это зачем такая задача? сильно смахивает на отладку
...
Рейтинг: 0 / 0
Отобразить невидимые поля
    #37603728
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maniac85а это зачем такая задача? сильно смахивает на отладкуЭто для Шпиона . Текущая функциональность такова, что нажав кнопку "Invisible Fields" можно заглянуть в невидимые поля (т.е. высветить их названия, тип данных и значение) только для кликнутой строки датавиндова, а я хочу показать невидимые поля для всех строк сразу (приделав их справа к видимым и выделив каким-то образом). Это важно когда высвечиваются данные, содержащиеся в DDDW.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Отобразить невидимые поля
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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