Avatar billede baitianlong Nybegynder
23. maj 2004 - 17:52 Der er 21 kommentarer og
1 løsning

Hjælp til at lave Teksteditor

Hej.

Jeg skal lave en slags teksteditor, og jeg kan ikke helt gennemskue hvordan man skal lave funktionaliteten på knapper som "Bold", "Italic", "Color" osv. Man skal jo kunne slå det til og fra mens man skriver. Jeg har tænkt den skal lave html tags i Strengen når man trykker på en knap, og det er jo ikke noget problem, men når man skal kunne se det samtidig med at man laver det, er det lidt mystisk.

Nogle ideer
Avatar billede bufferzone Praktikant
23. maj 2004 - 17:54 #1
Jeg har en dhtml ting du gerne må bruge. den er integreret i et nyhedssystem.

http://www.bufferzone.dk/pplads/ny.zip
Avatar billede barklund Nybegynder
23. maj 2004 - 17:55 #2
Lang tid siden, legende :)

Der er ikke helt nemt.

Jeg har set en funktion på flashcoders, der konvertere Selection.getBeginIndex og getEndIndex til de faktiske positioner i en html streng. Så kan du nemlig markere en tekst og med en knap for den valgte tekst ind i en <b>her er teksten</b> og dermed lave det bold. Men det kræver jo, at du ved hvilken tekst, der er markeret. Og indekser returneret af Selection giver offset i .text og ikke i .htmlText...

// Morten Barklund
Avatar billede baitianlong Nybegynder
23. maj 2004 - 18:09 #3
Den her virker egentlig meget godt : )) Der skal bare focus tilbage på tekstfeltet også - i slutningen

onClipEvent(load) {
    ison = false;
}
on(release) {
    ison = ison == true ? false : true;
    if(ison) {
        _root.tekst += "<b>";
    } else {
        _root.tekst += "</b>";
    }
    trace(_root.tekst);
}
   
Kan man ikke fuske sig frem til noget her, Barklund ??
Avatar billede barklund Nybegynder
23. maj 2004 - 18:16 #4
Legende!!!

Kan du så bruge Flash MX syntaks istedet for det dér Flash 5 crap... :D

Hvis du kun vil lave, hvad du har herover, så er det enkelt nok:

bold_active = false;
my_txt.htmlText = "Her er en ikke bold tekst";
my_button.onRelease() {
    bold_active = !bold_active;
    my_txt.htmlText += bold_active ? "</b>" : "<b>";
    Selection.setFocus(my_txt);
    Selection.setSelection(my_txt.text.length, my_txt.text.length);
}

Så skulle det vist være der - jeg troede du ville kunne markere tekst skrevet tidligere, men hvis det kun er til at putte det bagerst, så skulle det virke.

Har du forresten fået meldt dig ind i DKMMUG - http://dkmmug.dk

// Morten Barklund
Avatar billede baitianlong Nybegynder
23. maj 2004 - 18:27 #5
SYNTAX ERROR, skal det ikke være noget han ad:

knap.onRelease = function() {
  ....

Så lukker den, men det virker ikke :( måske er min sti forkert, eller noget...
Avatar billede baitianlong Nybegynder
23. maj 2004 - 18:33 #6
...og den slår først til tredie gang (nu hvor det virker), og den hopper en linie ned, når focus gives tilbage

Er det noget du lige kan fikse ? :)
Avatar billede barklund Nybegynder
23. maj 2004 - 18:35 #7
Iiiih :)

bold_active = false;
my_txt.htmlText = "Her er en ikke bold tekst";
my_button.onRelease = function() {
    bold_active = !bold_active;
    my_txt.htmlText += bold_active ? "<b>" : "</b>";
    Selection.setFocus(my_txt);
    Selection.setSelection(my_txt.text.length-1, my_txt.text.length-1);
}
Avatar billede baitianlong Nybegynder
23. maj 2004 - 18:44 #8
Den virker heller ikke... Men denne blanding er smuk:

bold_active = false;
my_txt.htmlText = "";
Selection.setFocus(my_txt);
my_button.onRelease = function() {
    my_txt.htmlText += bold_active ? "</b>" : "<b>";
    bold_active = !bold_active;
    Selection.setFocus(my_txt);
    Selection.setSelection(my_txt.text.length-1, my_txt.text.length);
}

Den laver dog en fejl, nemlig at hoppe et linieskift op (hvis der er nogle) efter tryk..
Avatar billede baitianlong Nybegynder
23. maj 2004 - 18:45 #9
Hvis jeg har -1 med til sidst i setSelection, sker der ikke noget med fonten, når man trykker... Det er lidt syret
Avatar billede barklund Nybegynder
23. maj 2004 - 18:51 #10
Hvad med bare:

Selection.setSelection(my_txt.text.length-1);
Avatar billede baitianlong Nybegynder
23. maj 2004 - 18:55 #11
Nej så bliver hele teksten markeret

Det virker perfekt, indtil man trykker return og derefter slår bold til eler fra, så sletter den linieskiftet, (måske fordi den validerer html koden og finder <p></p>, eller et eller andet)
Avatar billede baitianlong Nybegynder
23. maj 2004 - 19:06 #12
http://www.legende.dk/teksteditor.html

prøv at skrive noget, lav linieskift, tryk bold og skriv :(
Avatar billede barklund Nybegynder
23. maj 2004 - 19:12 #13
Hm, man kan haxe det lidt ved at detecte, hvilken tast der sidst blev trykket ned, men det er jo ikke optimalt.

Skal ikke lige kunne sige, hvorfor den gør således. Prøv at trace .text efter du har lavet et linjeskift og trykket på knappen. Slutter den så med et "\n"?
Avatar billede barklund Nybegynder
23. maj 2004 - 19:13 #14
(se forresten den fine karma du nu har :))
Avatar billede baitianlong Nybegynder
23. maj 2004 - 19:18 #15
Jeg er rørt :p Hvor er jeg dog karismatisk...

Anyway. på den jeg har uploadet med linket ovenfor skriver jeg hele variablen ud nederst, som du kan se - ved linieskift indsætter den <p></p> og lidt mere
Avatar billede barklund Nybegynder
23. maj 2004 - 19:27 #16
Lad os prøve noget andet - nemlig at gemme positionen ved ændringer:

bold_active = false;
my_txt.htmlText = "";
Selection.setFocus(my_txt);
var pos = -1;
my_txt.onChange = function() {
    pos = Selection.getCaretIndex();
}
my_button.onRelease = function() {
    my_txt.htmlText += bold_active ? "</b>" : "<b>";
    bold_active = !bold_active;
    Selection.setFocus(my_txt);
    Selection.setSelection(pos-1, pos);
}

// Morten Barklund

(husk at give karma retur for god karmas skyld :))
Avatar billede baitianlong Nybegynder
23. maj 2004 - 19:33 #17
Nej, det er desværre ikke smukt. Den hopper hen til starten og laver heller ikke bold

onChange bliver ikke blå i scriptet, men den brokker sig ikke
Avatar billede barklund Nybegynder
23. maj 2004 - 19:37 #18
hm, måske den hedder .onChanged i stedet...
Avatar billede baitianlong Nybegynder
23. maj 2004 - 19:39 #19
Det hed den... Men det virker ikke - Den hopper hen og markerer sidste tegn, men laver ikke bold.

Og Ak ja, sidste linie skift spises også, men det er jo fordi det er markeret. Hey, det er da derfor. Når man taster noget udskifter man det markerede linieskift

Nu også med Karma :)
Avatar billede kragekjaer Praktikant
26. maj 2004 - 03:09 #20
Hvorfor al den fuzz, når der er serveret på http://www.joshdura.com/archives/000163.php
Avatar billede baitianlong Nybegynder
20. august 2004 - 01:33 #21
kragekjaer og bufferzone. -> Jeg er desværre ikke interesseret i færdige løsninger, jeg skal fatte det selv, før det er brugbart for mig.

Barklund. -> Beklager min evendelige Flash5 syntax, men den er jo så rørende. Jeg tror ikke Flash er værktøjet at lave dette i, så jeg har rodet en måneds tid med det i Java, og det tegner lovende :s

Men tak til alle :)
Avatar billede barklund Nybegynder
20. august 2004 - 10:05 #22
Jamen tak for points anyways. Java er et langt bedre bud :)
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