Italian community of Lazarus and Free Pascal

Programmazione => Lazarus e il web => Topic aperto da: aserini - Dicembre 21, 2012, 06:56:36 pm

Titolo: Scorrere ticker web su form
Inserito da: aserini - Dicembre 21, 2012, 06:56:36 pm
Salve e auguri a tutti.
Sono un neofita di Lazarus con sufficienti nozioni di Delphi 4/5 e sto realizzando una semplicissima procedura di gestione code per un servizio al pubblico che aggiorna il numero da servire in base al servizio richiesto.
Mi è stato chiesto di poter far scorrere alla base della form uno di quei ticker con le news dal sito della Adnkronos.
Ci sono esempi di codice da studiare?
Grazie
Titolo: Re:Scorrere ticker web su form
Inserito da: nomorelogic - Dicembre 22, 2012, 09:34:17 am
ciao aserini e auguri anche a te ;)

Per lo scorrimento di una label non credo serva cercare in giro, potresti giocare sulla proprietà Left della TLabel decrementandola di 1 con un timer.
Se ti va di fare qualcosa di più "spericolato", si potrebbe usare un TCanvas nascosto su cui scrivere con TextOut (così lo puoi creare della lunghezza necessaria per tutta la label e puoi anche farci qualche disegnino natalizio o robe del genere): un po' come si fa per i videogiochi insomma. Con il timer calcoli l'offset e disegni una porzione del canvas nascosto in un altro canvas visibile. Credo che così potresti raggiungere un bel risultato.

Riguardo le info da prelevare, ho visto che su Adnkronos (ovviamente) hanno anche gli RSS...
Se dai un'occhiata al link qua sotto magari trovi qualche spunto utile
http://www.lazarus.freepascal.org/index.php/topic,18925.msg107605.html#msg107605 (http://www.lazarus.freepascal.org/index.php/topic,18925.msg107605.html#msg107605)
L'idea sarebbe quella di prelevare info dal sito tramite RSS e poi mostrarle con la tecnica vista sopra.

ciao e facci sapere ;)
Titolo: Re:Scorrere ticker web su form
Inserito da: aserini - Dicembre 22, 2012, 10:05:01 pm
Grazie per la dritta; dopo lo smaltimento dei panettoni (leggi dal 7 gennaio) proverò a scaricare easyrss e a giocarci un po'.
Se riesco a farlo passerò il codice, magari ci sono altri newbies a cui servirà.
 :) 
Titolo: Re:Scorrere ticker web su form
Inserito da: nomorelogic - Dicembre 24, 2012, 10:09:07 am
che ci sono altri a cui servirà ci puoi contare ;)
intanto auguri per lo smaltimento, ne abbiamo bisogno tutti ;)
Titolo: Re:Scorrere ticker web su form
Inserito da: aserini - Gennaio 02, 2013, 09:31:59 am
Ciao, come promesso torno a dirvi dei miei "progressi" (è una parolona!).
Ho scaricato il pacchetto TRSSParser-master, che vuole l'installazione del package synapse40, e con quello scarico l'RSS di ADNKronos in due TStringList, una con i titoli e una con il corpo delle news.
Poi ho messo un timer che ha nell'evento OnTimer un semplice codice:
if length(trim(label1.caption) )=0 then
 begin
   label1.caption:='';
   Timer1.Enabled:= False;
   label1.Visible:= false;
 end
 else
 begin
   label1.Visible:= true;
   label1.caption:= RightStr(label1.caption,
   Length(label1.caption)-1);
   Timer1.Enabled:= True;
 end;
Ora devo lavorare per ripulire le stringhe del corpo delle news dai codici html, penso che il componente THTMLViewer dovrebbe fare al mio caso, che ne pensate?
Spero che possa servire ad altri, magari alla fine posso mettere a disposizione tutto il codice anche se è veramente poca roba.
Ciao
Titolo: Re:Scorrere ticker web su form
Inserito da: Stilgar - Gennaio 02, 2013, 11:22:43 am
Se vuoi giocare pixel per pixel va bene come diceva nomorelogic, ma se vuoi usare THTMLViewer come motore di rendering, allora ti consiglio di giocare sui caratteri e fare il loop di scorrimento con il gioco delle tre carte.
Mi spiego.
Fai sparire il carattere alla posizione [1] della stringa.
Con una bella move, sposti tutti i caratteri (dal 2 in poi) alla posizione 1.
Se vuoi fare in modo che ricompaiano alla fine, la cosa è molto semplice da realizzare.
Salvi il carattere 1 in una variabile, sposti tutta la stringa a sinistra, copi il carattere salvato all'ultima posizione.
Con un numero sufficiente di spazi alla fine del testo originale, poi far capire che l'anello è ripartito. In pratica è come fanno le radio per farti vedere il terso che "sborda" dal display con l'RDS ... per darti l'idea dell'effetto finale.
Se vuoi che il testo "rimbalzi" a destra e a sinistra, decidi quanti caratteri "nascondere" e poi inverti il ciclo di spostamento. Prima a sinistra, poi a destra.
...
Ok, mi divertivo a fare queste cavolate in seconda superiore con turbo pascal 3.3. Il  prof di fisica di gasava come un mostro a vedere queste cavolate. Mi alzava il voto delle prove di laboratorio in questo modo ... ;)
Titolo: Re:Scorrere ticker web su form
Inserito da: Legolas - Gennaio 02, 2013, 11:31:43 am
Se non ricordo male, per lo scroll del testo c'era qualcosa nella libreria Jedi  :)
Titolo: Re:Scorrere ticker web su form
Inserito da: Stilgar - Gennaio 02, 2013, 11:34:10 am
Certo Legolas Luke SkyWalker, ma era verticale e non orrizonatale, se la memoria mi è d'aiuto ;)
(Che la forza sia con te ;) )
Titolo: Re:Scorrere ticker web su form
Inserito da: Legolas - Gennaio 02, 2013, 11:41:33 am
Ecco, adesso mi hai messo la pulce nell'orecchio e devo installarmi la JVCL per controllare  ;D
Titolo: Re:Scorrere ticker web su form
Inserito da: nomorelogic - Gennaio 02, 2013, 11:47:50 am
a memoria le JVCL non sono compatibili con FCL
le funzioni JCL invece in qualche modo si possono convertire
Titolo: Re:Scorrere ticker web su form
Inserito da: Legolas - Gennaio 02, 2013, 11:53:48 am
Eh, infatti... Forse era la libreria RX?  ???
Titolo: Re:Scorrere ticker web su form
Inserito da: Stilgar - Gennaio 02, 2013, 11:56:24 am
Che ha SecretPanel,  con il controllo di direzione dello scroll (verticale e orrizontale, come opzioni possibili)
Titolo: Re:Scorrere ticker web su form
Inserito da: nomorelogic - Gennaio 02, 2013, 11:57:30 am
non ricordo...
ho una certa età :P
Titolo: Re:Scorrere ticker web su form
Inserito da: Stilgar - Gennaio 02, 2013, 12:00:41 pm
Nomore, ho installato RXLib su Lazarus.
Ho controllato, le properties, ricordavo il componente... ma non cosa faceva di preciso ;)
Titolo: Re:Scorrere ticker web su form
Inserito da: aserini - Gennaio 03, 2013, 09:58:28 am
Se vuoi giocare pixel per pixel va bene come diceva nomorelogic, ma se vuoi usare THTMLViewer come motore di rendering, allora ti consiglio di giocare sui caratteri e fare il loop di scorrimento con il gioco delle tre carte.
Mi spiego.
Fai sparire il carattere alla posizione [1] della stringa.
Con una bella move, sposti tutti i caratteri (dal 2 in poi) alla posizione 1.
Se vuoi fare in modo che ricompaiano alla fine, la cosa è molto semplice da realizzare.
Salvi il carattere 1 in una variabile, sposti tutta la stringa a sinistra, copi il carattere salvato all'ultima posizione.
Con un numero sufficiente di spazi alla fine del testo originale, poi far capire che l'anello è ripartito. In pratica è come fanno le radio per farti vedere il terso che "sborda" dal display con l'RDS ... per darti l'idea dell'effetto finale.
Se vuoi che il testo "rimbalzi" a destra e a sinistra, decidi quanti caratteri "nascondere" e poi inverti il ciclo di spostamento. Prima a sinistra, poi a destra.

Ciao e grazie; ho usato in parte il tuo suggerimento, con una piccola modifica: invece di ripartite con la stessa caption in modo "circolare" uso una variabile globale per il testo da scorrere. Quando ho scritto l'ultimo carattere (length(trim(caption)) = 0) ricarico la variabile nella caption. L'ho fatto perchè sto preparando un altro timer che ogni x minuti rilegge le news dal feed RSS e/o cicla su più feed. In questo modo il timer della label ricarica la variabile che nel frattempo è stata aggiornata dall'altro processo. Quanto al rendering per ora mi fermo ai titoli delle news, modello RDS della radio per citarti, per problemi di visualizzazione degli elementi multimediali (video, immagini ecc.) che richiederebbero un panel apposito e occuperebbero troppo spazio nella form.

Bye e buon lavoro a tutti