It's better to use an object name in place of a pointer. That's because a 
pointer could reference more than one object on the form. Object names are 
unique and so reference only a single object.

Here are a couple of things you might try.

Try #1
=====

For calculating the column widths, replace pointers with object names:

So this calculation with pointers:

OBJECT GET BEST SIZE($Column_pa{$i}->;$Width_best1_l;$Height_best_l)
OBJECT GET BEST SIZE($Header_pa{$i}->;$Width_best2_l;$Height_best_l)

become a calculation with object names:

OBJECT GET BEST SIZE(*;$Column_ta{$i}->;$Width_best1_l;$Height_best_l)
OBJECT GET BEST SIZE(*;$Header_ta{$i}->;$Width_best2_l;$Height_best_l)

Try #2
=====

Also, these 4-lines:

LISTBOX SET COLUMN WIDTH($Column_pa{$i}->;$Width_best_l)
LISTBOX SET COLUMN WIDTH($Header_pa{$i}->;$Width_best_l)
LISTBOX SET COLUMN WIDTH(*;$Header_ta{$i};$Width_best_l)
LISTBOX SET COLUMN WIDTH(*;$Column_ta{$i};$Width_best_l)

can become a single line:

LISTBOX SET COLUMN WIDTH(*;$Column_ta{$i};$Width_best_l)

Try #3
=====

Set the listbox column widths **after** you make SLQ SELECT calls.

See "Displaying the result of an SQL query in a list box” at:
http://doc.4d.com/4Dv16R3/4D/16-R3/Managing-List-Box-Objects.300-3218275.en.html#429187
 
<http://doc.4d.com/4Dv16R3/4D/16-R3/Managing-List-Box-Objects.300-3218275.en.html#429187>

Note the line which reads, "Each new execution of a SELECT query with the list 
box leads to the resetting of the columns…"


> On Sep 15, 2017, at 6:37 PM, bernard--- via 4D_Tech <4d_tech@lists.4d.com> 
> wrote:
> 
> Hi all,
> 
> I have a form with two listboxes.
> I wrote some code to manage automatic column width (OBJECT GET BEST SIZE, 
> LISTBOX SET COLUMN WIDTH).
> 
> I build listbox1 with records from Table1 (fill by SQL) ; code for automatic 
> width is executed for LB1.
> When I click on a row of LB1, I fill listbox2 with records from TableN 
> (always by SQL) ; code for automatic width is executed for LB2.
> 
> Why LB1 is redrawn with default width* ?
> 
> * I don't understand column width given by 4D : neither leader with, neither 
> data width...
> 
> I did a new test with automatic width for the two LB : same issue.
> 
> Here is the code (simplified) :
> LISTBOX GET 
> ARRAYS(Listbox1;$Column_ta;$Header_ta;$Column_pa;$Header_pa;$Col_visible_ba;$Style_pa)
> 
> For($i;1;Size of array($Column_pa))
> OBJECT GET BEST SIZE($Column_pa{$i}->;$Width_best1_l;$Height_best_l)
> OBJECT GET BEST SIZE($Header_pa{$i}->;$Width_best2_l;$Height_best_l)
> $Width_best_l:=MTH_Maximum($Width_best1_l;$Width_best2_l)+10
> LISTBOX SET COLUMN WIDTH($Column_pa{$i}->;$Width_best_l)
> LISTBOX SET COLUMN WIDTH($Header_pa{$i}->;$Width_best_l)
> LISTBOX SET COLUMN WIDTH(*;$Header_ta{$i};$Width_best_l)
> LISTBOX SET COLUMN WIDTH(*;$Column_ta{$i};$Width_best_l)
> End for
> 
> LISTBOX GET 
> ARRAYS(Listbox2;$Column_ta;$Header_ta;$Column_pa;$Header_pa;$Col_visible_ba;$Style_pa)
> 
> For($i;1;Size of array($Column_pa))
> OBJECT GET BEST SIZE($Column_pa{$i}->;$Width_best1_l;$Height_best_l)
> OBJECT GET BEST SIZE($Header_pa{$i}->;$Width_best2_l;$Height_best_l)
> $Width_best_l:=MTH_Maximum($Width_best1_l;$Width_best2_l)+10
> LISTBOX SET COLUMN WIDTH($Column_pa{$i}->;$Width_best_l)
> LISTBOX SET COLUMN WIDTH($Header_pa{$i}->;$Width_best_l)
> LISTBOX SET COLUMN WIDTH(*;$Header_ta{$i};$Width_best_l)
> LISTBOX SET COLUMN WIDTH(*;$Column_ta{$i};$Width_best_l)
> End for
> 
> I tried also : 
> 
> $Listbox_t:="Listbox1"
> LISTBOX GET 
> ARRAYS(*;"$Listbox_t";$Column_ta;$Header_ta;$Column_pa;$Header_pa;$Col_visible_ba;$Style_pa)
> 
> Same behavior.
> 
> I see that the second LB takes column width from first LB
> A track : pointer is form.3C.4357.
> I suppose 3C is object ID ; pointers on objects of LB1 and LB2 have same ID...
> **********************************************************************
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **********************************************************************

**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**********************************************************************

Reply via email to