[fxruby-users] FXTable: how to prevent a particular column from being resized?

Philippe Lang philippe.lang at attiksystem.ch
Tue Oct 9 03:13:10 EDT 2007


Jeroen van der Zijp wrote:

> On Monday 08 October 2007 06:51, Philippe Lang wrote:
>> Hi again,
>> 
>> I'm using FXTables with a few hidden columns, which have 0 width.
>> 
>> Is there a way to prevent the user from resizing these columns, which
>> only have an internal meaning?
> 
> You can disable resizing of rows and/or columns.  However, its an
> all-or-nothing thing; you can't turn resizing off for a single
> row/column only.  
> 
> I can suggest a sneaky trick, maybe:- as the cursor moves, enable or
> disable the resizability based on the column its hovering over.  I
> admit its not super elegant but it might work...  

Hi again,

I think I found a bug while playing with zero-width columns: as soon as
the extreme right column is shrinked to zero width, it cannot be
stretched anymore: when getting to the place where the stretch should
start, the mouse icon is correct, but after the clic, nothing happens.

My configuration:
-----------------
Windows XP
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
fxruby 1.6.11

Test code:
----------

#!/usr/bin/ruby

require 'fox16'

include Fox

class MyWindow < FXMainWindow
    
  def initialize(app)

    super(app, "Window", nil, nil, DECOR_ALL, 0, 0, 600, 350)

    # Menu bar stretched along the top of the main window
    menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
  
    # File menu
    filemenu = FXMenuPane.new(self)
    FXMenuTitle.new(menubar, "&File", nil, filemenu)
    FXMenuCommand.new(filemenu, "&Quit\tCtl-Q\tQuit the application",
        nil, app, FXApp::ID_QUIT)

    # Table
    f = FXHorizontalFrame.new(self, LAYOUT_FILL_X|LAYOUT_FILL_Y)
    t = FXTable.new(f, nil, 0,
TABLE_COL_SIZABLE|LAYOUT_FILL_X|LAYOUT_FILL_Y)
    
    t.visibleRows = 3
    t.visibleColumns = 3
    t.setTableSize(3, 3)
    
  end

  def create
    super
    show(PLACEMENT_SCREEN)
  end
  
end

if __FILE__ == $0
  application = FXApp.new("Attik System", "FXRuby Test")
  MyWindow.new(application)
  application.create
  application.run
end


More information about the fxruby-users mailing list