Avatar billede jakwag Nybegynder
27. april 2005 - 15:04 Der er 5 kommentarer og
1 løsning

endIndex og beginIndex

Hej

Jeg har et textfield (txtText) og en button (bTest).

Nu vil jeg gerne have at man kan markere noget tekst klikke på knappen og så tracer den begin og end index. Problemmet er at når man klikker på knappen, er tekstfeltet ikke længere i focus og så vil både begin og end give 0.

Jeg har løst det som under her, men jeg synes det er en lidt klumpet løsning. Er der nogen andre gode bud på hvordan det kan løses?

txtText.onKillFocus = function()
{
    looper.removeMovieClip();
};
txtText.onSetFocus = function()
{
    createEmptyMovieClip("looper", 1);
    looper.onEnterFrame = function()
    {
        bIndex = Selection.getBeginIndex();
        eIndex = Selection.getEndIndex();
    };
};
bTest.onRelease = function()
{
    trace(bIndex+" : "+eIndex);
};


: ) jakob
Avatar billede pyroman Nybegynder
27. april 2005 - 15:29 #1
Yes... flash er lidt mystisk på det område... Men denne er nok en bedre metode:


var mouseListener = new Object();
mouseListener.onMouseDown = function(){
  if(Selection.getFocus() == "_level0.txt"){
    bIndex = Selection.getBeginIndex();
    eIndex = Selection.getBeginIndex();
  }
};
Mouse.addListener(mouseListener);
Avatar billede pyroman Nybegynder
27. april 2005 - 15:32 #2
Du skal så bare lige ændre "_level0.txt" til stien til dit eget tekstfelt - det skal være en streng!!
Avatar billede jakwag Nybegynder
27. april 2005 - 15:44 #3
Tjo, det virker men der to problemmer.

1. Der skal være flere knapper man kan trykke på, det skal altså ikke bare være ved klik, men ved klik på en knap. Så kunne man selvfølgelig lave noget hiTest halløj.

2. getFocus returnere altid en absolut stig, jeg vil gerne bruge relative.
Avatar billede pyroman Nybegynder
27. april 2005 - 16:14 #4
Ok så skidt da...

1) Scriptet her har intet med knapperne at gøre - det skal kun bruges til at fange den markerede tekst og gemme indekserne i variablerne bIndex og eIndex, så de kan bruges netop når der trykkes på knapperne... - Jeg foreslår desuden at du på knapperne smider lidt kode på så, markeringen genopstår selvom tekstfeltet har mistet fokus:

minKnap.onPress = function(){
  Selection.setFocus(mitTekstFelt);
  Selection.setSelection(bIndex, eIndex);
};


2) Man kan omsætte strengen fra Selection.getFocus til en direkte reference med eval():

var mouseListener = new Object();
mouseListener.onMouseDown = function(){
  if(eval(Selection.getFocus()) == mitTekstFelt){
    bIndex = Selection.getBeginIndex();
    eIndex = Selection.getBeginIndex();
  }
};
Mouse.addListener(mouseListener);
Avatar billede jakwag Nybegynder
27. april 2005 - 16:29 #5
ah.. ok, ja nu kan jeg se hvor du vil hen. Tak for hjælpen og kom med et svar.
Avatar billede pyroman Nybegynder
27. april 2005 - 21:42 #6
Hehe - det var da rart :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester