如何使用Win32 :: GUI重置Perl中的垂直滚动位置?

时间:2009-12-30 03:44:30

标签: perl user-interface scrollbar position

我正在使用Win32::GUI向我创建的文本域输出内容,如下所示:

$Object->AddTextfield(
        -name   => "Birthchart",
        -left   => 75,
        -top    => 90,
        -width  => 250,
        -height => 250,
        -vscroll =>1,
        -multiline => 1,
        -prompt => "Birthchart",        
    );


    {#do something here....
     }
$Object->Birthchart->Append($Content);

问题是:它会自动将我带到输出的末尾,但我想从头开始读取输出而不必向上滚动。可以稍后向下滚动。

我可以使用以下代码

$Object->Birthchart->GetFirstVisibleLine();

获取最上面一条可见线的编号,但是如何将最上面一条可见线的编号设置为0?

代码$ Object-> Birthchart-> ResetFirstVisibleLine()不起作用。

有什么建议吗?提前谢谢。

更新

尝试以下代码

$Object->Birthchart->ScrollPos(1,0);

但它仍然无效。滚动条似乎已重置,但我仍然需要单击滚动条才能查看文本字段内容的开头。

1 个答案:

答案 0 :(得分:1)

解决我的问题:

my @sel =$Object->Birthchart->GetSel();
$Object->Birthchart->Append($Content);
$Object->Birthchart->SetSel(@sel);
$Object->Birthchart->ScrollCaret();
$Object->Birthchart->SetFocus();

ScrollPos似乎已重置滚动条位置但内容尚未更新的原因是因为ScrollPos()仅作用于滚动条。它不会更新文本字段的内容。

非常感谢Anonymous Monk @ perlmonks.org :),原始答案为here