* * * *

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 23, 2024, 11:20:04 pm

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

121 Visitatori, 0 Utenti

Autore Topic: [Risolto] stringGrid: titoli mancanti e non solo  (Letto 2832 volte)

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
[Risolto] stringGrid: titoli mancanti e non solo
« il: Marzo 12, 2022, 06:30:37 pm »
Allego un'immagine di parte della StringGrid che si sta beffando di me.

1) Nelle colonne 1, 2, 3 mancano i titoli di testata, pur avendoli impostati all'interno del codice, così come ho impostato anche tutti gli altri.
2) La larghezza delle colonne è fissa e non posso assolutamente nè aumentare, nè ridurre l'ampiezza.
3) Manca la barra orizzontale per lo spostamento verso destra o verso sinistra della parte di griglia visibile. C'è invece quella verticale.

Sono tutte anomalie che non riesco a capire, soprattutto la prima. Allego un'immagine dimostrativa.
« Ultima modifica: Marzo 14, 2022, 03:16:07 pm da petrusic »
ciao ciao

sergio

  • Full Member
  • ***
  • Post: 146
  • Karma: +1/-0
Re:stringGrid: titoli mancanti e non solo
« Risposta #1 il: Marzo 12, 2022, 07:27:45 pm »
Ciao , riesci mica a postare il codice ? Che versione hai di lazarus ?
Programmo per passione !

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:stringGrid: titoli mancanti e non solo
« Risposta #2 il: Marzo 12, 2022, 10:13:34 pm »
Ciao , riesci mica a postare il codice ? Che versione hai di lazarus ?
Comincio dalla 2a domanda: Lazarus 2.2.0
il codice prepara solo i titoli delle colonne 2 e 3, perché la col.1 è stata impostata in fase di disegno anche nel titolo:
Codice: [Seleziona]
procedure FaiGridMovv();    // costruisce la griglia dei movimenti corrispondenti al contenuto della CBstriX.Text
var
  swOpenErro: Boolean = False;

  i, iRgGrid: Integer;

  coVoCorr, nuProEdt, sql, voceCorr: String;

begin
  case Form6.tipoRicerca of
    '0', '1', '2', '3', '4', '5', '6':
    begin
      Form6.Panel5.Width:= Form6.Width - 170;
      Form6.Panel5.Height:= Form1.Height - 130;
      Form6.GridMovvComune.Width:= Form6.Panel5.Width - 4;
      Form6.GridMovvComune.Height:= Form6.Panel5.Height - 8;
    end;
  end;
  case Form6.tipoRicerca of
    '0':   // Ricerca per: Descrizione(0)
    begin
      . . .
    end;
    '1', '2', '6':   // Ricerca per: Voci contabil1 di Cassa(1, 2,), Cmponente familiare(6)
    begin
    end;
    '3', '4', '5':
    begin
      Form6.GridMovvComune.Columns[1].Title.Caption:= 'D A R E';     // col.2
      Form6.GridMovvComune.Columns[2].Title.Caption:= 'A V E R E';   // col.3
      Form6.GridMovvComune.Columns[3].Title.Caption:= 'DESCRIZIONE';
      Form6.GridMovvComune.Columns[4].MaxSize:= 500;
      Form6.GridMovvComune.Columns[4].MinSize:= 350;
      Form6.GridMovvComune.Columns[4].Width:= 500;
      Form6.GridMovvComune.Columns[4].Alignment:= taLeftJustify;
      Form6.GridMovvComune.Columns[4].Title.Caption:= 'VOCE DI CONTROPARTITA';
      Form6.GridMovvComune.Columns[5].MaxSize:= 120;
      Form6.GridMovvComune.Columns[5].MinSize:= 120;
      Form6.GridMovvComune.Columns[5].Width:= 120;
      Form6.GridMovvComune.Columns[5].Alignment:= taCenter;
      Form6.GridMovvComune.Columns[5].Title.Caption:= 'CODICE VOCE';
      Form6.GridMovvComune.Columns[6].MaxSize:= 500;
      Form6.GridMovvComune.Columns[6].MinSize:= 350;
      Form6.GridMovvComune.Columns[6].Width:= 500;
      Form6.GridMovvComune.Columns[6].Alignment:= taLeftJustify;
      Form6.GridMovvComune.Columns[6].Title.Caption:= 'VOCE DI CASSA';
      Form6.GridMovvComune.Columns[7].MaxSize:= 120;
      Form6.GridMovvComune.Columns[7].MinSize:= 120;
      Form6.GridMovvComune.Columns[7].Width:= 120;
      Form6.GridMovvComune.Columns[7].Alignment:= taCenter;
      Form6.GridMovvComune.Columns[7].Title.Caption:= 'CODICE VOCE';
      Form6.GridMovvComune.Columns[7].Visible:= True;
    end;
  end;
Ho inserito solamente la porzione di codice che sto provando  (tipoRicerca = 4).
Poi dentro l'evento DrawCell imposto il colore di sfondo per le celle dei totali e del titolo (quest'ultimo, perché ho trovato cambiato anche quello col colore di sfondo delle celle coi totali  (**?**).
però, anche prima di detta modifica il testo non era visualizzato:
Codice: [Seleziona]
procedure TForm6.GridMovvComuneDrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
type
  Tsfondo = TColor;

const
  sfondoBlu: Tsfondo = clBlue;
  sfondoVerde: Tsfondo = $0080801C;   // Verde scuro
  sfondo: Tsfondo = clWindow;

var
  lun: Integer;
  ixRg: Integer = 0;

  cellaSel: String;

   allin : TTextStyle;    // tipo di allineamento
begin
  WriteLn('TForm6.GridMovvComuneDrawCell');
  case aCol of
    1, 2, 3:
    begin
      WriteLn('cella corrente = col.' + IntToStr(aCol) + ' - rg.' + IntToStr(aRow));
      if (GridMovvComune.Cells[1, aRow] = 'TOT.Sottoconto')  then
      begin
        sfondo:= sfondoVerde;
        ixRg:= aRow;
      end;
      if (GridMovvComune.Cells[1, aRow] = 'TOTALI Conto') or (GridMovvComune.Cells[1, aRow] = 'T O T A L I') then
      begin
        sfondo:= sfondoBlu;
        ixRg:= aRow
      end;
      if (aRow = 0) then
      begin
        sfondo:= clBtnFace;   //  Impostazione del colore di sfondo delle celle di testata delle colonne 1, 2, 3   (per tutte le altre il colore impostato in fase di disegno funziona)
        ixRg:= aRow
      end;
      cellaSel:= GridMovvComune.Cells[aCol, aRow];  // punta alla casella selezionata
      if (ixRg = aRow) then
      begin
        GridMovvComune.Canvas.Brush.Color := sfondo;
        GridMovvComune.Canvas.FillRect(aRect);
        GridMovvComune.Canvas.Font.Style:= [fsBold];
        GridMovvComune.Canvas.Font.Color:= clYellow;  // colora il testo
        allin.Alignment:= taRightJustify;
        GridMovvComune.Canvas.TextRect(aRect, aRect.Right - lun , aRect.Top, CellaSel, allin);
        if (aCol = 1) then
        begin
          GridMovvComune.Canvas.Font.Height:= 14;
        end
        else begin
          GridMovvComune.Canvas.Font.Height:= 11;
        end;
      end;
      ixRg:= 0;
    end;
  end;
end;
« Ultima modifica: Marzo 13, 2022, 09:57:20 am da petrusic »
ciao ciao

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:stringGrid: titoli mancanti e non solo
« Risposta #3 il: Marzo 13, 2022, 07:31:38 am »
Per l'impostazione dei titoli alle colonne 1, 2, 3, ho risolto, aggiungendo una if in testa all'evento OnDrawCell:
Codice: [Seleziona]
 if (aRow > 1) then  

Restano aperte le altre due questioni:
- L'ampiezza delle colonne non modificabile col mouse, durante la sua vista.
- La  mancanza la barra di scorrimento orizzontale della griglia a vista.

Per esse non so proprio come e dove intervenire.

« Ultima modifica: Marzo 13, 2022, 10:02:21 am da petrusic »
ciao ciao

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1399
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:stringGrid: titoli mancanti e non solo
« Risposta #4 il: Marzo 13, 2022, 01:54:43 pm »
Restano aperte le altre due questioni:
- L'ampiezza delle colonne non modificabile col mouse, durante la sua vista.
- La  mancanza la barra di scorrimento orizzontale della griglia a vista.

Vedi allegati ....
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:stringGrid: titoli mancanti e non solo
« Risposta #5 il: Marzo 13, 2022, 03:05:37 pm »
@ DragoRosso

Ho verificato le impostazioni interne alla mia StringGrid e sono settate esattamente come mi hai ora indicato tu.
Veramente, non capisco.
ciao ciao

sergio

  • Full Member
  • ***
  • Post: 146
  • Karma: +1/-0
Re:stringGrid: titoli mancanti e non solo
« Risposta #6 il: Marzo 13, 2022, 05:50:13 pm »
Ciao , hai impostato le opzioni '' goColMoving = True  e goColSizing = True  per l'ingrandimento e lo spostamento delle celle ?
« Ultima modifica: Marzo 13, 2022, 05:55:19 pm da sergio »
Programmo per passione !

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1399
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:stringGrid: titoli mancanti e non solo
« Risposta #7 il: Marzo 13, 2022, 06:12:19 pm »
@ DragoRosso
Ho verificato le impostazioni interne alla mia StringGrid e sono settate esattamente come mi hai ora indicato tu.
Veramente, non capisco.
Ho risposto in velocità, ma l'intenzione era di indicare quali proprietà interessavano il "problema", ovviamente quelle sono da impostare a true, come è da selezionare la modalità del bar scrolling.

Ciao , hai impostato le opzioni '' goColMoving = True  e goColSizing = True  per l'ingrandimento e lo spostamento delle celle ?

Non serve  goColMoving a True per ridimensinare le colonne. Quello ti consente di spostare le colonne di posizione ad esempio dalla terza alla quinta.

Ciao
« Ultima modifica: Marzo 13, 2022, 06:17:46 pm da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:stringGrid: titoli mancanti e non solo
« Risposta #8 il: Marzo 13, 2022, 10:55:36 pm »
Ho provato quanto mi avete suggerito. Ho anche provato quanto ho letto qui sulle barre di scorrimento, ma è stato tutto inutile.

Le colonne non si allargano, nè si restringono. Le barre di scorrimento non esistono proprio.
Ma non dovrebbero essere funzioni disponibili già di default?

Non vorrei che attivare le funzioni, secondo me, naturali di una griglia occorra installare un qualche pacchetto accessorio che io non ho.

Mi dispiace perchè nella prova odierna avrei dovuto poter scorrere 83 righe, invece riesco a vedere solamente le prime 36 righe
e le prime 6 colonne su 8.

Non riesco nemmeno a selezionare una cella per spostarmi poi in avanti e indietro.
ciao ciao

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1399
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:stringGrid: titoli mancanti e non solo
« Risposta #9 il: Marzo 13, 2022, 11:41:56 pm »
Questo è un server Linux Ubuntu 20.04 con installato Lazarus / FPC come dal noto post (ora nel blog), esattamente come hai fatto tu. L'interfaccia grafica di Linux è LXQT (il server non ha il desktop di default).

Nessun pacchetto aggiuntivo, nemmeno zeos, TStringGrid inserita nella Form e attivato solo "goColSizing" dalle opzioni della TStringGrid. Per le barre di scorrimento la proprietà "scrollbars" è impostata a "ssBoth".

EDIT: intendo che quelli sono gli unici settaggi modificati rispetto al default del componente.

Questo è il risultato.

L'unico pacchetto aggiunto a mano in Linux è il GTK3+ (mi serve per altri ambienti).

Prova a fare un progetto nuovo, mettici la TStringGrid e setta solo le due proprietà come ti ho indicato.

Se funziona allora hai probabilmente nel progetto forse qualche cosa che "sporca" il componente.

Prova a creare un progetto nuovo in una directory nuova e inserisci le unit e le form del vecchio progetto, ricompilalo e vedi cosa succede.

Ciao

Ciao
« Ultima modifica: Marzo 14, 2022, 08:55:43 am da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:stringGrid: titoli mancanti e non solo
« Risposta #10 il: Marzo 14, 2022, 11:06:55 am »
Penso di avere individuato il problema, anche se non ne capisco la manifestazione.

Ho fatto una modifica alla posizione della StringGrid:
Fino a ieri era posizionata dentro un Panel.

 Dopo il tuo ultimo suggerimento di prova, ho avviato un programmino, costruito tempo fa, proprio per provare la StringGrid, ed ho notato che le barre di scorrimento ci sono. Ho provato ad ampliare e stringere le colonne ed ha funzionato. Ho provato con soddisfazione anche a selezionare una casella della griglia: tutto funziona benissimo.

Ho segnato le impostazioni relative sulle opzioni e sono tornato al mio programma in lavorazione.
Ho spostato la StringGrid direttamente dentro la Form (fuori dal pannello, quindi). Ho settato le opzioni, secondo gli appunti presi prima:
goColSizing = True
goRangeSelect = True
goSmoothScroll = True
ScrollBars = ssAutoBoth

Ho avviato ed ho finalmente notato che funziona tutto perfettamente.

Ripeto: non capisco che c'entri la posizione della StringGrid rispetto al pannello, ma a me pare che Lazarus non riesca a gestire bene la StrngGrid se non è disegnata direttamente dentro la Form.
 :)
« Ultima modifica: Marzo 14, 2022, 11:26:39 am da petrusic »
ciao ciao

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1399
  • Karma: +44/-0
  • Prima ascoltare, poi decidere
Re:stringGrid: titoli mancanti e non solo
« Risposta #11 il: Marzo 14, 2022, 12:22:16 pm »
Faccio una verifica e ti comunico i risultati.

EDIT: La stringGrid "dentro" un pannello funziona esattamente come "dentro" una Form, fà il ridimensionamento delle colonne e mostra la barre si scorrimento.

P.S.: Ovviamente le barre vengono mostrate se la griglia è contenuta completamente dentro il pannello. Inoltre la griglia è "operativa" con i controlli sia da tatstiera che del mouse se il pannello ha la proprietà ENABLED impostata a TRUE ::)

Ciao
« Ultima modifica: Marzo 14, 2022, 12:30:30 pm da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

petrusic

  • Hero Member
  • *****
  • Post: 624
  • Karma: +0/-0
Re:stringGrid: titoli mancanti e non solo
« Risposta #12 il: Marzo 14, 2022, 03:15:24 pm »
La stringGrid "dentro" un pannello funziona esattamente come "dentro" una Form, fà il ridimensionamento delle colonne e mostra la barre si scorrimento.

Prendo nota. In questa parte del programma sono già avanti e va bene come ho fatto la modifica. Riproverò con più attenzione alla prossima StrringGrid.
 ;)
ciao ciao

 

Recenti

How To

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

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.