■サイトマップ Search help


Biz/Browserに関する障害レポート


 9610 FlexViewでスクリプトからRowPositionを最下行に指定してもスクロールバーの位置が変更されない  

対象バージョン Biz/Browser XE Ver 4.3.0.4 〜 Biz/Browser V Ver 5.0.1.0

障害内容 スクロールバーが表示されているFlexViewでスクリプトからRowPositionプロパティを指定することにより、カーソル位置を最下行に移動した場合、スクロールバーの位置が変更されずカーソル位置変更前の状態で表示される。
※RowPositionプロパティの値は、正しく反映されます。

[スクリプト例]
 FlexView FlexView1 {
  X = 7;
  Y = 52;
  Width = 221;
  Height = 176;
  FlexRecord FlexRecord1 {
   FlexLabel FlexLabel1 {
    HorizontalAlign = $CENTER;
    Title = "A";
   }
   FlexTextBox FlexTextBox1 {
    Title = "B";
   }
  }
 }
 Button Button1 {
  X = 11;
  Y = 12;
  Width = 211;
  Height = 29;
  Title = "カーソルを最終行へ移動";
  
  Function OnTouch( e ) {
   ^.FlexView1.RowPosition = ^.FlexView1.RowCount - 1;
  }
 }
 if ( !$DESIGNTIME ) {
  FlexView1.InsertRow(20);
  var row_all = FlexView1.GetRow();
  
  var i = 0;
  while(!row_all.end){   
   var row = FlexView1.GetRow(i);   
   ++ i;
   row.FlexLabel1.value = i;
   row_all.moveNext();
  }
 }

要因 FlexViewでスクリプトからRowPositionを指定した際、スクロールバーの位置の更新が正しく反映されていなかった。

対処方法 (方法1) RowPostionを最下行に指定する前に、1行上の行を指定した後で、最下行に指定する。

[スクリプト例]
FlexView FlexView1 {
  X = 7;
  Y = 52;
  Width = 221;
  Height = 176;
  FlexRecord FlexRecord1 {
   FlexLabel FlexLabel1 {
    HorizontalAlign = $CENTER;
    Title = "A";
   }
   FlexTextBox FlexTextBox1 {
    Title = "B";
   }
  }
 }
 Button Button1 {
  X = 11;
  Y = 12;
  Width = 211;
  Height = 29;
  Title = "カーソルを最終行へ移動";
  
  Function OnTouch( e ) {
   ^.FlexView1.RowPosition = ^.FlexView1.RowCount - 2;
   SetTimer(0.1);
  }
  Function OnTimer( e ) {
   RemoveTimer();
   ^.FlexView1.RowPosition = ^.FlexView1.RowCount - 1;
  }
 }
 if ( !$DESIGNTIME ) {
  FlexView1.InsertRow(20);
  var row_all = FlexView1.GetRow();
  
  var i = 0;
  while(!row_all.end){   
   var row = FlexView1.GetRow(i);   
   ++ i;
   row.FlexLabel1.value = i;
   row_all.moveNext();
  }
 }

   ※実際には、最下行位置にスクロールバーは表示されず、少し上にずれて見えます。


(方法2) 改修バージョンへのバージョンアップを行う。
 
改修バージョン

Biz/Browser V Ver 5.0.1.1


■ 障害レポート一覧へ