[ Mr. Rejn @ 27.07.2006. 10:12 ] @
Kako se moze programski izvrsiti zbijanje kolona u DBGridu tako da sirina kolone odgovara duzini zapisa,
kako se ne bi nekontrolosano sirile u tabeli? Radi se u BCB6.
[ itf @ 27.07.2006. 11:23 ] @
Pokušaj ovo za svaki stupac,
Code:
DBGrid1->Columns[0].RebuildColumns();

...iako se meni to i ne sviđa jer uvijek stavljam sve fiksne dužine. Ako mi baš to treba onda u DBGridu koristim font Courier jer su svi znakovi jednake duljine pa po formuli izračunam duljinu stupca u ovisnosti o broju znakova koji se prikazuje u koloni..
[ IDE @ 29.07.2006. 17:38 ] @
Citat:
DBGrid1->Columns[0].RebuildColumns();


meni ovo ne radi... ??

ima li neki drugi, elegantniji, nacin (koji radi ;-) )
[ X Files @ 29.07.2006. 18:16 ] @
Nisam isprobao, ali medota TCanvas::TextWidth() bi trebala da pomogne.

Canvas->TextWidth( "neki tekst" ) bi trebalo da vrati duzinu stringa "neki tekst" u pixelima,
pa onda kolonu DBGrida u kome se nalazi tekst treba povecati na tu vrednost.

Na primer:

DBGrid1->Columns->Items[0]->Width = Canvas->TextWidth( DBGrid1->Columns->Items[0]->AsString ) + 2;

Mada ja licno nikada ne racunam najduzi tekst kolone, nego sirinu postavim na neke logicne vrednosti.
[ Mr. Rejn @ 31.07.2006. 11:48 ] @
Dobro, mislim da cu se zadovoljiti fiksiranjem sirine kolona,npr.:
Code:

int br_kolona = DBGrid1->Columns->Count;
for (int i=0;i<br_kolona;i++) {
  DBGrid1->Columns->Items[i]->Width = 85;
        }


[ X Files @ 31.07.2006. 17:38 ] @
Pored nacina koji i sam koristis:

DBGrid->Columns->Items[0]->Width = NEKA_VREDNOST_U_PIXELIMA;

Probaj i ovo:

DBGrid->Fields[0]->DisplayWidth = NEKA_VREDNOST_ALI_U_KARAKTERIMA;

(Nisam siguran, ali ovaj drugi bi valjda trebao da uzme u obzir i font da bi odredio sirinu. Najbolje isprobaj)
[ IDE @ 31.07.2006. 21:52 ] @
nije lose ni ovako:
Code:

for(int i=0;i<DBGrid1->FieldCount;i++)
DBGrid->Columns->Items[i]->Width=DBGrid1->Width/(DBGrid1->FieldCount+1)


Ovako radim kada zelim da mi sva polja stanu u DBGrid1 bez obzira koliko su siroka...
[ miki78ns @ 24.05.2009. 16:50 ] @
Probao sam oba nacina kao sto objasnjava 'X Files' i to je tako dok ne pokrenem aplikaciju onda opet se sve razvuce i bude puno siroko, koristim Access bazu pomocu ADO komponenti.
[ X Files @ 24.05.2009. 17:04 ] @
Gde si stavio kod za Resize kolona u TDBGridu?

Ako se radi o nekom dinamickom upitu, najbolje promenu sirine kolona (kod koji imas) stavi neposredno nakon upita.

Ako je broj kolona uvek isti, to mozes definisati i kroz Object inspector, bez koda.
[ miki78ns @ 24.05.2009. 22:06 ] @
sve podesavam u object inspector, uspeo sam izgleda da je fora bila da DBGrid rasirim vertikalno vise tako da mi se nepojavljuje dole onaj klizac za pomeranje. Nemoze biti samo to verovatnio sam jos nesto cackao, jer pre se desavalo imam 8 kolona sve stavim 70 sirinu, snimim sve, pokrenem aplikaicju pa ugasim kad ono nekoliko kolona opet se vratilo na sirinu 300.
[ bventil @ 26.05.2009. 14:27 ] @
Evo sta ja radim. Nije elegantno ali radi.
U dizajn modu postavi table-active na true, postavi sve sirine kolona kako zelis, vrati active na false i to je to.(ako umesto connstringa koristis ADOconnection postavi i njemu active na true)