* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Aprile 16, 2024, 08:50:56 pm

Inserisci il nome utente, la password e la durata della sessione.

59 Visitatori, 0 Utenti

Autore Topic: [Risolto] colorare testo e sfondo di oggetti grafici  (Letto 1523 volte)

petrusic

  • Hero Member
  • *****
  • Post: 588
  • Karma: +0/-0
[Risolto] colorare testo e sfondo di oggetti grafici
« il: Novembre 22, 2020, 05:23:40 pm »
Mi rendo conto che senza il vostro aiuto non posso andare avanti.
Mi si presenta almeno un problema al giorno che diventa, regolarmente, un monte da scalare.
Da alcuni giorni cerco di colorare il testo di un TButton.Caption, ma niente da fare, non ci riesco.
Ho provato a cercare la soluzione fra le guide disponibili sul web, ma non sono capace a trovare quella giusta.
E allora come fare?
Visto che non c'è una proprietà corrispondente fra quelle disponibili per il TButton, penso che dovrei farlo da codice. Ma come?
Pensavo a qualcosa simile a:
"mioPulsante.proprietaColore = &H000080&    // colore blu"
oppure
"mioPulsante.Caption.proprietaColore = &H000080&
Ma qual'è la parolina magica che vale come "proprietaColore"?


« Ultima modifica: Agosto 28, 2021, 11:12:41 pm da petrusic »
ciao ciao

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:colorare testo e sfondo di oggetti grafici
« Risposta #1 il: Novembre 22, 2020, 06:23:03 pm »
Molto semplicemente vai dall'object inspector, seleziona il pulsante e poi vai in

Font->Color e selezioni quello che vuoi
Ieri è passato, domani è futuro, oggi è un dono...

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2870
  • Karma: +20/-4
Re:colorare testo e sfondo di oggetti grafici
« Risposta #2 il: Novembre 22, 2020, 06:25:42 pm »
Lazarus demanda il rendering dei TButton al sistema operativo nel quale gira l'applicazione.
E' per questo che non puoi cambiare sfondo e colore del testo.

Se è sufficiente cambiare il colore del testo, puoi usare TSpeedButton, in alternativa puoi:
  • passare per custom draw (devi disegnarlo tu il bottone)
  • usare i bottoni nel package BGRAControls
Imagination is more important than knowledge (A.Einstein)

petrusic

  • Hero Member
  • *****
  • Post: 588
  • Karma: +0/-0
Re:colorare testo e sfondo di oggetti grafici
« Risposta #3 il: Novembre 22, 2020, 10:45:45 pm »
Grazie per le vostre risposte.
Ho provato così: Ho sostituito il TButton con TSpeedButton, poi:
Codice: [Seleziona]
procedure TForm21.FormCreate(Sender: TObject);
begin
  PulsFine.Font.Color:= $003232E6;          // questo funziona. Il testo è comparso colorato in  rosso
  PulsFine.Color:= $0000FAD0;               // questo invece NON funziona. Lo sfondo non ha cambiato colore
end;
Ho capito solo in parte quello che mi avete suggerito, oppure quanto funziona per il testo non vale per lo sfondo?
ciao ciao

schumi

  • Full Member
  • ***
  • Post: 219
  • Karma: +1/-0
Re:colorare testo e sfondo di oggetti grafici
« Risposta #4 il: Novembre 23, 2020, 08:57:28 am »
ciao,
se non ricordo male lo sfondo è legato al "tema" del SO, al tempo per fare bottoni colorati avevo usato quelli BGRAControls come suggerito da nomorelogic, li installi da OPM, devi solo perderci un po' di tempo a capire come funzionano (sfumature ecc) ma ci sono degli esempi oppure leggi qua https://wiki.freepascal.org/BGRAButton_Gallery

petrusic

  • Hero Member
  • *****
  • Post: 588
  • Karma: +0/-0
Re:colorare testo e sfondo di oggetti grafici
« Risposta #5 il: Novembre 23, 2020, 11:46:52 am »
Ho capito. Speravo che fosse più semplice.
Penso che per ora rinunzierò a  BGRAControls.
 ::) ???
ciao ciao

petrusic

  • Hero Member
  • *****
  • Post: 588
  • Karma: +0/-0
Re:colorare testo e sfondo di oggetti grafici
« Risposta #6 il: Agosto 23, 2021, 10:31:04 pm »
Riprendo questa discussione perchè vorrei completare il mio escursus iniziale di apprendimento su lazarus free pascal.
Sfruttare l'ambiente grafico, significa, per me, attribuire caratteristiche peculiari per le schermate componenti in progetto che aiutano l'utente anche attraverso i colori di cui presenti all'interno dei vari controlli contenuti in una Form.
A causa dl caldo, ho trascurato la programmazione e Lazarus da qualche mese. Ora vorrei riprendere, ma non riesco a pensare ad un progetto con form ed alle sue aree grafiche , senza immaginarle colorate, mentre fino ad ora le ho potuto utilizzare tutte uniformemente grigie, con il testo sempre nero.
Tanto per fare un esempio, io vorrei riuscire ad ottenere effetti grafici identificativi all'occhio dell'utente come quelli che sono riuscito a realizzare nelle tante Form di un mio progetto scritto in Gambas e di cui riporto un'immagine esemplificativa per spiegare in maniera intuitiva  quello che voglio dire.
In Gambas tutto è molto semplice, In Lazarus posso ottenere un effetto simile?

La Form allegata può assumere , nell'area di digitazione, una colorazione di sfondo diversa, a seconda della natura del movimento corrente, passando dal rosa al celeste e viceversa, permettendo così di aiutare l'utente a capire, ad occhio, quale tipo di movimentazione sta impostando.

« Ultima modifica: Agosto 23, 2021, 10:39:07 pm da petrusic »
ciao ciao

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1266
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:colorare testo e sfondo di oggetti grafici
« Risposta #7 il: Agosto 24, 2021, 12:49:37 am »
Ciao, alcuni controlli standard (ad esempio i TButton, come qualcuno ti ha già postato) vengono disegnati dal sistema operativo e con poche opzioni di variante, mentre altri controlli pur venendo sempre parzialmente disegnati dal sistema operativo hanno più opzioni. Ulteriormente su altri controlli a base grafica si può "disegnare" abbastanza liberamente.

In genere comunque su tutti i controlli di qualsiasi tipo si dovrebbe comunque poter effettuare il "rendering proprietario" (custom draw), opzione che consente di "disegnare" il controllo a libera fantasia dell'utente. (EDIT ..... in effetti non è proprio sempre così  ::) )

Ad esempio puoi facilmente riempire lo sfondo di un pulsante con un colore a tua scelta e usare un altro colore per la "caption", ma per fare un bel lavoro, con effetto 3d e sfumature come normalmente viene disegnato dal sistema operativo .... bhè ci vuole un pò di lavoro dietro.
Se poi pensiamo che gli stati grafici di un controllo sono innumerevoli allora ..... (N.B.: qualcuno dirà che gli stati sono 4 .... invece no ce ne sono molti di più perchè graficamente possono essere combinati).

Io ad esempio in diversi progetti uso una cella della griglia (TStringGrid) per disegnarci dentro due valori contemporaneamente, in particolare le tolleranze di una misura (ad esempio +0,015 e - 0,130) in modo che compaiano graficamente allineati al valore della misura scritta nella cella affiancata. L'effetto è molto bello e consente all'operatore di avere un quadro chiaro ed immediato della situazione. Uso il colore di sfondo (anzi i colori  degli sfondi) anche per identificare qual'è la tolleranza che eventualmente non è stata rispettata.

Ciò che vuoi fare, rispetto a quanto hai già fatto è facile e senza dispendio di energie.

Domani ti posto un progetto di base da cui puoi prendere spunto.

Bye
« Ultima modifica: Agosto 24, 2021, 01:45:21 am da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1266
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:colorare testo e sfondo di oggetti grafici
« Risposta #8 il: Agosto 24, 2021, 01:47:16 am »
Progetto base, ma molto base per la modifica dei font e dei colori di una TEdit e un TPanel "in corso d'opera".

Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

petrusic

  • Hero Member
  • *****
  • Post: 588
  • Karma: +0/-0
Re:colorare testo e sfondo di oggetti grafici
« Risposta #9 il: Agosto 25, 2021, 07:28:51 pm »
ti posto un progetto di base da cui puoi prendere spunto.
...
ti posto un progetto di base da cui puoi prendere spunto
Si, ho visto: Grazie.

Per le mie necessità attuali, quello che mi hai suggerito col tuo esempio andrebbe bene.
Mi è sembrato molto interessante il metodo per cambiare lo stile ed il colore del testo.
Ho fatto qualche prova, ma non riesco a cambiare, in un controllo di tipo TListBox, il Font della riga puntata col click del mouse. Sono riuscito a cambiare il Font di tutti i suoi componenti, ma non ho trovato nessuna proprietà che mi permettesse di limitarlo ad una sola riga.
Ma forse sono io che non ho capito come agire.
Ecco il codice ottenuto
Codice: [Seleziona]
procedure TForm1.lsDirClick(Sender: TObject);
var
  ixLsDir: Integer = 0;
  FontCorr: TFont; 

begin
  ixLsDir:= lsDir.ItemIndex;

  case   ixLsDir of
      0:
        begin
          FontCorr.Color := clRed;
          (Sender as TListBox).Font.Assign(FontCorr);
        end;
      else
        begin
          FontCorr.Color := clBlack;
          (Sender as TListBox).Font.Assign(FontCorr);
        end;
  end;
end;                                                                     
Ho allegato le due immagini coi colori di testo impostati a seconda della riga selezionata. Come è visibile, cambiando il colore in tutte le righe, non è possibile capire quale sia quella selezionata
ciao ciao

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1266
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:colorare testo e sfondo di oggetti grafici
« Risposta #10 il: Agosto 25, 2021, 11:27:21 pm »
Ciao, immagino che tu voglia qualcosa di simile ...

Le freccine indicano le righe selezionate ... clonato da una idea di @Stilgar

Nel sorgente è spiegato il tutto da cui puoi prendere spunto.

Come vedi funziona anche la selezione multipla

bye
« Ultima modifica: Agosto 25, 2021, 11:30:50 pm da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

petrusic

  • Hero Member
  • *****
  • Post: 588
  • Karma: +0/-0
Re:colorare testo e sfondo di oggetti grafici
« Risposta #11 il: Agosto 28, 2021, 11:11:19 pm »
@ DragoRosso
Ho guardato con attenzione il tuo programmino d'esempio e l'ho trovato veramente di grande aiuto.
Penso di avere capito come utilizzare al meglio la selezione delle righe interne ai controlli di tipo TListBox.
Grazie, grazie, grazie.
ciao ciao

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18769
  • Topic in totale: 2232
  • Online Today: 95
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 59
Total: 59

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.