Newsgroup: it.comp.lang.delphi
Titolo: Barra di scorrimento verticale....

Ciao a tutti,
      c'e' un sistema per sapere se la barra di scorrimento verticale di una 
DBGrid e' visualizzata ??? 


Nella DBGRID non c'è la proprietà scrollBars, si attiva in automatico
con il riempirsi dei record..La Barra verticale quando i record non
sono tutti visibili e la barra orrizzontale quando la grandezza della
grid e superiore alla visualizzazione della form.
Ciao billy

grid e superiore alla visualizzazione della form.
Pensavo  ci fosse un modo ...
Grazie di tutto,
Ciao,
Daniele

 Pensavo  ci fosse un modo ...
Piuttosto dovresti spiegare *perchè* hai bisogno di sapere se la scrollbar
è visibile: se non è stato previsto nella progettazione del componente da
parte dei progettisti borland, ci sarà un perchè... ti pare? ;-)
Con tutta l'immaginazione che provo a metterci, proprio non riesco a farmi
venire in mente per quale motivo ti serve sapere se la scrollbar è visibile
o meno... :-O
Vuoi forse spiegarcelo tu? :-)
-- 
Morde

 Vuoi forse spiegarcelo tu? :-)
E' solo una semplice questione di eleganza nella visualizzazione della 
griglia.
Se hai un solo campo da visualizzare risulta piu' pulito disegnare una 
griglia che, una volta visualizzata la barra non venga mostrata quella 
inferiore.
Tutto qui.
Grazie dell'interesse.
Ciao,
Daniele

perdonamni, Daniele, ma non ho capito un saciccio...... :-((
A.

 DBGrid e' visualizzata ??? 
Forse questo "tip" può esserti d'aiuto:
http://www.swissdelphicenter.ch/en/showcode.php?id=1880
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 perdonamni, Daniele, ma non ho capito un saciccio...... :-((
Non preoccuparti ....
Comunque nel mio girovagare su internet sono riuscito a trovare una unit, 
qui in calce, che automaticamente adatta la visualizzazione dei campi 
all'area visiva della griglia, tenendo conto dello spazio della scrollbar 
verticale.
Non era quello che cercavo, ma in mancanza di meglio, va bene cosi'.
Una nota, io ho usato questa procedura e fino a 4 campi sono riuscito a 
visualizzarli piu' che bene senza che la scrollbar orizzontale venga 
visualizzata.
Ecco la procedura in originale
procedure AdjustColumnWidths(DBGrid: TDBGrid);
var
  TotalColumnWidth, ColumnCount, GridClientWidth, Filler, i: Integer;
begin
  ColumnCount := DBGrid.Columns.Count;
  if ColumnCount = 0 then
    Exit;
  // compute total width used by grid columns and vertical lines if any
  TotalColumnWidth := 0;
  for i := 0 to ColumnCount-1 do
    TotalColumnWidth := TotalColumnWidth + DBGrid.Columns[i].Width;
  if dgColLines in DBGrid.Options then
    // include vertical lines in total (one per column)
    TotalColumnWidth := TotalColumnWidth + ColumnCount;
  // compute grid client width by excluding vertical scroll bar, grid 
indicator,
  // and grid border
  GridClientWidth := DBGrid.Width - GetSystemMetrics(SM_CXVSCROLL);
  if dgIndicator in DBGrid.Options then begin
    GridClientWidth := GridClientWidth - IndicatorWidth;
    if dgColLines in DBGrid.Options then
      Dec(GridClientWidth);
  end;
  if DBGrid.BorderStyle = bsSingle then begin
    if DBGrid.Ctl3D then // border is sunken (vertical border is 2 pixels 
wide)
      GridClientWidth := GridClientWidth - 4
    else // border is one-dimensional (vertical border is one pixel wide)
      GridClientWidth := GridClientWidth - 2;
  end;
  // adjust column widths
  if TotalColumnWidth < GridClientWidth then begin
    Filler := (GridClientWidth - TotalColumnWidth) div ColumnCount;
    for i := 0 to ColumnCount-1 do
      DBGrid.Columns[i].Width := DBGrid.Columns[i].Width + Filler;
  end
  else if TotalColumnWidth > GridClientWidth then begin
    Filler := (TotalColumnWidth - GridClientWidth) div ColumnCount;
    if (TotalColumnWidth - GridClientWidth) mod ColumnCount <> 0 then
      Inc(Filler);
    for i := 0 to ColumnCount-1 do
      DBGrid.Columns[i].Width := DBGrid.Columns[i].Width - Filler;
  end;
end;
Basta prenderla cosi' com'e' metterla in un una unit e passargli la griglia.
Spero sia utile a qualcun altro oltre che a me.
Ciao a tutti,
Daniele 


http://www.swissdelphicenter.ch/en/showcode.php?id=1880
Marco sei sicuro di aver letto bene il post ?
Peccato che a lui interessava non visualizzare la barra orizzontale e 
non quella verticale...
--- posted by geoForum on 
http://www.delphiedintorni.it