• tablelist and cellindex

    From greg@21:1/5 to All on Sun May 19 11:17:21 2024
    Hello,

    I have a problem with cellindex.
    Why is cellindex (ci) not as expected in my example?
    So the wrong line.
    But it will always output the correct column.


    mfg
    Gregor

    #example script
    package require tablelist
    proc cmd {tbl W x y} {
    set ci [$tbl cellindex @$x,$y]
    set cia [$tbl cellindex active]
    set ria [$tbl index active]
    puts "$tbl $W $x $y :: cia: $cia ria: $ria :: ci $ci"
    }

    tablelist::tablelist .tbl -columns {0 "ID" right 10 "Name" left 0
    "Class" center}
    bind [.tbl bodytag] <Double-1> [list cmd .tbl %W %x %y ]
    pack .tbl -fill both -expand true

    .tbl insert end {0 Herbert 0a}
    .tbl insert end {1 Anna 1a}
    .tbl insert end {2 Lisa 2l}
    .tbl insert end {3 Werner 3w}

    #Output:
    if {0} {
    Output
    .tbl .tbl.body 46 8 :: cia: 0,0 ria: 0 :: ci 0,1
    .tbl .tbl.body 40 33 :: cia: 1,0 ria: 1 :: ci 0,1
    .tbl .tbl.body 35 48 :: cia: 2,0 ria: 2 :: ci 1,1
    .tbl .tbl.body 35 61 :: cia: 3,0 ria: 3 :: ci 1,1

    expected Output
    .tbl .tbl.body 46 8 :: cia: 0,0 ria: 0 :: ci 0,1
    .tbl .tbl.body 40 33 :: cia: 1,0 ria: 1 :: ci 1,1
    .tbl .tbl.body 35 48 :: cia: 2,0 ria: 2 :: ci 2,1
    .tbl .tbl.body 35 61 :: cia: 3,0 ria: 3 :: ci 3,1
    }

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From greg@21:1/5 to All on Sun May 19 15:25:00 2024
    It works now.
    I adjusted X and Y.
    X and Y instead of x and y


    mfg
    Gregor


    #example script:
    package require tablelist
    proc cmd {tbl W X Y} {
    #set x [expr {$X - [winfo rootx $W]}]
    #set y [expr {$Y - [winfo rooty $W]}]
    set x [expr {$X - [winfo rootx $tbl]}]
    set y [expr {$Y - [winfo rooty $tbl]}]

    set ci [$tbl cellindex @$x,$y]
    set cia [$tbl cellindex active,active]
    set gia [$tbl getcell @$x,$y]
    set ria [$tbl index active]
    set coli [$tbl columnindex @$x,$y]
    puts "$tbl $W $x $y :: cia: $cia ria: $ria :: ci $ci :: gia $gia
    :: coli $coli"
    }

    tablelist::tablelist .tbl -columns {0 "ID" right 10 "Name" left 0
    "Class" center}
    bind [.tbl bodytag] <Double-1> [list cmd .tbl %W %X %Y]
    pack .tbl -fill both -expand true

    .tbl insert end {0 Herbert 0a}
    .tbl insert end {1 Anna 1a}
    .tbl insert end {2 Lisa 2l}
    .tbl insert end {3 Werner 3w}

    #Output:
    if {0} {
    Output
    .tbl .tbl.body 59 31 :: cia: 0,0 ria: 0 :: ci 0,1 :: gia Herbert :: coli 1 .tbl .tbl.body 154 50 :: cia: 1,0 ria: 1 :: ci 1,2 :: gia 1a :: coli 2
    .tbl .tbl.body 58 72 :: cia: 2,0 ria: 2 :: ci 2,1 :: gia Lisa :: coli 1
    .tbl .tbl.body 146 94 :: cia: 3,0 ria: 3 :: ci 3,2 :: gia 3w :: coli 2

    }

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From greg@21:1/5 to All on Mon May 20 07:02:16 2024
    It also works with x y
    and tablelist::convEventFields

    It's all in the Tablelist documentation. :-)

    #https://www.nemethi.de/tablelist/tablelistBinding.html#convEventFields #example script:
    package require tablelist
    proc cmd {tbl W x y} {
    #difference x y or X Y
    lassign [tablelist::convEventFields $W $x $y] convW x y

    set ci [$tbl cellindex @$x,$y]
    set cia [$tbl cellindex active]
    set gia [$tbl getcell @$x,$y]
    set ria [$tbl index active]
    set coli [$tbl columnindex @$x,$y]
    puts "$tbl $W $x $y :: cia: $cia ria: $ria :: ci $ci :: gia $gia
    :: coli $coli"
    }

    tablelist::tablelist .tbl -columns {0 "ID" right 10 "Name" left 0
    "Class" center}
    #difference x y or X Y
    bind [.tbl bodytag] <Double-1> [list cmd .tbl %W %x %y]
    pack .tbl -fill both -expand true

    .tbl insert end {0 Herbert 0a}
    .tbl insert end {1 Anna 1a}
    .tbl insert end {2 Lisa 2l}
    .tbl insert end {3 Werner 3w}

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)