#-- This is a code snipet from a Dual Listbox control dialog which
allows 
#-- the user to reorder the columns of a ListView "on-the-fly".  The
order
#-- of columns saved is saved in a MS-ACCESS table for each unique
username
#-- so that the user will retain those column order settings for future
#-- sessions.  
#--  
#-- BUG REPORT: 
#-- I am noticing column 0 of the Listview is much wider than the
#-- width of the column header text?  This appears to be a bug in the
#-- widget. See code below for setting column widths. 

#####################
sub BTN_Save4_Click {
#####################   
   my $ls_text;          #-- local scalar
   my $ls_sel;
   my $ls_i;
   my $ls_sqltxt;
   my $ls_ret;
   my $ls_error;
   my $ls_len;

   #-- if all column names have not been selected from left listbox,
return. 
   if ($LB_List1->Count() > 0) {return 1;}

   @ga_ColumnOrder=();
   %gh_ColumnOrder=();
   %gh_ColumnList=();
 
   $ls_sqltxt = "UPDATE tblColumnOrder SET ";
    
   for ($ls_sel=0;$ls_sel<=36;$ls_sel++) {
      $ls_text=$LB_List2->GetString($ls_sel);
      $gh_ColumnOrder{$ls_sel}=$ls_text;
      $gh_ColumnList{$ls_text}=$ls_sel;
      $ga_ColumnOrder[$ls_sel]=$gh_OrigColumnList{$ls_text};
      $ls_sqltxt = $ls_sqltxt . "[" . $ls_text . "]=" . $ls_sel . ",";
   }

   $LV->SetColumnOrderArray(@ga_ColumnOrder);
   $LV->RedrawItems(0,$LV->Count()-1);
   for($ls_i=0;$ls_i<=36;$ls_i++) {
      $LV->SetColumnWidth($ls_i,-2);  #-- adjust to fit column header
text 
   }
   #-- for some reason, column 0 stretches out wide way! past the width
of
   #-- the column header text?  All other columns are as wide as header
   #-- text.   This appears to be a bug in the widget. 

   $ls_len=length($ls_sqltxt);
   $ls_sqltxt=substr($ls_sqltxt,0,($ls_len-1)); 
   $ls_sqltxt=$ls_sqltxt . " WHERE username = '" . $gs_LoggedUser . "'";


   ...
}

Reply via email to