Делпхи: Аутоматско подешавање ширина ступца ДБГрид

Дизајниран тако да кориснику омогућава преглед и уређивање података у табеларној мрежи, ДБГрид пружа различите начине прилагођавања начина на који представљају "своје" податке. Са толико флексибилности, а Делпхи програмер увек може да нађе нове начине да га учини моћнијим.

Једна од недостајућих карактеристика ТДБГрид-а је да не постоји опција за аутоматско прилагођавање ширина одређених колона да би се у потпуности уклопила са ширином клијента мреже. Када промијените величину ДБГрид компоненте за вријеме извођења, ширине ступаца се не мијењају.

Ако је ширина ДБГрид већа од укупне ширине свих ступаца, добит ћете празан простор одмах након посљедњег ступца. С друге стране, ако је укупна ширина свих ступаца већа од ширине ДБГрид-а, појавит ће се хоризонтална трака за помицање.

Аутоматско подешавање ширина ступца ДБГрид

Постоји једна корисна процедура коју можете следити која фиксира ширине селективних ДБГрид ступаца када се решетка промијени у току извођења.

Важно је напоменути да обично само два до три ступца у ДБГрид-у заправо требају аутоматски промијенити величину; сви остали ступци приказују неке податке "статичке ширине". На пример, увек можете да одредите фиксну ширину за ступце који приказују вредности из поља података која су представљена са ТДатеТимеФиелд, ТФлоатФиелд, ТИнтегерФиелд и сличним.

instagram viewer

Шта више, вероватно ћете креирати (током пројектовања) трајне компоненте поља помоћу уређивача поља да бисте одредили поља у скупу података, њихова својства и редослед. С потицајним објектом ТФиелд, можете користити својство Таг да назначите да одређени ступац који приказује вриједности за то поље мора бити аутоматски величине.

Ово је идеја: Ако желите да ступац аутоматски прилагоди расположиви простор, доделите вредност целог броја за својство Ознаке десцендента ТФиелд која означава минималну ширину ступца.

Процедура ФикДБГридЦолумнВидтх

Пре него што започнете, у ОнЦреате догађај за објект Форм који садржи ДБГрид одредите које ступце је потребно аутоматски промијенити величином додјељивањем нулте вриједности за својство Таг одговарајућег објекта ТФиелд.

процедура ТФорм1.ФормЦреате (пошиљалац: ТОбјецт);
започети
// постављање ступаца који се могу аутоматски препознати додељивањем
// Минимм ширина у својству Таг.

// користећи фиксну вредност: 40 пк
Табела1.ФиелдБиНаме ('ФирстНаме'). Ознака: = 40;
// користећи променљиву вредност: ширина
// задани текст наслова колоне
Табела: ФиелдБиНаме ('ЛастНаме'). Ознака: = 4 + Цанвас. ТектВидтх (Табела1.ФиелдБиНаме ('ЛастНаме'). ДисплаиНаме);
крај
;

У горњем коду, Табела1 је компонента ТТабле-а повезана са ДатаСоурце компонента, који је повезан са ДБГридом. Својство Табле1.Табле упућује на таблицу ДБДемос запосленика.

Означили смо ступце који приказују вредности за поља ФирстНаме и ЛастНаме која се могу аутоматски променити. Следећи корак је да назовете нашу ФикДБГридЦолумнВидтх у програму за обраду догађаја ОнРесизе за образац:

процедура ТФорм1.ФормРесизе (Пошиљалац: ТОбјецт);
започети
ФикДБГридЦолумнВидтх (ДБГрид1);
крај
;

Белешка: Све ово има смисла ако својство Поравнање ДБГрид укључује једну од следећих вредности: алТоп, алБоттом, алЦлиент или алЦустом.

Коначно, ево кода процедуре ФикДБГридЦолумнВидтх:

процедура ФикДБГридЦолумнсВидтх (цонст ДБГрид: ТДБГрид);
вар
и: цели број; ТотВидтх: цео број; ВарВидтх: интегер; РесизаблеЦолумнЦоунт: цели број; АЦолумн: ТЦолумн;
започети
// укупна ширина свих колона пре величине
ТотВидтх: = 0;
// како поделити било који додатни простор у мрежи
ВарВидтх: = 0;
// колико ступаца треба аутоматски промијенити величину
РесизаблеЦолумнЦоунт: = 0;
за и: = 0 до -1 + ДБГрид. Колоне. Гроф добегин
ТотВидтх: = ТотВидтх + ДБГрид. Ступци [и]. Ширина;
ако ДБГрид. Ступци [и] .и поље. Ознака 0 онда
Инц (РесизаблеЦолумнЦоунт);
крај;
// додајте 1пк за линију раздвајања колонаако дгЦолЛинес у ДБГриду. Опције онда
ТотВидтх: = ТотВидтх + ДБГрид. Колоне. Цоунт;
// додајте ширину ступца индикатораако дгИндицатор у ДБГриду. Опције онда
ТотВидтх: = ТотВидтх + ИндицаторВидтх;
// ширина вале „лево“
ВарВидтх: = ДБГрид. ЦлиентВидтх - ТотВидтх;
// Равномјерно распоредити ВарВидтх
// у све ступце са аутоматским промјеном величине
ако РесизаблеЦолумнЦоунт> 0 онда
ВарВидтх: = варВидтх див РесизаблеЦолумнЦоунт;
за и: = 0 до -1 + ДБГрид. Колоне. Гроф добегин
АЦОЛумн: = ДБГрид. Ступци [и];
ако АЦолумн. Поље. Ознака 0 тхенбегин
АЦолумн. Ширина: = Колут. Видтх + ВарВидтх;
ако АЦолумн. Ширина тада
АЦолумн. Ширина: = Колут. Поље. Таг;
крај;
крај;
крај
; (* ФикДБГридЦолумнВидтх *)
instagram story viewer