PDA

Visualizza la versione completa : [Delphi 6] Modificare il font di un rich edit


Girandol0
24-12-2004, 10:14
Ciao!
Volevo sapere se era possibile modificare il font di un richedit solo in certe parti. In poche parole ho un rich-edit che contiene un codice. Per renderlo più leggibile volevo evidenziare certe parti mettendole in grassetto o cambiandone colore. Per esempio adesso volevo impostare i commenti mettendoli inclinati per separarli dal codice. Visto che i commenti sono sempre preceduti da un punto e virgola ';' pensavo di fare qualcosa tipo:

procedure TForm1.codiceChange(Sender: TObject);
var k:longint;
begin
for k:=0 to (codice.Lines.Count-1) do
begin
if Copy(codice.Lines[k],1,1)=';' then //seleziona il testo e modifica la formattazione
end;
end;
Però non so come modificare il font della singola linea...
è fattibile?? come posso procedere??
Grazie in aniticipo per l'aiuto!

alka
24-12-2004, 10:55
Attraverso le proprietà SelStart e SelLength, puoi impostare la selezione del testo all'interno del controllo RichEdit.

Avendo una selezione, attraverso la proprietà SelAttributes puoi modificare le caratteristiche del testo selezionato: carattere, stile, dimensione, colore e così via.

Nella Guida in linea trovi questo esempio:



procedure TForm1.Button1Click(Sender: TObject);
begin
with RichEdit1.SelAttributes do
begin
Color := clRed;
Height := Height + 5;
end;
RichEdit1.Lines.Add('This line of text will be red.');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
RichEdit1.DefAttributes.Color := clBlue;
RichEdit1.DefAttributes.Style := [fsBold, fsItalic];
end;


Consulta la guida per altri esempi e indicazioni sull'utilizzo delle proprietà citate.

Ciao! :ciauz:

Girandol0
24-12-2004, 11:11
Penso di avere più o meno capito...però come faccio a dirgli di partire dalla riga che su cui sto scrivendo?? Poi devo fare ritornare il mouse al punto in cui stavo scrivendo...giusto?

alka
24-12-2004, 11:20
Originariamente inviato da Girandol0
Penso di avere più o meno capito...però come faccio a dirgli di partire dalla riga che su cui sto scrivendo??

Prima di scrivere la riga, imposti le proprietà di SelAttributes e successivamente aggiungi la linea di testo richiamando il metodo RichEdit.Lines.Add.


Originariamente inviato da Girandol0
Poi devo fare ritornare il mouse al punto in cui stavo scrivendo...giusto?

Non lo so cosa deve fare il tuo programma. :)
Comunque, per "mouse" immagino che tu intendessi il "cursore" (caret) che lampeggia all'interno del controllo.

Ciao! :ciauz:

Girandol0
24-12-2004, 11:45
Originariamente inviato da alka
Non lo so cosa deve fare il tuo programma. :)
Comunque, per "mouse" immagino che tu intendessi il "cursore" (caret) che lampeggia all'interno del controllo.
è sempre quel simulatore di un microprocessore molto semplice (tanto semplice che in realtà non esiste :zizi: )
Volevo formattare il codice assembly (quello che poi lui converte e mette in memoria) con tutte le istruzioni in modo da renderlo più leggibile. Non so se hai presente certi programmi di editor html che evidenziano i tag... ecco una cosa del genere. Il codice viene scritto dall'utente (non è il programma a scriverlo!) e pensavo di fare un ciclo che ogni volta che cambia il testo lo controlla e mette in evidenza le istruzioni e in commenti...più o meno ho reso l'idea?? :confused: :confused:

alka
24-12-2004, 11:50
Hai reso l'idea, però forse il controllo TRichEdit non è quello più adatto allo scopo, o meglio la fatica per ottenere simili funzionalità, come la colorazione della sintassi, è veramente esasperante. :)

Sicuramente, troverai di maggiore interesse il controllo SynEdit, scaricabile dal sito ufficiale (http://synedit.sourceforge.net/). Dagli un'occhiata! :)

Ciao! :ciauz:

Girandol0
24-12-2004, 12:07
Adesso c'è il dramma...ho provato più volte a installare un nuovo componente ma con risultati pessimi! Ce l'ho fatta solo una volta perchè era un exe autoinstallante!!
Dopo che ho decompresso il file in una cartella mi ci trovo dentro un mucchio di roba...
Da quello che ho capito dovrei cliccare su component da dentro delphi e poi?? A dire il vero non so nemmeno esattamente la differenza tra component e package... :dhò: :dhò:
Mi dareste qualche dritta??

alka
24-12-2004, 12:09
Controlla se il package contiene istruzioni per l'installazione.

Ad ogni modo, senza la conoscenza delle attività fondamentali in Delphi, difficilmente si fa molta strada, soprattutto nell'affrontare progetti di una certa complessità.

Ciao! :ciauz:

Girandol0
24-12-2004, 12:24
Ok...cmq il programma è già finito e funzionante! Diciamo che volevo provare a fare qualcosa in più :D
Cmq grazie lo stesso!

Loading