//AB/ Project Edit Indexes //AB/ Object prj is a Dialog_Project //AB/ Set ProjectName to "Edit Indexes" //AB/ Set ProjectFileName to "EditIndexes.dg" //AB/ Set GenerateFileName to "NONAME" //AB/ Set Size to 290 389 // Project Object Structure // EditIndexes is a ModalPanel // cmbIndex is a ComboForm // oSegments is a Group // oSegmentGrid is a Grid // oBatchIndex is a CheckBox // oDelete is a Button // oSave is a Button // oCancel_btn is a Button // Register all objects Register_Object cmbIndex Register_Object EditIndexes Register_Object oBatchIndex Register_Object oCancel_btn Register_Object oDelete Register_Object oSave Register_Object oSegmentGrid Register_Object oSegments //AB-StoreTopStart Use ChooseField.dg //AB-StoreTopEnd //AB-IgnoreStart Use Windows.pkg Use dfCmbFrm.pkg //AB-IgnoreEnd Object EditIndexes Is A ModalPanel //AB-StoreTopStart Property Boolean pbIndexChanged public False //AB-StoreTopEnd Set Border_Style To Border_Thick Set Label To "Edit Indexes" Set Location To 10 8 Set Size To 257 333 Set piMaxSize To 600 342 Set piMinSize To 104 217 //AB-DDOStart //AB-DDOEnd Object cmbIndex Is A ComboForm Set Label To "Index:" Set Size To 14 289 Set Location To 9 32 Set peAnchors To anTopLeftRight Set Form_Border To 0 Set Label_Col_Offset To 2 Set Label_Justification_Mode To jMode_Right Set Entry_State Item 0 To False //AB-StoreStart Procedure Combo_Fill_List Local Integer AntalIndex aktIndex antalSegmenter aktSegment Feltnr iVal Local String sBesked strTemp Integer iFile Get piFileNumber To iFile Send Combo_delete_data Send Combo_Add_Item "00: (new)" // ingen index - brug recnum Get_Attribute DF_FILE_LAST_INDEX_NUMBER Of iFile To AntalIndex For aktIndex From 1 To antalIndex Get_Attribute DF_INDEX_NUMBER_SEGMENTS Of iFile (String(aktIndex)) To antalSegmenter If antalSegmenter Begin Move "" To sBesked If (aktIndex < 10) Append sBesked "0" Append sBesked aktIndex Append sBesked ": " For aktSegment From 1 To antalSegmenter Get_Attribute DF_INDEX_SEGMENT_FIELD Of iFile (String(aktIndex)) (String(aktSegment)) To feltnr Get string_value Of (aFildef(Self)) Item (feltnr * 4) To strTemp Append sBesked strTemp //Get_attribute DF_INDEX_SEGMENT_CASE of iFile (string(aktIndex)) (string(aktSegment)) to iVal //If (iVal = DF_CASE_USED) append sBesked "(UPP)" Get_Attribute DF_INDEX_SEGMENT_DIRECTION Of iFile (String(aktIndex)) (String(aktSegment)) To iVal If (iVal = DF_DESCENDING) Append sBesked "(DEC)" Append sBesked ", " Loop Trim sBesked To sBesked If (Right(sBesked, 1) = ",") Move (Left(sBesked, (Length(sBesked) - 1))) To sBesked Send Combo_Add_Item sBesked End Loop // Set pIndexChangeOk To False Set value Item 0 To "00: (new)" // Set pIndexChangeOk To True End_Procedure Procedure OnChange // Integer iOk // Get pIndexChangeOk To iOk // If (Not(iOk)) Procedure_Return Send DoFillGrid Of oSegmentGrid End_Procedure //AB-StoreEnd End_Object // cmbIndex Object oSegments Is A Group Set Size To 185 314 Set Location To 33 7 Set peAnchors To anAll Set Label To "Segments" Object oSegmentGrid Is A Grid Set Size To 170 302 Set Location To 10 6 Set peAnchors To anTopBottom Set peResizeColumn To rcSelectedColumn Set Line_Width To 3 0 Set Form_Width Item 0 To 196 Set Header_Label Item 0 To "Field" Set Form_Width Item 1 To 47 Set Header_Label Item 1 To "Uppercase" Set Form_Width Item 2 To 47 Set Header_Label Item 2 To "Decending" //AB-StoreStart On_Key Key_F4 Send Prompt On_Key key_F11 Send DoInsertBlankRow On_Key Key_Shift+Key_F2 Send DoDeleteRow Set select_mode To multi_select Procedure DoFillGrid Integer iRow iMaxRows iItem iCounter aktIndex antalSegmenter aktSegment Integer feltnr iVal iOldState iFile String sValue Get piFileNumber To iFile Get dynamic_update_state To iOldState Set dynamic_update_state To False Send Delete_data Move 16 To iMaxRows Move 0 To iCounter Get value Of cmbIndex Item 0 To sValue Left sValue To aktIndex 2 If (aktIndex > 0) Get_Attribute DF_INDEX_NUMBER_SEGMENTS Of iFile (String(aktIndex)) To antalSegmenter If antalSegmenter Begin For aktSegment From 1 To antalSegmenter Get_Attribute DF_INDEX_SEGMENT_FIELD Of iFile (String(aktIndex)) (String(aktSegment)) To feltnr Get string_value Of (aFildef(Self)) Item (feltnr * 4) To sValue Send Add_Item msg_none sValue Get item_count To iItem Decrement iItem Set Form_button Item iItem To Form_Button_prompt Set Form_button_value Item iItem To "..." Get_Attribute DF_INDEX_SEGMENT_CASE Of iFile (String(aktIndex)) (String(aktSegment)) To iVal Send Add_Item msg_none "" Get item_count To iItem Decrement iItem Set checkbox_item_state iItem To True Set select_state Item iItem To iVal // If (iVal = DF_CASE_USED) Append sBesked "(UPP)" Get_Attribute DF_INDEX_SEGMENT_DIRECTION Of iFile (String(aktIndex)) (String(aktSegment)) To iVal Send Add_Item msg_none "" Get item_count To iItem Decrement iItem Set checkbox_item_state iItem To True Set select_state Item iItem To iVal // If (iVal = DF_DESCENDING) Append sBesked "(DEC)" Loop End For iRow From (AntalSegmenter+1) To iMaxRows Send Add_Item msg_none "" Get item_count To iItem Decrement iItem Set Form_button Item iItem To Form_Button_prompt Set Form_button_value Item iItem To "..." Send Add_Item msg_none "" Get item_count To iItem Decrement iItem Set checkbox_item_state iItem To True Send Add_Item msg_none "" Get item_count To iItem Decrement iItem Set checkbox_item_state iItem To True Loop Set dynamic_update_state To iOldState Set checked_State Of oBatchIndex To False Get_Attribute DF_INDEX_TYPE Of iFile (String(aktIndex)) To iVal If (iVal = DF_INDEX_TYPE_BATCH) Set checked_State Of oBatchIndex To True End_Procedure // DoFillGrid Procedure Prompt Integer iCell iColumn iField iMode String sFieldname sMode Get Current_item To iCell Get Current_col To iColumn Case Begin Case (iColumn = 0) // Choose field Send Popup To oChooseField Get piChoosedField Of oChooseField To iField If (iField > -1) Begin Get String_value Of aFilDef Item (iField * 4) To sFieldname Set value Item iCell To sFieldname End Case Break Case End End_Procedure Procedure DoInsertBlankRow Integer iOldState iCell iCol iBaseCell iError Get dynamic_update_state To iOldState Set dynamic_update_state To False Get current_item To iCell Get current_col To iCol Move (iCell - iCol) To iBaseCell Send Insert_Item msg_None "" iBaseCell Send Insert_Item msg_None "" iBaseCell Send Insert_Item msg_None "" iBaseCell Set Form_button Item iBaseCell To Form_Button_prompt Set Form_button_value Item iBaseCell To "..." Set value Item iBaseCell To "" Set checkbox_item_state (iBaseCell + 1) To True Set checkbox_item_state (iBaseCell + 2) To True Get item_count To iCell Decrement iCell Send Delete_Item iCell Decrement iCell Send Delete_Item iCell Decrement iCell Send Delete_Item iCell Get msg_Activate_Item iBaseCell To iError Set dynamic_update_state To iOldState End_Procedure Procedure DoDeleteRow Integer iOldState iCell iCol iBaseCell iError iItem Get dynamic_update_state To iOldState Set dynamic_update_state To False Get current_item To iCell Get current_col To iCol Move (iCell - iCol) To iBaseCell Send Delete_Item iBaseCell Send Delete_Item iBaseCell Send Delete_Item iBaseCell Send Add_Item msg_none "" Get item_count To iItem Decrement iItem Set Form_button Item iItem To Form_Button_prompt Set Form_button_value Item iItem To "..." Send Add_Item msg_none "" Get item_count To iItem Decrement iItem Set checkbox_item_state iItem To True Send Add_Item msg_none "" Get item_count To iItem Decrement iItem Set checkbox_item_state iItem To True Get msg_Activate_Item iBaseCell To iError Set dynamic_update_state To iOldState End_Procedure //AB-StoreEnd End_Object // oSegmentGrid End_Object // oSegments Object oBatchIndex Is A CheckBox Set Label To "Index is a BATCH index." Set Size To 10 93 Set Location To 223 7 //AB-StoreStart Procedure OnChange Boolean bChecked Get Checked_State To bChecked End_Procedure // OnChange //AB-StoreEnd End_Object // oBatchIndex Object oDelete Is A Button Set Label To "Delete" Set Location To 223 156 //AB-StoreStart Procedure OnClick String sValgtFil sValue sField Handle hFile Integer iIndex iBaseCell iMaxCell iSegment iField iValue iFile Integer iRet iFile2 Get piFileNumber To iFile2 Get value Of cmbIndex Item 0 To sValue Left sValue To iIndex 2 If (iIndex = 0) Procedure_Return Get NextFreeFilenumber iFile2 To iFile If (iFile = 0) Procedure_Return Get yesno_box ("Delete index"*String(iIndex)+"?") To iRet If (iRet = MBR_NO) Procedure_Return Close iFile2 Get psFilename To sValgtFil Get DriverForOpenAs sValgtFil To sValgtFil Open sValgtFil as iFile Mode DF_EXCLUSIVE If (Found) Begin Send activate To resinfo Move iFile To hFile Structure_Start hFile If (iIndex > 0) Delete_Index hFile iIndex Structure_End hFile DF_STRUCTEND_OPT_NONE "" (Resinfo(Self)) Send Close_panel To resinfo End Close iFile Set pbIndexChanged To True Send Close_Panel End_Procedure // OnClick //AB-StoreEnd End_Object // oDelete Object oSave Is A Button Set Label To "Save" Set Location To 223 213 //AB-StoreStart Procedure OnClick String sValgtFil sValue sField Handle hFile Integer iIndex iBaseCell iMaxCell iSegment iField iValue iFile iFile2 Get NextFreeFilenumber To iFile If (iFile = 0) Procedure_Return Get piFileNumber To iFile2 Close iFile2 Get psFilename To sValgtFil Get DriverForOpenAs sValgtFil To sValgtFil Open sValgtFil as iFile Mode DF_EXCLUSIVE If (Found) Begin Send activate To resinfo Move iFile To hFile Structure_Start hFile Get value Of cmbIndex Item 0 To sValue Left sValue To iIndex 2 Get item_count Of oSegmentGrid To iMaxCell Decrement iMaxCell Move 0 To iBaseCell Move 0 To iSegment If (iIndex = 0) Create_Index hFile At iIndex Set_Attribute DF_INDEX_NUMBER_SEGMENTS Of hFile iIndex To 16 Repeat Get value Of oSegmentGrid Item iBaseCell To sField Move (Trim(Uppercase(sField))) To sField Move -1 To iField If (sField <> "") Field_Map hFile sField To iField If (iField <> -1) Begin Increment iSegment Set_Attribute DF_INDEX_SEGMENT_CASE Of hFile iIndex iSegment To DF_CASE_USED Set_Attribute DF_INDEX_SEGMENT_DIRECTION Of hFile iIndex iSegment To DF_ASCENDING Set_Attribute DF_INDEX_SEGMENT_FIELD Of hFile iIndex iSegment To iField Get select_state Of oSegmentGrid Item (iBaseCell + 1) To iValue If (iValue) Set_Attribute DF_INDEX_SEGMENT_CASE Of hFile iIndex iSegment To DF_CASE_IGNORED Get select_state Of oSegmentGrid Item (iBaseCell + 2) To iValue If (iValue) Set_Attribute DF_INDEX_SEGMENT_DIRECTION Of hFile iIndex iSegment To DF_DESCENDING End Move (iBaseCell + 3) To iBaseCell Until (iBaseCell > iMaxCell) Set_Attribute DF_INDEX_NUMBER_SEGMENTS Of hFile iIndex To iSegment Set_Attribute DF_INDEX_TYPE Of hFile iIndex To DF_INDEX_TYPE_ONLINE Get checked_State Of oBatchIndex To iValue If (iValue) Set_Attribute DF_INDEX_TYPE Of hFile iIndex To DF_INDEX_TYPE_BATCH Structure_End hFile DF_STRUCTEND_OPT_NONE "" (Resinfo(Self)) Open sValgtFil as iFile Mode DF_EXCLUSIVE Sort iFile (String(iIndex)) ((DF_SORT_OPTION_BAD_DATA_FIXUP) Ior (DF_SORT_OPTION_DUP_DATA_ABORT)) (Resinfo(Self)) Send Close_panel To resinfo End Close iFile Set pbIndexChanged To True Send Close_Panel End_Procedure // OnClick //AB-StoreEnd End_Object // oSave Object oCancel_btn Is A Button Set Label To "&Close" Set Location To 223 269 Set peAnchors To anBottomRight //AB-StoreStart Procedure OnClick Send Close_Panel End_Procedure // OnClick //AB-StoreEnd End_Object // oCancel_btn //AB-StoreStart On_Key kCancel Send close_panel Procedure activate_group Forward Send activate_group Set pbIndexChanged To False Send Combo_Fill_List Of cmbIndex End_Procedure //AB-StoreEnd End_Object // EditIndexes //AB-StoreStart //AB-StoreEnd //AB/ End_Object // prj