Italian community of Lazarus and Free Pascal
Programmazione => Lazarus e il web => Topic aperto 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
-
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 ;)
-
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à.
:)
-
che ci sono altri a cui servirà ci puoi contare ;)
intanto auguri per lo smaltimento, ne abbiamo bisogno tutti ;)
-
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
-
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 ... ;)
-
Se non ricordo male, per lo scroll del testo c'era qualcosa nella libreria Jedi :)
-
Certo Legolas Luke SkyWalker, ma era verticale e non orrizonatale, se la memoria mi è d'aiuto ;)
(Che la forza sia con te ;) )
-
Ecco, adesso mi hai messo la pulce nell'orecchio e devo installarmi la JVCL per controllare ;D
-
a memoria le JVCL non sono compatibili con FCL
le funzioni JCL invece in qualche modo si possono convertire
-
Eh, infatti... Forse era la libreria RX? ???
-
Che ha SecretPanel, con il controllo di direzione dello scroll (verticale e orrizontale, come opzioni possibili)
-
non ricordo...
ho una certa età :P
-
Nomore, ho installato RXLib su Lazarus.
Ho controllato, le properties, ricordavo il componente... ma non cosa faceva di preciso ;)
-
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