Posted by: bm
1. The tab-order of the objects depends on the order in the outline.
So insert your objects behind the other's.
The way is to navigate to the Object (see the following code) and use
cdkItem.InsertItemAfter.
2. If you have navigate to the form, you have to use GetNextSibling.
The following is a code, which list all object's of a form including all
columns in tables in the form.
!!CB!! 278
Function: OnCreate
Description:
Returns
Parameters
Static Variables
Local variables
: aItem
Class: cdkItem
Boolean: bReturn
Number: nItemSich
Number: nRow
: xMenus[*]
Class: cdkMenu
Actions
Call aItem.Initialize(CDK_App.GetOutline(),
SalStrToNumber(strArgArray[3]))
! Set nItem = aItem.EnumChildObjects( CDK_IT_Menu, xMenus )
! If nItem > -1
Call Test( xMenus[0], '1234' )
Set bReturn=aItem.GetFirstChild(aItem)
While aItem.GetNextSibling( aItem )
If aItem.GetItemType() = 314 OR aItem.GetTitle() = 'Tool Bar'
Break
If aItem.GetItemType() = 314 OR aItem.GetTitle() = 'Tool Bar'
! Ab jetzt jeder Eintrag ein Objekt
Set bReturn=aItem.GetFirstChild(aItem)
Set bReturn=aItem.GetFirstChild(aItem)
While bReturn
! Wenn Eintrag kein Kommentar, d.h. ein Objekt
If aItem.GetItemType()!=188
! in Listbox eintragen
Set nRow = SalTblInsertRow( hWndItem, TBL_MaxRow )
Set colnObjekt = aItem.m_hItem
Set colstrName = ' TB - '||aItem.GetText()
Set colstrClass = aItem.GetClassName()
Set colstrObjekt = aItem.GetStringFromValue(aItem.GetItemType())
If SalStrMidX( colstrObjekt, SalStrLength( colstrObjekt ) - 1, 1 ) =
':'
Set colstrObjekt = SalStrMidX( colstrObjekt, 0,
alStrLength( colstrObjekt ) - 1 )
If SalIsNull( colstrClass )
Set colstrClass = colstrObjekt
Call SalColorSet( SalTblGetColumnWindow( hWndItem, 3, COL_GetPos ),
COLOR_IndexCellText, COLOR_DarkGreen )
Call SalColorSet( SalTblGetColumnWindow( hWndItem, 4, COL_GetPos ),
COLOR_IndexCellText, COLOR_DarkGreen )
! Wenn Tabelle, dann Columns übernehmen
If aItem.GetItemType()=3
Set nItemSich = aItem.GetItem()
! Eintrag "Contents" der Tabelle lesen
Set bReturn=aItem.GetFirstChild(aItem)
! Erste Column lesen
Set bReturn=aItem.GetFirstChild(aItem)
While bReturn
! in Listbox eintragen
Set nRow = SalTblInsertRow( hWndItem, TBL_MaxRow )
Set colnObjekt = aItem.m_hItem
Set colstrName = ' '||aItem.GetText()
Set colstrClass = aItem.GetClassName()
Set colstrObjekt = aItem.GetStringFromValue(aItem.GetItemType())
If SalStrMidX( colstrObjekt, SalStrLength( colstrObjekt ) - 1, 1 ) =
':'
Set colstrObjekt = SalStrMidX( colstrObjekt, 0,
alStrLength( colstrObjekt ) - 1 )
If SalIsNull( colstrClass )
Set colstrClass = colstrObjekt
Call SalColorSet( SalTblGetColumnWindow( hWndItem, 3, COL_GetPos ),
COLOR_IndexCellText, COLOR_DarkRed )
Call SalColorSet( SalTblGetColumnWindow( hWndItem, 4, COL_GetPos ),
COLOR_IndexCellText, COLOR_DarkRed )
! Nächste Eintrag
Set bReturn=aItem.GetNextSibling(aItem)
Call aItem.Initialize( CDK_App.GetOutline(), nItemSich )
! Und nächsten Eintrag
Set bReturn=aItem.GetNextSibling(aItem)
! * Form
Call aItem.Initialize(CDK_App.GetOutline(),
SalStrToNumber(strArgArray[3]))
Set bReturn=aItem.GetFirstChild(aItem)
! Bis "CONTENTS" ignorieren
While aItem.GetNextSibling( aItem )
If aItem.GetItemType() = 114
Break
! Ab jetzt jeder Eintrag ein Objekt
Set bReturn=aItem.GetFirstChild(aItem)
While bReturn
! Wenn Eintrag kein Kommentar, d.h. ein Objekt
If aItem.GetItemType()!=188
! in Listbox eintragen
Set nRow = SalTblInsertRow( hWndItem, TBL_MaxRow )
Set colnObjekt = aItem.m_hItem
Set colstrName = aItem.GetText()
Set colstrClass = aItem.GetClassName()
Set colstrObjekt = aItem.GetStringFromValue(aItem.GetItemType())
If SalStrMidX( colstrObjekt, SalStrLength( colstrObjekt ) - 1, 1 ) = ':'
Set colstrObjekt = SalStrMidX( colstrObjekt, 0,
alStrLength( colstrObjekt ) - 1 )
If SalIsNull( colstrClass )
Set colstrClass = colstrObjekt
! Wenn Tabelle, dann Columns übernehmen
If aItem.GetItemType()=3
Set nItemSich = aItem.GetItem()
! Eintrag "Contents" der Tabelle lesen
Set bReturn=aItem.GetFirstChild(aItem)
! Erste Column lesen
Set bReturn=aItem.GetFirstChild(aItem)
While bReturn
! in Listbox eintragen
Set nRow = SalTblInsertRow( hWndItem, TBL_MaxRow )
Set colnObjekt = aItem.m_hItem
Set colstrName = ' '||aItem.GetText()
Set colstrClass = aItem.GetClassName()
Set colstrObjekt = aItem.GetStringFromValue(aItem.GetItemType())
If SalStrMidX( colstrObjekt, SalStrLength( colstrObjekt ) - 1, 1 ) =
':'
Set colstrObjekt = SalStrMidX( colstrObjekt, 0,
alStrLength( colstrObjekt ) - 1 )
If SalIsNull( colstrClass )
Set colstrClass = colstrObjekt
Call SalColorSet( SalTblGetColumnWindow( hWndItem, 3, COL_GetPos ),
COLOR_IndexCellText, COLOR_DarkRed )
Call SalColorSet( SalTblGetColumnWindow( hWndItem, 4, COL_GetPos ),
COLOR_IndexCellText, COLOR_DarkRed )
! Nächste Eintrag
Set bReturn=aItem.GetNextSibling(aItem)
Call aItem.Initialize( CDK_App.GetOutline(), nItemSich )
! Und nächsten Eintrag
Set bReturn=aItem.GetNextSibling(aItem)
! Ende
Call SalTblSetFlagsAnyRows( hWndItem, ROW_New, FALSE, 0, 0 )
Call SalTblSetFocusRow( hWndItem, 0 )
Call SalTblSetRowFlags( hWndItem, 0, ROW_Selected, TRUE )
To see this code in use, search in
forum.sourcecode for "Again : Prop32"
from 07.02.2001