* * * *

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.
Novembre 21, 2024, 10:28:25 am

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

93 Visitatori, 0 Utenti

Autore Topic: Sostituire una SynEdit con ?  (Letto 3277 volte)

bonmario

  • Hero Member
  • *****
  • Post: 1358
  • Karma: +11/-1
Sostituire una SynEdit con ?
« il: Ottobre 09, 2024, 01:48:26 pm »
Ciao,
ho un progetto con una SynEdit, in cui metto del testo, che mi arriva da un programma esterno.
Nella SynEdit vado a colorare alcune parole chiave con colori differenti.

Siccome ultimamente arrivano alcune "righe lunghe", mi hanno fatto notare che la cosa crea problemi, e mi hanno chiesto il "Ritorno a capo automatico", in pratica quello che nelle TMemo fa l'opzione "WordWrap".
Il problema è che la SynEdit non ha quell'opzione !!!

Ora, stavo quindi valutando se può o meno valere la pena vedere se riesco a fare io qualcosa
Per caso conoscete qualche componente simile, che abbia l'opzione WordWrap, e permetta di colorare a runtime lo sfondo di alcune parole?

P.S. La richiesta completa, sarebbe quella di avere un checkbox che permetta di abilitare o disabilitare il "Ritorno a capo automatico" quando vuole l'utente

Grazie, Mario

tito_livio

  • Full Member
  • ***
  • Post: 173
  • Karma: +4/-0
Re:Sostituire una SynEdit con ?
« Risposta #1 il: Ottobre 09, 2024, 06:55:02 pm »
Ciao,
potresti mettere, il testo che ti arriva, prima in una tmemo, invisibile, con la stessa larghezza e lo stesso font, e poi riga per riga, con un loop, riversi nella synedit.
« Ultima modifica: Ottobre 09, 2024, 06:58:56 pm da tito_livio »

bonmario

  • Hero Member
  • *****
  • Post: 1358
  • Karma: +11/-1
Re:Sostituire una SynEdit con ?
« Risposta #2 il: Ottobre 10, 2024, 08:14:31 am »
Ciao,
potresti mettere, il testo che ti arriva, prima in una tmemo, invisibile, con la stessa larghezza e lo stesso font, e poi riga per riga, con un loop, riversi nella synedit.

Grazie per il consiglio, farò qualche prova.

Ciao, Mario

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1395
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:Sostituire una SynEdit con ?
« Risposta #3 il: Ottobre 10, 2024, 07:04:04 pm »
Risposta probabilmente stupida ... perchè non usare una TRichedit ?

Che peculiarità ha SynEdit che sono essenziali per l'uso con il cliente in questione ?

N.B.: non ho mai usato SynEdit ...

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

bonmario

  • Hero Member
  • *****
  • Post: 1358
  • Karma: +11/-1
Re:Sostituire una SynEdit con ?
« Risposta #4 il: Ottobre 11, 2024, 07:32:52 am »
Risposta probabilmente stupida ... perchè non usare una TRichedit ?

Che peculiarità ha SynEdit che sono essenziali per l'uso con il cliente in questione ?

N.B.: non ho mai usato SynEdit ...

Ciao

C'è tutto uno studio dietro, durato anni ... in pratica avevo trovato un esempio semplice, che spiegava come colorare singole parole, proprio con SynEdit  ;D ;D ;D

Scherzi a parte, di solito cerco di usare componenti presenti già nell'installazione di Lazarus, per evitare problemi che ho avuto in passato con componenti esterni poi dismessi.
TRichedit fa parte di questo https://wiki.freepascal.org/lzRichEdit giusto?

Nei prossimi giorni dovrei avere del tempo, e faccio qualche prova con TRichEdit ... grazie !!!

Ciao, Mario

Mimmo

  • Jr. Member
  • **
  • Post: 84
  • Karma: +3/-0
Re:Sostituire una SynEdit con ?
« Risposta #5 il: Ottobre 11, 2024, 08:31:15 am »
Ciao, c'è un componente che non ho mai usato ma che penso possa avere tutto quello che ti necessita: https://github.com/Alexey-T/ATSynEdit.
Trovi un po' di documentazione qui https://wiki.freepascal.org/ATSynEdit.
L'autore è quello di CudaText che è costruito proprio su questo componente.
Io non l'ho utilizzato ma uso regolarmente un altro suo progetto: ATFlatControls. Tutti i progetti sono attivamente mantenuti e l'autore ci dedica un sacco di tempo.
Nell'elenco delle features c'è il word-wrap ed è possibile costruire un Adapter per fare l'highlight di qualsiasi sintassi.

bonmario

  • Hero Member
  • *****
  • Post: 1358
  • Karma: +11/-1
Re:Sostituire una SynEdit con ?
« Risposta #6 il: Ottobre 11, 2024, 03:08:01 pm »
Ciao, c'è un componente che non ho mai usato ma che penso possa avere tutto quello che ti necessita: https://github.com/Alexey-T/ATSynEdit.
Trovi un po' di documentazione qui https://wiki.freepascal.org/ATSynEdit.

Questo sarebbe interessante, ma oltre ad essere già lui un componente esterno, in fase di installazione ne richiede altri 2 di cui non ricordo il nome.
Se non trovo altro con meno dipendenze, lo rivaluto

Grazie, Mario

bonmario

  • Hero Member
  • *****
  • Post: 1358
  • Karma: +11/-1
Re:Sostituire una SynEdit con ?
« Risposta #7 il: Ottobre 11, 2024, 04:41:29 pm »
Risposta probabilmente stupida ... perchè non usare una TRichedit ?

Che peculiarità ha SynEdit che sono essenziali per l'uso con il cliente in questione ?

N.B.: non ho mai usato SynEdit ...

Ciao

Non so se è quello che intendevi tu, ma cercando "rich" tra gli oggetti a disposizione, ho trovato la TRichMemo https://wiki.freepascal.org/RichMemo

Sembra che abbia tutto quello che mi serve:
- possibilità di abilitare e disabilitare a runtime il WordWrap
- colorare in maniera diversa differenti pezzi

Grazie, Mario

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1395
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:Sostituire una SynEdit con ?
« Risposta #8 il: Ottobre 11, 2024, 07:18:03 pm »
Non so se è quello che intendevi tu, ma cercando "rich" tra gli oggetti a disposizione, ho trovato la TRichMemo https://wiki.freepascal.org/RichMemo

Sembra che abbia tutto quello che mi serve:
- possibilità di abilitare e disabilitare a runtime il WordWrap
- colorare in maniera diversa differenti pezzi

Grazie, Mario
Si, quello. In Delphi si chiama TRichedit, ma è quel controllo.

Lieto di esserti stato utile.
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

bonmario

  • Hero Member
  • *****
  • Post: 1358
  • Karma: +11/-1
Re:Sostituire una SynEdit con ?
« Risposta #9 il: Ottobre 12, 2024, 07:17:29 am »
Si, quello. In Delphi si chiama TRichedit, ma è quel controllo.

Lieto di esserti stato utile.

Ok, grazie !!

Tra l'altro, ho dato un occhio veloce, e la "conversione" dovrebbe essere abbastanza veloce.
L'unico dubbio che mi rimane al momento, e che non mi ricordavo nemmeno, è che nel progetto avevo anche 2 bottoni con cui fare "Trova successivo" e "Trova precedente", devo ancora verificare come fare questa cosa sulla TRichMemo, per il resto sembra avere tutto quello che mi serve

Ciao, Mario

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1395
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:Sostituire una SynEdit con ?
« Risposta #10 il: Ottobre 12, 2024, 10:18:06 am »
Per il trova precedente / successivo, io farei la ricerca in tutto il documento, memorizzandomi tutte  le coordinate delle testo trovato (riga / colonna) e iterando poi tra le posizioni. Se il documento viene modificato per qualsiasi motivo, allora rifai il processo di ricerca.

N.B.: per la presentazione della ricerca, fai in modo che il testo si ponga sempre verso il centro più o meno dello pagina visualizzata. In molti (troppi) documenti quando fai la ricerca il documento viene posizionato con il testo in prima riga visualizzata a schermo ... e la maggior parte dei casi non si vede o tocca muovere il documento perchè parzialmente nascosto (errore di calcolo per i font usati / contenuti multimediali o altro)....

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

bonmario

  • Hero Member
  • *****
  • Post: 1358
  • Karma: +11/-1
Re:Sostituire una SynEdit con ?
« Risposta #11 il: Ottobre 12, 2024, 02:46:11 pm »
Grazie, mi hai anche ricordato che nel farlo, devo cercare di sistemare un'altra cosa: spesso, con la ricerca attuale della synedit, quello che trova viene messo proprio all'inizio o proprio alla fine della parte visibile, non facendo così capire il "contesto". Dovrò cercare di fare qualcosa anche per quello

Ciao, Mario

bonmario

  • Hero Member
  • *****
  • Post: 1358
  • Karma: +11/-1
Re:Sostituire una SynEdit con ?
« Risposta #12 il: Ottobre 17, 2024, 11:33:48 am »
Ciao,
avrei un problemino ....

Vorrei evitare di stravolgere la vecchia gestione, che lavorava su ogni singola riga della TSynEdit, e fare la stessa cosa con la TRichMemo.
ll problema, è che l'istruzione che permette di "evidenziare" le parole che mi interessano, è questa:

Codice: [Seleziona]
RichMemo1.SetTextAttributes(WrkStart,WrkLength, FontDialog1.Font);

Il primo parametro indica da dove deve iniziare a variare il carattere, il secondi, per quanti caratteri.

Il problema è che il numero del primo parametro, è relativo all'intera RichEdit.

Provo a spiegarmi ...
Supponiamo che la RichEdit contenga 3 righe:
- la prima con AAA
- la seconda con BBB
- la terza con CCC

Se io volessi evidenziare "CCC", mi servirebbe sapere quale numero mettere. Ho provato a contare i caratteri delle righe precedenti con UTF8Length, ma non funziona correttamente ...

Qualche consiglio?


Grazie, Mario

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1395
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:Sostituire una SynEdit con ?
« Risposta #13 il: Ottobre 17, 2024, 12:11:22 pm »
Da quello che ho visto, poi devo verificare meglio in Lazarus nel primo pomeriggio, la selezione del testo è legata come dicevi tu alla posizione del carattere all'interno della RichMemo e alla lunghezza della selezione (il tutto deriva dalla gestione di Windows ...).

Come trasformare questo in "linee" è un'ottima domanda, anche perchè di fatto se vai a modificare il font della selezione potrebbe essere che la stessa selezione "cambi" in corsa di posizione ... non nei termini assoluti ovviamente ma in termini di linee si, ad esempio se hai il "wordwrap" attivo o comunque se sei al bordo visibile del controllo.

Uhmm un disguido non da poco .... forse, ma dico forse, un pensiero alla modifica del tuo algoritmo di lavoro per riga lo farei ...
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

bonmario

  • Hero Member
  • *****
  • Post: 1358
  • Karma: +11/-1
Re:Sostituire una SynEdit con ?
« Risposta #14 il: Ottobre 17, 2024, 12:55:34 pm »
Ok, grazie per la disponibilità.

Dovrò riverificare la cosa un altro giorno, quando avrò del tempo, ma credo di aver capito il problema ...

Nel file che mi arriva, non sempre, ma comunque può succedere, ci sono righe molto lunghe.
Nel caso particolare che ho visto prima, c'era una riga di 15.000 caratteri che, anche con "WordWrap" non impostato, veniva comunque visualizzata su 2 righe, e non su una.
Credo che sia quella che mi fa sballare il tutto, ma purtroppo poggi non riesco a verificare

 

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19169
  • Topic in totale: 2286
  • Online Today: 117
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 93
Total: 93

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.