Crearea unei linii târâtoare în delphi, damir fattah

Asa cum ati ghicit deja, astazi vom face o linie de alergare in aplicatia noastra Delphi.
Într-o zi am luat un fel de tEditează \ „o, nu numai cu o staționare și o linie de rulare (toate caracterele pe care pur si simplu nu amesteca, și a fost necesar să se arate tot ...) Deci, m-am întrebat cum să o fac. Astăzi vă voi spune două modalități de a rezolva această problemă. Asa cum ati ghicit deja, astazi vom face o linie de alergare in aplicatia noastra Delphi.






Într-o zi am luat un fel de tEditează \ „o, nu numai cu o staționare și o linie de rulare (toate caracterele pe care pur si simplu nu amesteca, și a fost necesar să se arate tot ...) Deci, m-am întrebat cum să o fac. Astăzi vă voi spune două modalități de a rezolva această problemă.

Prima cale, mi-a venit prima dată în minte. Redați cu proprietatea Text Edit \ a, adică După o anumită perioadă de timp, "mișcați" linia însăși. Sub compensare, înțeleg ștergerea primului caracter al liniei și adăugarea celei noi. Astfel, primim ciclul textului de care avem nevoie.
Pentru a face acest lucru, abandonăm un cronometru în formular, o TEdit și declarăm variabila globală i imediat după implementarea cuvântului. în mod prestabilit, ar trebui să fie egal cu unul, adică anunțul ei va arăta astfel:

var
i: intreg = 1;
...

Codul temporizatorului va arăta astfel:

Pentru ca această metodă să funcționeze corect, trebuie să inițiați textul inițial. Editare A fost umplut cu ceva. Than - nu contează. Acest lucru se va vedea doar la început. Poți să iei o grămadă de spațiu alb. Dar lungimea textului va rămâne constantă, adică ce a fost, așa și rămâne ...
Această metodă, bineînțeles, este bună. Dar nu este foarte convenabil să treci linii la ea, și dacă șirul ar trebui să se schimbe, de asemenea, periodic, este complet incomod. În plus, deplasarea are loc prin simbol după caracter, care, dacă privești cu atenție, este vizibilă. Și am vrut ca deplasarea să fie cât se poate de bună și nu am vrut să codific acest cod "teribil" - nu era prea mult timp.

Când am folosit a doua metodă. Iar ideea este că nu trebuie să reinventezi roata dacă e deja inventată. Strângeți creierul și amintiți-vă vechiul HTML vechi. Opa! Și există deja implementat o linie de funcționare excelentă! MARQUEE și-a adus aminte? Dacă nu, amintiți-vă acum. )

Această etichetă cu atribute arată cam așa:


Textul unei linii de rulare

înălțimea - înălțimea liniei de rulare. În acest caz, acesta este măsurat în procente
lățimea - lățimea liniei târâtoare. În acest caz, măsurat în pixeli
comportament - comportamentul șirului. Poate fi:

  • Derulați - derularea obișnuită (nu puteți prescrie, este implicit)
  • Slide - derulează cu un opritor, linia rulează până la margine și se oprește.
  • Alternativ - linia se va deplasa de la margine la margine.





    Direcție - specifică direcția de deplasare a liniei de rulare. Poate fi lăsată (dreapta, în sus, în jos) - se mișcă la stânga (în dreapta, în sus, în jos). Mișcarea spre stânga nu poate fi prescrisă, este mișcarea implicită.
    Scrollamount - viteza liniei. Pot avea valori de la 1 la 10.
    Desigur, pentru linia derulantă, puteți specifica și alte atribute HTML (hspace, vspace și aliniere).

    Puteți vedea un exemplu de linie de rulare la începutul acestui articol. Codul său arată astfel:


    Aceeași linie înfiorătoare va fi în aplicația dvs. Delphi

    Eticheta mică face fontul textului mai mic, în raport cu textul principal.

    Ei bine, teoria a fost repetată. ) Acum, să abordăm problemele de implementare.
    După cum probabil ați ghicit, arată site-ul nostru, vom TWebBrowser => pentru a afișa textul defilare vom folosi Internet Explorer (sau, mai degrabă, TWebBrowser utilizează IE). Prin urmare, acesta va fi întotdeauna afișat la fel! Prin urmare, nu există probleme cu diferența în browsere! Acest lucru este bun.
    Dar, cum să afișăm pagina noastră dacă TWebBrowser nu poate deschide decât paginile existente? Este foarte simplu. Nu vom salva pagina noastră HTML pe disc - nu respectabil. ) Pentru a afișa pagina, utilizați secțiunea despre. Pe scurt, acest protocol, dacă creați un șir ca "despre
    . Codul nostru HTML "și să treacă această linie ca parametru pentru TWebBrowser.Navigate, atunci pagina noastră va fi afișată corect. De exemplu:

    Acest cod ne va arăta pagina cu un fundal roșu, în mijlocul căruia pe prima linie va fi inscripția "Hello, Dem @ nXP!" Cu litere negre.
    Și de ce nu afișăm aceeași linie de rulare? Încercăm. )

    WebBrowser1.Navigate (\ 'aproximativ
    :
    Aceeași linie îngrozitoare va fi și în aplicația dvs. Delphi. ');

    Urrryaya! Totul funcționează! Deci, acum vom aduce totul la specia umană, adică Efectuați dimensiunile WebBrowser-ului nostru în funcție de dimensiunea Editare a. În așteptarea cazului finit, lansați cererea și ... nu era acolo! Acele bare de defilare! Și linia însăși nu este de la vârf! Msja, vom trata ...
    În HTML, există concepte de liniuțe inferioare, superioare, stânga și dreaptă din marginile paginii. Și dacă le-am resetat?

    WebBrowser1.Navigate (\ 'aproximativ
    :
    Aceeași linie îngrozitoare va fi și în aplicația dvs. Delphi. ');

    Uh-huh. Mai bine - dacă faceți loc pentru barele de derulare, veți vedea că linia noastră este strâns adiacentă marginilor TWebBrowser \ 'a. Dar barele de defilare strică întreaga vedere! Iată-ne acum și elimină-i. )
    Și ele sunt curățate pur și simplu: în eticheta corporală, scrie scroll = "nu". Toate ingenios este simplu :). Efectuând dimensiunea WebBrowser \ 'a' normal '(am înălțimea = 20 și lățimea = 167), modificați textul la:

    WebBrowser1.Navigate (\ 'aproximativ
    . \ 'Rightmargin = "0" bottommargin = "0" scroll = "nu">
    Aceeași linie înfiorător va fi în \ '+
    \ "Aplicația Delphi \");

    Și ne bucurăm de viață: acum totul funcționează! Ei bine, pentru fericirea completa, puteți lega dimensiunile unei linii de rulare cu dimensiunile browserului. Acest lucru se face astfel:

    WebBrowser1.Navigate (\ 'aproximativ
    . \ 'Rightmargin = "0" bottommargin = "0" scroll = "nu">
    Același \ '+
    \ 'Linia de funcționare va fi în aplicația dvs. Delphi \');

    Acum, chiar dacă încercăm să derulam (pagina noastră de navigare sau butonul mouse-ului) pagina noastră, linia de defilare încă nu își schimbă traiectoria. WebBrowser1.height-5 se face doar pentru acest lucru.

    În final, toate acestea pot fi frumos decorate într-o singură procedură:

    procedura SetRunText (Web: TWebBrowser; Text: șir);
    începe
    Web.Navigate (\ 'despre
    . \ 'Rightmargin = "0" bottommargin = "0" scroll = "nu">
    \ '+ Text +
    \ '\');
    se încheie;

    Ei bine, sau imediat pentru a transfera în procedură și toate ajustările:

    procedura SetRunTextProfy (Web: TWebBrowser; Text, bgcolor, comportament, directie: string; viteza: integer);
    începe
    Web.Navigate (\ 'despre
    . \ 'Rightmargin = "0" bottommargin = "0" scroll = "nu">
    \ '
    +Text + \ '\');
    se încheie;

    Dacă doriți să lăsați setările implicite, puteți pur și simplu să treceți linii goale în parametrii necesari. Această procedură poate fi extinsă în continuare: de exemplu, pentru a transfera culoarea nu printr-o linie, ci de către TColor \ 'om. Dar o vei face tu insuti :)







    Trimiteți-le prietenilor: