* * * *

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 19, 2024, 01:06:23 am

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

311 Visitatori, 0 Utenti

Autore Topic: [RISOLTO]Lazreport problemi con testo dbmemo lungo  (Letto 2667 volte)

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:Lazreport problemi con testo dbmemo lungo
« Risposta #15 il: Aprile 27, 2021, 10:42:26 pm »
Ciao Tito Livio, allego l'immagine di Lazreport e della relativa stampa.
Come potrai vedere il numero a sinistra del codice, oltre al codice, sono il progressivo di Totarti, poi segue la descrizione che è di MemTotarti realizzata con il tuo codice leggermente modificato già postato, i numeri, uguali al numero progressivo del codice, sono i vari record del MemDataset. Al termine della descrizione c'è la descrizione della misura (altra tabella collegata) e poi il totale dell'articolo del Table Totarti, in fondo alla pagina "Page Footer" il totale progressivo fino alla pagina. Il problema è solo nella lunghezza del record della descrizione "Totarticoli" o del record "MemTotarti" che se è più lungo delle righe restanti della pagina obbliga ad un salto pagina. Penso che il problema sia solo di Lazreport e che non sia possibile correggerlo se non intervendo nel pacchetto.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:Lazreport problemi con testo dbmemo lungo
« Risposta #16 il: Aprile 27, 2021, 11:05:35 pm »
non voglio entrare nel merito che in Lazreport puoi definire la pagina A3,A4 ecc. ma non puoi definire quante righe per pagina, ed allora, usando Memdataset, bisognerebbe riuscire a fare record (finiti e logici) di ridotta lunghezza.
La larghezza del DBmemo per la creazione dei record di MemDataset non influisce sul risultato.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

tito_livio

  • Full Member
  • ***
  • Post: 146
  • Karma: +3/-0
Re:Lazreport problemi con testo dbmemo lungo
« Risposta #17 il: Aprile 28, 2021, 12:25:12 am »
Vorrei sapere: il testo "NOLO ATTREZZATURE - Nolo di ponteggio tubolare esterno eseguito... verticale)" lo hai messo tutto dentro un unico record del memdataset?

tito_livio

  • Full Member
  • ***
  • Post: 146
  • Karma: +3/-0
Re:Lazreport problemi con testo dbmemo lungo
« Risposta #18 il: Aprile 28, 2021, 12:50:39 am »
Se è così , cioe se fai record così lunghi il problema è questo.
Il width del dbmemo deve essere tale che ci entra nella riga soltanto "NOLO ATTREZZATURE - Nolo di ponteggio tubolare".
Altrimenti se vai a mettere una stringa lunga ottieni un memo lungo (cioè alto) che Lazreport non mette a cavallo di due pagine.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:Lazreport problemi con testo dbmemo lungo
« Risposta #19 il: Aprile 28, 2021, 01:06:40 am »
Citazione
Vorrei sapere: il testo "NOLO ATTREZZATURE - Nolo di ponteggio tubolare esterno eseguito... verticale)" lo hai messo tutto dentro un unico record del memdataset?
quella che vedi fra gli stessi numeri sono i record creati dal DBMemo riga al MemDataset.
se diminuisci la lunghezza delle righe la il testo viene spezzato casualmente ed a capo, per esempio la parola ponteggio viene spezzata in "pon" e "teggio" a capo perchè in un'altro record.
Non serve a niente ridurre la larghezza di DBMemo perchè la riga ha sempre la stessa lunghezza (ho provato inutilmente)
Mi dispiace Tito Livio ma siamo molto lontani dalla soluzione!
Chi ha sviluppato Lazreport ha logicamente previsto il ritorno a capo alla fine di un riga di un record e non ha considerato l'estetica della pagina.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:Lazreport problemi con testo dbmemo lungo
« Risposta #20 il: Aprile 28, 2021, 02:26:02 pm »
errata corrige ......
La larghezza del DBMemo influisce sulla dimensione del record di MemDataset solo se è visibile, da invisibile la dimensione del record viene stabilita dal programma.
Quindi lavorando sulla larghezza del DBMemo si può arrivare ad una stampa accettabile, certo bisogna stabilire la dimensione del carattere (anche il maiuscolo ed il minuscolo influiscono) ed accettare qualche ritorno a capo non proprio perfetto.
Da risolvere il DBMemo che non posso lasciare visibile
« Ultima modifica: Aprile 28, 2021, 02:30:08 pm da antoniog »
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

tito_livio

  • Full Member
  • ***
  • Post: 146
  • Karma: +3/-0
Re:Lazreport problemi con testo dbmemo lungo
« Risposta #21 il: Aprile 28, 2021, 06:55:10 pm »
Ciao,
potresti mettere il dbmemo visibile in un form, creato ma al quale nessuno potrà accedere
« Ultima modifica: Aprile 28, 2021, 07:27:35 pm da tito_livio »

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:Lazreport problemi con testo dbmemo lungo
« Risposta #22 il: Aprile 30, 2021, 12:02:42 am »
Ave Tito Livio, ti ringrazio per l'aiuto, ho imparato altre cose, ma non si può aggirare il problema, ed è un grande problema, ed a questo punto preferisco il salto pagina ma con descrizione completa e leggibile che un non salto pagina con descrizione non correttamente impaginata. Usando Lazreport dovrò accettare questo limite del pacchetto oppure potrò tornare a Fortes Report che mi consente di gestire le righe per pagina.

avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:Lazreport problemi con testo dbmemo lungo
« Risposta #23 il: Maggio 14, 2021, 10:56:26 pm »
Il sistema sopra usato con i record di un Memdataset funziona su windows ma non su Linux perchè su linux la larghezza del DBMemo non definisce la lunghezza della linea che invece viene definita, penso,  da un ritorno a capo tipo #10#13.
Allora bisogna sperimentare altro. Un problema semplice che diventa complesso...
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:Lazreport problemi con testo dbmemo lungo
« Risposta #24 il: Giugno 15, 2021, 12:10:57 am »
Tempo fa in un forum inglese avevo visto e salvato  le istruzioni per scrivere un testo lungo su più pagine, avevo provato ad utilizzarla senza successo. In questi ultimi giorni ho  riprovato ad utilizzarla e ci sono riuscito.
Per potere scrivere un testo lungo di un campo TEXT su più pagine:
Mettere sulla propria form un un TMemo, il nome dell'esempio Memo2, nel TDataSource della Tabella che interessa inserire il seguente codice nell'evento onDataChange
Codice: [Seleziona]

procedure TGescompF.DTotartiDataChange(Sender: TObject; Field: TField);
begin
  GescompF.Memo2.Clear;
  GescompF.Memo2.Text:=DataProgetto.TotartiAnnotazion.AsString;
  GescompF.Memo2.Text:= StringReplace(GescompF.Memo2.Text, '[', '-', [rfReplaceAll]);
  GescompF.Memo2.Text:= StringReplace(GescompF.Memo2.Text, ']', '-', [rfReplaceAll]);
end;

questa routine copia il testo contenuto nel campo TEXT della Tabella, in questo caso TotartiAnnotazion nel TMemo inserito nella Form così da consentirmi, senza modificare nulla dei dati, di eliminare le criticità per Lazreport come per esempio le parentesi quadre.

Selezionare TFrRporto, nel mio caso FrReport1 e nell'evento OnEnterRect inserire il seguente codice:
Codice: [Seleziona]

procedure TGescompF.frReport1EnterRect(Memo: TStringList; View: TfrView);
begin
   if (View is TfrMemoView) then
     if (View as TfrMemoView).Name = 'Memo27' then
       (View as TfrMemoView).Memo.Text := GescompF.Memo2.Lines.Text;
end;   

Aprire il designer di Lazreport e inserire una MasterData Band, right-click e selezionare 
"Stretched" & "Break"
Inserire un Rettangolo sulla MasterData Band,name  Memo27,  right-click e selezionare  "Stretched" & "wordwrap", risultato allegato. Problema risolto.
L'elemento Memo2 deve essere visibile e per non farlo vedere si possono impostare : BorderStyle su bsNone e Font-Color su clNone.
Cosi funziona sia sotto Windows che sotto Linux.
« Ultima modifica: Giugno 15, 2021, 12:20:28 am da antoniog »
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18771
  • Topic in totale: 2233
  • Online Today: 321
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 311
Total: 311

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.