* * * *

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.
Maggio 05, 2025, 01:20:39 pm

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

126 Visitatori, 1 Utente
 

Autore Topic: StringGrid Colonne nascoste  (Letto 19 volte)

petrusic

  • Hero Member
  • *****
  • Post: 660
  • Karma: +0/-0
StringGrid Colonne nascoste
« il: Oggi alle 09:49:07 am »
La mia StringGrid corrente è formata da 24 colonne.
Di esse vorrei lasciare visibili solamente le prime 7, perchè le successive contengono dati utili solo per la programmazione.
Avevo pensato perciò di renderle tutte abilitate ma NON Visibili.
Ho scoperto però che impostando la proprietà "Visible= False", le colonne vengono anche disabilitate.

Dopo tale scoperta l'unica alternativa percorribile è quella di creare una tabella bidimensionale che riporti al suo interno l'intera StringGrid.

Una tale gestione però mi complicherebbe molto la vita, perchè impegnerei intanto tanta memoria in più di quella effettivamente necessaria e poi, perchè dovrei ogni volta portare un doppio aggiornamento, uno sulla StrngGrid ed una sul corrispondente elemento della tabella.

Dal mio punto di vista di programmatore, non capisco come mai non sia possibile impostare la proprietà Enabled per le colonne componenti la StringGrid.

???
ciao ciao

bonmario

  • Hero Member
  • *****
  • Post: 1406
  • Karma: +11/-1
Re:StringGrid Colonne nascoste
« Risposta #1 il: Oggi alle 11:38:08 am »
Ciao,
quella che ti sto per descrivere, è una soluzione che avevo trovato anni fa, non ricordo i motivi, e può anche essere che nel frattempo le cose siano cambiate, ma oramai mi sono abituato così :)

Questo il codice che uso a programma per nascondere le colonne, in pratica imposto la loro larghezza a 0:
Codice: [Seleziona]
WrkStringGrid.ColWidths[NumCol]:=0;

dove WrkStringGrid è il nome della tua StringGrid, e  NumCol è il numero della colonna che vuoi nascondere. Occhio che la prima colonna è la colonna 0, e così via.


Il difetto di questa soluzione, è che se uno sa che c'è questa cosa, potrebbe "allargare" la colonna col mouse, come si fa normalmente in "Esplora risorse" o simili

Ciao, Mario

CompilaQuindiVa

  • Newbie
  • *
  • Post: 5
  • Karma: +0/-0
  • Developer, Trainer & Content Creator
    • Tutti i miei link
Re:StringGrid Colonne nascoste
« Risposta #2 il: Oggi alle 11:49:50 am »
La mia StringGrid corrente è formata da 24 colonne.
Di esse vorrei lasciare visibili solamente le prime 7, perchè le successive contengono dati utili solo per la programmazione.

Ciao, stavo riflettendo sulla parte del tuo messaggio in cui hai specificato "dati utili solo per la programmazione". :)

Mi fa pensare che il controllo StringGrid che stai utilizzando visualizzi informazioni a partire da una struttura dati già esistente (tabella, lista, ecc.), recuperata in precedenza: se questo è vero, perché non togliere queste informazioni che non devono essere visualizzate dalla griglia e mantenere una sorta di "riferimento" (indice della riga, campo ID, ecc.) all'interno della griglia stessa, facendo sì che tramite questo dato si possa risalire alla struttura in memoria che contiene tutte le altre informazioni?

Metti anche il caso in cui, in futuro, tu debba memorizzare per le righe dati che non sono "piatti", ossia organizzati in un solo livello, ma più strutturati e quindi difficilmente rappresentabili in termini di colonne, questo approccio ti consentirebbe di farlo, mentre la memorizzazione all'interno della griglia da questo punto di vista ti limiterebbe enormemente.

C'è anche un altro aspetto da considerare: usare la griglia come "storage" per i tuoi dati incentiverebbe troppo la scrittura di codice legata eccessivamente a elementi dell'interfaccia utente, che come tali si portano dietro API, routine e altre risorse (in generale, dipendenze) che dovresti sempre "linkare" anche se il tuo unico scopo magari è quello di mantenere dati in memoria.

Prova a fare una riflessione in merito, poi suppongo che altri utenti possano darti consigli più specifici in proposito.

Certo, lo scenario è più complesso di quello attuale, quindi la scelta di "azzerare" la larghezza della colonna può essere una soluzione "secca e dura", come si suol dire, valida nel suo contesto. :)

Un saluto! 👋
MARCO BREVEGLIERI
Software Developer 👨‍💻 | Trainer & Consultant 👨‍🏫 | Tech Content Creator 🎥

👉 Tutti i miei link e profili social

petrusic

  • Hero Member
  • *****
  • Post: 660
  • Karma: +0/-0
Re:StringGrid Colonne nascoste
« Risposta #3 il: Oggi alle 01:06:51 pm »
Grazie.
quella che ti sto per descrivere, è una soluzione che avevo trovato anni fa,
 . . .
in pratica imposto la loro larghezza a 0:
. . .
Non ci avevo pensato, però l'Utente può sempre aumentare la larghezza delle colonne e leggere dati per lui non significativi.

. . .
C'è anche un altro aspetto da considerare: usare la griglia come "storage" per i tuoi dati incentiverebbe troppo la scrittura di codice legata eccessivamente a elementi dell'interfaccia utente, che come tali si portano dietro API, routine e altre risorse (in generale, dipendenze) che dovresti sempre "linkare" anche se il tuo unico scopo magari è quello di mantenere dati in memoria.

Prova a fare una riflessione in merito,
. . .
La soluzione:
Ampiezza colonna = 0
 non mi piace perchè in realtà non nascondo le colonne, allora tanto varrebbe impostare anche, nel progetto definitivo'  il colore del testo uguale a quello dello sfondo, quanto meno le colonne restano visibili ma sembrano vuote.

La soluzione:
 Pensare allo spreco di memoria usando la StringGrid come se fosse una tabella
 è pesante, lo so, ma quando l'ho pensata, mi è sembrata pratica da impegare ed ora mi divenma oneroso modiicarla

Volendo metterla in pratica, si potrebbe:
1) Riorganizzare i dati in modo da distribuirli fra quelli utili solo per l'utente finale e quelli utili solo per la programmazione.
    -- Però mi sembra farraginosa da gestire.
2) Costruire una tabella di interfaccia, che contenga sia i dati utili all'Utente finale, sia tutti gli altri e scrivere ciascuna riga della StringGrid copiando nelle celle corrispondenti soltanto gli elementi utili all'Utente finale.
      -- Anche questa impegna non poco per adottarla.

Ci ragionerò sopra.
Grazie ancora.

ciao ciao

 

Recenti

How To

Utenti
  • Utenti in totale: 821
  • Latest: Dysonzux
Stats
  • Post in totale: 19745
  • Topic in totale: 2372
  • Online Today: 174
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 1
Guests: 126
Total: 127

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.