2009-12-30 8 views
1

Je suis sortie quelque chose à l'textfield je créé à l'aide Win32::GUI, comme ceci:Comment réinitialiser la position de défilement vertical en Perl à l'aide de 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); 

Le problème est le suivant: il me prend automatiquement à la fin de la sortie, mais je veux lire la sortie depuis le début sans avoir à faire défiler vers le haut. C'est correct de faire défiler plus tard.

je peux utiliser le code suivant

$Object->Birthchart->GetFirstVisibleLine(); 

pour obtenir le numéro de la ligne supérieure visible, mais comment puis-je régler le nombre de la première ligne visible à 0?

Le code $ Objet-> Birthchart-> ResetFirstVisibleLine() ne fonctionne pas.

Des suggestions? Merci d'avance.

Mise à jour

Essayé le code suivant

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

Mais il ne fonctionne toujours pas. La barre de défilement semble être réinitialisée mais je dois encore cliquer sur la barre de défilement pour voir le début du contenu du champ de texte.

+0

La meilleure chose à faire lorsque vous avez la solution est de répondre à votre propre question. De cette façon, il ne reste pas "sans réponse". (Vous êtes autorisé à répondre à votre propre question) – Mike

+0

Mais la réponse n'est pas à moi. Quelqu'un d'ailleurs a résolu mon problème. Est-il correct que je fournisse la réponse de quelqu'un d'autre à ma propre question? – Mike

+1

Je dis que vous publiez la réponse que vous avez obtenue et l'attribuez à la source d'où vous l'avez obtenue. Donc, vous pourriez obtenir un peu de rep, mais peut-être que vous le méritez pour ajouter la réponse à SO> :) –

Répondre

1

Le correctif à mon problème:

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

La raison pour laquelle ScrollPos semble avoir réinitialiser la position de la barre de défilement, mais le contenu n'a pas été mis à jour est parce que ScrollPos() n'agit sur la barre de défilement. Il ne met pas à jour le contenu du champ de texte.

Un grand merci à Anonymous Monk @ perlmonks.org :) et la réponse originale est here.

Questions connexes