Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: Giuani - Febbraio 15, 2020, 07:18:26 pm

Titolo: DBGrid larghezza colonne
Inserito da: Giuani - Febbraio 15, 2020, 07:18:26 pm
Salve a tutti,
dopo la realizzazione del database, chiedo altre spiegazioni.
Spero di non sbagliare posizione del post.
Uso un DBGrid per mostrare i data di una table Dbf, dove alcuni campi devono mostrare solo tre caratteri e altri 15 caratteri:
Esempio TITOLO campo 15 Caratteri; COLLOCAZIONE 3 caratteri.
Per far questo ho inserito nel progetto la procedura: 
procedure TForm1.FormCreate(Sender: TObject);
begin
dbgrid1.Columns[0].Width := 25;
dbgrid1.Columns[1].Width := 150;
dbgrid1.Columns[2].Width := 150;
dbgrid1.Columns[3].Width := 150;
dbgrid1.Columns[4].Width := 25;
dbgrid1.Columns[5].Width := 25;
dbgrid1.Columns[6].Width := 25;
dbgrid1.Columns[7].Width := 25;
dbgrid1.Columns[8].Width := 200;
end;

La procedura si attiva con un ButtonRidimensionaCol  con un FormCreate  e tutto funziona.
Ma ogni volta che premo il ButtonMostraTuttiFile  per far comparire tutti record sulla DBGrid o un ButtonFiltra per filtrare, ogni colonna si allarga secondo la lunghezza del titolo della colonna.

Perché ?

Fatto strano è che la procedura sopra indicata l'ho recuperata da un vecchio programma fatto con Delphi3, dove funzionava bene.
Mi date qualche spiegazione ?
Grazie
Titolo: Re:DBGrid larghezza colonne
Inserito da: bonmario - Febbraio 15, 2020, 07:34:46 pm
Nella proprietà "Options" della DBGrid, ci sono 3 check:
- dgAutoSizeColumns
- dgColumnResize
- dgDblClickAutoSize

In base a quali selezioni, e quali no, cambia il comportamento.

Ciao, Mario
Titolo: Re:DBGrid larghezza colonne
Inserito da: Giuani - Febbraio 16, 2020, 10:39:36 pm
Ciao Mario,
Grazie delle informazioni, ho capito che bisogna settare la DBGrid Options, ma non so come fare.
Ho fatto un giro su Google, ho trovato qualche informazione, ho cercato di settare DBGrid Options, ma ottengo solo errori.
Gentilmente mi puoi dire qual'é l0struzione corretta ?
DBGrid.Optios.....
Grazie.
Titolo: Re:DBGrid larghezza colonne
Inserito da: bonmario - Febbraio 17, 2020, 08:03:37 am
Non lo so per certo, ma a logica mi verrebbe da dire che, dopo aver impostato la larghezza che vuoi tu, dovresti impostare a False le prime 2.

P.S. Gli errori te li da in esecuzione, o dall'IDE? Che errori sono?

Ciao, Mario
Titolo: Re:DBGrid larghezza colonne
Inserito da: Giuani - Febbraio 17, 2020, 09:30:11 am
Ciao Mario,
Non sono stato molto chiaro, scusami.

alla procedura
dbgrid1.Columns[0].Width := 25;
dbgrid1.Columns[1].Width := 150;
dbgrid1.Columns[2].Width := 150;
dbgrid1.Columns[3].Width := 150;
dbgrid1.Columns[4].Width := 25;
dbgrid1.Columns[5].Width := 25;
dbgrid1.Columns[6].Width := 25;
dbgrid1.Columns[7].Width := 25;
dbgrid1.Columns[8].Width := 200;

ho aggiunto
dbgrid1.dgAutoSizeColumns:=false;

poi ho provato con
dbgrid1.Options.dgAutoSizeColumns:=false;

in fase si compilazione e in entrambi i casi ottengo l'errore
codice di usnita 1 errore 1, credo sia un errore di sintassi.
Ciao e grazie.
 
Titolo: Re:DBGrid larghezza colonne
Inserito da: bonmario - Febbraio 17, 2020, 09:47:18 am
Scusa, ma perché non lo fai dall'ObjectInspector ???
Il problema è di sintassi: Options è un set.
Ora non ricordo la sintassi corretta per "togliere" un valore da un set, ma se lo fai da ObjectIOnspector, probabilmente fai prima !!!

Ciao, Mario
Titolo: Re:DBGrid larghezza colonne
Inserito da: xinyiman - Febbraio 17, 2020, 10:02:37 am
Ora non ricordo la sintassi corretta per "togliere" un valore da un set, ma se lo fai da ObjectIOnspector, probabilmente fai prima !!!

dbgrid1.Options := dbgrid1.Options - [nome1_opzione_da_togliere, nome2_opzione_da_togliere, nome3_opzione_da_togliere];
Titolo: Re:DBGrid larghezza colonne
Inserito da: bonmario - Febbraio 17, 2020, 11:43:32 am
Grazie !!!
Sono cose che uso così raramente, che non mi ricordo mai la sintassi corretta !!

Ciao, Mario
Titolo: Re:DBGrid larghezza colonne
Inserito da: Giuani - Febbraio 17, 2020, 08:03:29 pm
Tutto chiaro,
Grazie a tutti.