Skip to content

Troubleshooting🔗

Common issues and solutions for the Taboga Interactive Filter Library.

🚨 Installation Issues🔗

❌ Template Not Found🔗

Problem: "Template 'TInteractiveFilter' not found" error when registering.

Solutions: 1. Verify File Location

✅ Correct: C:\Clarion11\Template\TInteractiveFilter.TPL
❌ Wrong:   C:\Clarion11\LibSrc\TInteractiveFilter.TPL

  1. Register Template Manually
  2. Open Clarion IDE
  3. SetupTemplate Registry
  4. Register → Browse to TPL file
  5. Confirm registration successful

  6. Check File Permissions

  7. Ensure read access to template directory
  8. Run Clarion as Administrator if needed

❌ Extension Restriction Error🔗

Problem: "Control template requires TEnableInteractiveFilter extension" error.

Solutions: 1. Add Extension First

Application Properties → Extensions
Add: [T] Enables "InteractiveFilter" functionality

  1. Extension Order
  2. Extension must be added before control template
  3. If added after, remove and re-add control template

  4. Verify Extension Active

    ! Should see in global includes:
    INCLUDE('TInteractiveFilter.INC'),ONCE
    

🔧 Compilation Errors🔗

❌ Missing Include Files🔗

Problem: "File not found: TInteractiveFilter.INC" compilation error.

Solutions: 1. Check LibSrc Directory

✅ Required files:
C:\Clarion11\LibSrc\TInteractiveFilter.INC
C:\Clarion11\LibSrc\TInteractiveFilter.CLW
C:\Clarion11\LibSrc\TInteractiveFilter_EN.TRN

  1. Verify Include Path

    ! In generated code, should see:
    INCLUDE('TInteractiveFilter.INC'),ONCE
    

  2. Manual Include

    ! Add to global map if needed:
    MAP
      INCLUDE('TInteractiveFilter.INC'),ONCE
    END
    

❌ Class Not Found Errors🔗

Problem: "TInteractiveFilterClass not found" compilation error.

Solutions: 1. Multi-DLL Configuration Issue

! Check compilation symbols:
_TIntFilterLinkMode_=>1;_TIntFilterDllMode_=>0  ! Standard
_TIntFilterLinkMode_=>0;_TIntFilterDllMode_=>1  ! External DLL

  1. ABC Classes Not Enabled

    ! For Legacy Clarion, ensure ABC is available:
    _ABCLinkMode_=>1;_ABCDllMode_=>0
    

  2. Export Configuration

    ! In DLL project, ensure exports:
    TInteractiveFilterClass @?
    PopupClass @?  ! If other apps don't use ABC
    

❌ Icon File Errors🔗

Problem: "Icon file not found" warnings or missing icons.

Solutions: 1. Add Icons to Project

#PROJECT('tint_FilterFor.ico')
#PROJECT('tint_FilterToggle.ico')
#PROJECT('tint_FilterBySelection.ico')
#PROJECT('tint_FilterExcludingSelection.ico')
#PROJECT('tint_FilterRemove.ico')
#PROJECT('tint_Empty.ico')

  1. Icon File Location

    ✅ Project directory or Clarion\Images
    ❌ Don't put in LibSrc or Template directories
    

  2. Alternative Icon Specification

    ! Use full path if needed:
    ICON('C:\MyProject\Icons\tint_FilterFor.ico')
    

🎯 Runtime Issues🔗

❌ Filter Not Working🔗

Problem: Right-click menu appears but filtering doesn't work.

Solutions: 1. Check Event Handling

! Verify events are handled in TakeFieldEvent:
CASE FIELD()
OF ?Browse:1
  IF EVENT() = 4064  ! Filter by selection
     TIF2.FilterOnOperator(e_tint_equals)
  END

  1. Initialization Missing

    ! Ensure proper initialization:
    TIF2.InitComponents
    TIF2.UpdateQuery(0)
    TIF2.InitPopup
    

  2. Browse Integration

    ! Check SetAlerts method has popup setup:
    SELF.Popup.AddItem(TIF2.FilterBySelectionText,'TFilterSelection')
    

❌ Toggle Button Not Working🔗

Problem: Filter toggle button doesn't enable/disable filters.

Solutions: 1. Control Reference

! Verify toggle control is set:
TIF2.InteractiveFilterToggleControl = ?TFilterToggle

  1. Property Binding

    ! Ensure property is bound:
    ?TFilterToggle{PROP:Use} = TIF2.isInteractiveFilterOn
    

  2. Event Handling

    ! Check TakeAccepted has toggle handling:
    OF ?TFilterToggle
      IF TIF2.isInteractiveFilterOn AND TIF2.GetFilter()
         TIF2.ApplyFilter()
      ELSE
         TIF2.DisableFilter()
      END
    

Problem: All popup menu items are grayed out/disabled.

Solutions: 1. Field Detection

! Check SetCurrentInfo is called:
IF TIF2.SetCurrentInfo(xField,xQueueFieldNo)
   ! Enable menu items
ELSE
   ! Disable menu items
END

  1. Mouse Position

    ! Verify mouse position detection:
    IF ?Browse:1{PROPLIST:MouseDownRow} <> 0 AND 
       ?Browse:1{PROPLIST:MouseDownZone}=LISTZONE:Field
       ! Process field selection
    END
    

  2. TakeNewSelection

    ! Ensure TakeNewSelection is called:
    BRW1.TakeNewSelection PROCEDURE
      ! Filter-specific code here
      PARENT.TakeNewSelection
    

💾 Persistence Issues🔗

❌ Save/Load Not Working🔗

Problem: Filter save/load functionality not available.

Solutions: 1. Enable Persistence

! In template configuration:
☑ Allow saving and loading filters
Save procedure: TInteractiveFilter_SaveFilter
Load procedure: TInteractiveFilter_LoadFilter

  1. Procedure Implementation

    ! Verify procedures exist:
    TInteractiveFilter_SaveFilter PROCEDURE(* TInteractiveFilterClass pIFObj,<STRING pFilterName>)
    TInteractiveFilter_LoadFilter PROCEDURE(* TInteractiveFilterClass pIFObj)
    

  2. File Access

    ! Check file definitions exist:
    _TFilters            FILE,DRIVER('TOPSPEED')
    _TFilterRows         FILE,DRIVER('TOPSPEED')
    

❌ Saved Filters Not Loading🔗

Problem: Saved filters appear in list but don't load correctly.

Solutions: 1. Data File Structure

! Verify correct field structure:
_TFRow:SavedFilterID    LONG
_TFRow:FieldName        CSTRING(100)
_TFRow:Operator         LONG
_TFRow:ConditionLow     CSTRING(401)
! ...etc

  1. Collection Name Match

    ! Ensure collection names match:
    SELF.CollectionName = 'CustomerBrowse'  ! Must be consistent
    

  2. Filter Loading Logic

    ! Check filter reconstruction:
    pIFObj.FilterRows.Filter = _TFRow:Filter
    pIFObj.FilterRows.FieldName = _TFRow:FieldName
    ADD(pIFObj.FilterRows)
    pIFObj.ApplyFilter  ! Don't forget to apply
    

🎨 UI Problems🔗

❌ Context Menu Text Wrong🔗

Problem: Menu items show wrong text or placeholders.

Solutions: 1. Macro Replacement

! Check macro replacement:
SELF.Popup.SetText('TFilterSelection',
  TIF2.ReplaceMacro(TIF2.EqualsMacro,TIF2.EqualsBlank))

  1. Current Data Detection

    ! Verify current field/data is set:
    IF TIF2.SetCurrentInfo(xField,xQueueFieldNo)
       ! Macros will work correctly
    END
    

  2. Translation Files

    ! Check translation file is loaded:
    TInteractiveFilter_EN.TRN  ! For English
    

❌ Filter Display Control🔗

Problem: Filter display control doesn't show current filter.

Solutions: 1. Control Assignment

! Set the result control:
TIF2.InteractiveFilterResultFEQ = ?FilterDisplay

  1. Control Type

    ! Use appropriate control type:
    STRING(@s1000),USE(?FilterDisplay)  ! For filter text
    

  2. Display Update

    ! Verify display is updated after filter:
    TIF2.ApplyFilter()  ! Should update display automatically
    

🔍 Performance Issues🔗

❌ Slow Filtering🔗

Problem: Filter application takes too long.

Solutions: 1. Field Indexing

! Ensure filtered fields are indexed:
CUS:StateKey         KEY(CUS:State),DUP,NOCASE,OPT

  1. Case Sensitivity

    ! For SQL drivers, use case sensitive:
    TIF2.CaseSensitivity = 1  ! Better SQL generation
    

  2. Filter Complexity

    ! Avoid too many nested groups:
    ! Simple: (Field1='A' AND Field2='B')
    ! Complex: ((Field1='A' OR Field1='B') AND (Field2='C' OR Field2='D'))
    

❌ Memory Issues🔗

Problem: Application runs out of memory with many filters.

Solutions: 1. Clear Old Filters

! Clear filters when not needed:
TIF2.ClearFilter()

  1. Queue Management

    ! Monitor queue growth:
    FREE(TIF2.FilterRows)  ! If needed
    

  2. Browse Queue Size

    ! Limit browse queue if very large datasets:
    BRW1.SetLimit(1000)  ! If available
    

🛠️ Debug Tips🔗

🔍 Enable Debug Information🔗

  1. Add Debug Variables

    DebugMode            BYTE(1)
    DebugFilter          STRING(2000)
    
    ! In filter methods:
    IF DebugMode
       DebugFilter = TIF2.GetFilter()
       MESSAGE('Current Filter: ' & DebugFilter)
    END
    

  2. Check Filter Queue

    ! Examine filter components:
    LOOP i = 1 TO RECORDS(TIF2.FilterRows)
       GET(TIF2.FilterRows,i)
       MESSAGE('Filter ' & i & ': ' & TIF2.FilterRows.Filter)
    END
    

  3. Verify Events

    ! Log events:
    CASE EVENT()
    OF 4064
       MESSAGE('Filter by selection triggered')
    OF 4065
       MESSAGE('Filter excluding selection triggered')
    END
    

📊 Common Event Numbers🔗

! Template default events:
4064 (0FE0h) - Filter by selection
4065 (0FE1h) - Filter excluding selection
4066 (0FE2h) - Filter for dialog
4067 (0FE3h) - Remove filter
4068 (0FE4h) - Contains/Less than equal
4069 (0FE5h) - Not contains/Greater than equal
4070 (0FE6h) - Load saved filter
4071 (0FE7h) - Save current filter

📞 Getting Help🔗

🔧 Before Contacting Support🔗

  1. Check Version Compatibility
  2. Clarion version vs library version
  3. ABC vs Legacy Clarion template family

  4. Verify Complete Setup

  5. Extension enabled
  6. All files in correct locations
  7. Template properly configured

  8. Test with Demo Application

  9. Use included demo to verify installation
  10. Compare your implementation to working demo

📧 Support Information🔗

  • Fomin Tools: http://fomintools.com
  • Original Author: Edgard L. Riba (Taboga Software)
  • Version: 2016.11.16

📋 Information to Include🔗

When reporting issues, include: - Clarion version - Template family (ABC/Legacy) - Complete error messages - Minimal reproduction case - Template configuration settings


Most issues can be resolved by carefully following the setup instructions and verifying the configuration matches the working examples.