Конференция "Gupta/Centura (Gupta Technologies)"

Обсуждение вопросов, связанных с компанией Unify/Gupta (Gupta Technologies), ее продуктами Team Developer, SQLBase и др.

 
 
Добавить сообщение »

Тема: CDK

Автор:  Валерий Дата: 01.11.2000 08:57
>>Если получен hItem таблицы, то можно с помощью функции cBaseTable.EnumColumnObjects () получить массив с hItem'ами столбцов таблицы и всех делов-то. Кстати, то же самое можно сделать вручную, получая последовательно сначала GetFirstChild ()из Contents секции таблицы и затем в цикле получать GetNextSibling (), пока эта функция возвращает осмысленный hItem
>>
>>Geos
>>:)
>> Пытаюсь использовать следующий вариат:
>
>Window Variable
> cdkItem: aItem
> cdkItem: Children[*]
> string: sNames[*]
>
>Action
> On SAM_Click
> Set nCount = aForm.EnumChildWindowObjects( Children )
> Set n = 0
> While n <= nCount
> Set nType = Children[n].GetItemType()
> Set sType = aForm.GetStringFromValue( nType )
> Set sName = Children[n].GetName()
> Set sNames[n1] = sName
> Set sValue[n1]= sType
> Set df2 = Children[n].GetItem()
> If Children[n].GetItemType() = CDK_IT_ChildTable
> Set n2 = 0
> If Children[n].GetFirstChild( aItem )
> Loop
> Set sNames[n2] = aItem.GetName()
> Set n2 = n2 + 1
> If not aItem.GetNextSibling( aItem )
> Break
>но массив sNames не заполняется , что я делаю не так ?
>> Валерий

> Не буду утверждать, но этот вариант , по моему мнению, не рабочий. Предлогаю использовать следующее:

Window Variable
cdkItem: Children[*]
cdkChildTable: aTbl
String: sNames[*]
Number: n2
Number: n
Number: n1
Number: nCount
Action
On SAM_Click
Set nCount = aForm.EnumChildWindowObjects( Children )
Set n = 0
While n <= nCount
If Children[n].GetItemType() = CDK_IT_ChildTable
Call aTbl.InitializeFromObject( Children[n] )
Call aTbl.EnumColumns( sNames )
Call SalQueryArrayBounds( sNames, nLowBound, n2)
Set n1 = 0
While n1 <= n2
Call SalListAdd( lb5, sNames[n1] )
Set n1 = n1 + 1
n = n + 1
Проверено, работает !!!
>> А.О.
Ответить на сообщение »
 
Автор:  Валерий Дата: 01.11.2000 08:49
>>Если получен hItem таблицы, то можно с помощью функции cBaseTable.EnumColumnObjects () получить массив с hItem'ами столбцов таблицы и всех делов-то. Кстати, то же самое можно сделать вручную, получая последовательно сначала GetFirstChild ()из Contents секции таблицы и затем в цикле получать GetNextSibling (), пока эта функция возвращает осмысленный hItem
>>
>>Geos
>>:)
>> Пытаюсь использовать следующий вариат:
>
>Window Variable
> cdkItem: aItem
> cdkItem: Children[*]
> string: sNames[*]
>
>Action
> On SAM_Click
> Set nCount = aForm.EnumChildWindowObjects( Children )
> Set n = 0
> While n <= nCount
> Set nType = Children[n].GetItemType()
> Set sType = aForm.GetStringFromValue( nType )
> Set sName = Children[n].GetName()
> Set sNames[n1] = sName
> Set sValue[n1]= sType
> Set df2 = Children[n].GetItem()
> If Children[n].GetItemType() = CDK_IT_ChildTable
> Set n2 = 0
> If Children[n].GetFirstChild( aItem )
> Loop
> Set sNames[n2] = aItem.GetName()
> Set n2 = n2 + 1
> If not aItem.GetNextSibling( aItem )
> Break
>но массив sNames не заполняется , что я делаю не так ?
>> Валерий
Ответить на сообщение »
 
Автор:  George Panov Дата: 31.10.2000 13:59
Судя по примеру и не должен, точнее должен, но, очевидно, не так, как задумывалось :)По идее так, как я написал, правильней, хотя тоже может не работать ибо писано на коленке:

-----------------------------------------
Window Variable
cdkItem: aItem
cdkItem: Children[*]
String: sNames[*]
String: sValues[*]
Number: nType
Number: n
Number: n1
Action
On SAM_Click
Set nCount = aForm.EnumChildWindowObjects( Children )
Set n = 0
While n <= nCount
Set nType = Children[n].GetItemType()
Set sNames[n] = Children[n].GetName()
Set sValue[n]= aForm.GetStringFromValue( nType )
Set df2 = Children[n].GetItem()
If nType = CDK_IT_ChildTable and Children[n].GetFirstChild( aItem )
Set n1 = 0
Loop
Set sNames[n1+ n + 1] = aItem.GetName()
Set sValues[n1 + n + 1] = aItem.GetStringFromValue( aItem.GetItemType() )
If not aItem.GetNextSibling( aItem )
Break
Set n1 = n1 + 1
Set n = n + 1

-----------------------------------------
Geos
:)
Ответить на сообщение »
 
Автор:  Валерий Дата: 31.10.2000 12:44
>Если получен hItem таблицы, то можно с помощью функции cBaseTable.EnumColumnObjects () получить массив с hItem'ами столбцов таблицы и всех делов-то. Кстати, то же самое можно сделать вручную, получая последовательно сначала GetFirstChild ()из Contents секции таблицы и затем в цикле получать GetNextSibling (), пока эта функция возвращает осмысленный hItem
>
>Geos
>:)
> Пытаюсь использовать следующий вариат:

Window Variable
cdkItem: aItem
cdkItem: Children[*]
string: sNames[*]

Action
On SAM_Click
Set nCount = aForm.EnumChildWindowObjects( Children )
Set n = 0
While n <= nCount
Set nType = Children[n].GetItemType()
Set sType = aForm.GetStringFromValue( nType )
Set sName = Children[n].GetName()
Set sNames[n1] = sName
Set sValue[n1]= sType
Set df2 = Children[n].GetItem()
If Children[n].GetItemType() = CDK_IT_ChildTable
Set n2 = 0
If Children[n].GetFirstChild( aItem )
Loop
Set sNames[n2] = aItem.GetName()
Set n2 = n2 + 1
If not aItem.GetNextSibling( aItem )
Break
но массив sNames не заполняется , что я делаю не так ?
> Валерий
Ответить на сообщение »
 
Автор:  les Дата: 31.10.2000 11:25
В принципе (не с помощью CDK) можно поизвращаться - если заполняем с помощью SalTblPopulate и select разный,
то можно с помощью
! SalTblGetColumnWindow
Пример (взят из хелпа)
Set nColID = 0
Loop

Set hWndCol = SalTblGetColumnWindow ( tbl1, nColID, COL_GetID )
If hWndCol = hWndNULL
Break
Set nColID = nColID + 1
Ответить на сообщение »
 
Автор:  George Panov Дата: 30.10.2000 19:11
Если получен hItem таблицы, то можно с помощью функции cBaseTable.EnumColumnObjects () получить массив с hItem'ами столбцов таблицы и всех делов-то. Кстати, то же самое можно сделать вручную, получая последовательно сначала GetFirstChild ()из Contents секции таблицы и затем в цикле получать GetNextSibling (), пока эта функция возвращает осмысленный hItem

Geos
:)
Ответить на сообщение »
 
Автор:  Валерий Дата: 26.10.2000 10:54
Как, используя функции CDK, получить список дочерник колонок таблицы.
Ответить на сообщение »
 

Добавить сообщение »
Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/iservices/messages.asp?forumId=589&topicId=4