Омразен DBGrid, ширина на колоната

Реших да направя формуляра с DBGrid разтеглив, затова е необходимо да се позволи и колоните да се разтягат.
Затова попаднах на друг проблем:
Ако промените размера на колоната (поне с мишката, поне DBGrid1.Columns [0]. Ширина: = 100;) и след това
да направя
DBGrid1.DataSource.DataSet.Close;
DBGrid1.DataSource.DataSet.Open;
ширината на колоната се увеличава с около 20 пиксела и не само за тази, която е променила ширината, но и за всички в мрежата.
Полетата се добавят към набора от данни на мрежата, ако не се добавят, ширината се нулира до оригинала.

Възможно ли е да се справим с това или мрежата просто не е в състояние да се държи адекватно?

като пример за тестване можете да вземете същото
http://www.delphimaster.net/view/3-1199805755/
[24], просто трябва да добавите полета към заявката.

Запазете размерите в OnBeforeClose и ги задайте от запазените в OnAfterOpen

Изправени пред такъв боклук, ако скриете колоните, след това ги покажете отново.
Не се бих, смених логиката си.

> ширината на колоната се увеличава с около 20 пиксела
Не се получи. от същия пример (тип полета?)

но (!) това е
DBGrid1.DataSource.DataSet.Close;
DBGrid1.DataSource.DataSet.Open;
погрешно. трябва да е така
с DBGrid1.DataSource.DataSet do
започнете
DisableControls;
опитвам
Близо;
Отворен;
накрая
EnableControls;
край;
край;

Направено по този начин, само в BeforeClose, AfterOpen - работи.
Благодаря.

а видът полета няма значение.
Ако е интересно:
преди да натиснете бутоните, трябва да промените ширината на колоната, след което да натиснете бутона.

> преди да щракнете върху бутоните, трябва да промените ширината на колоната, след което да натиснете бутона.
направи така.

и ширината остана същата като преди натискането на бутона?

Ако все пак бихте се съгласили за версията на Delphi.
Изплюх 7-те си.

Забелязах това отдавна през 3, сега през 2005.

хайде, можеш да ядеш без FB. (Написах в тази тема)

> без FB
по-добре поставете тестовата база вместо това.

Можете обаче да промените TColumns.RebuildColumns

публикувано тук:
base, exe, източници (513Kb) http://ddsoftpro.lv/work/test_grid.zip
за всеки случай FB2_embedded (2.34Mb) http://ddsoftpro.lv/work/fb2_emb.zip

Писах набързо и следователно пътят до основата е в c: \ test_grid

и, разбира се, нямате колони в мрежата, но динамичните се пресъздават. и аз някак си "на машината" там на първо място (дайте руски имена на колоните). и по избор в набора от данни.

> Или може да възникнат някои проблеми?
преди да е необходимо, но всичко се променя. Почакайте, дори директно имената на полетата на руски най-често работят добре.
но навиците остават и няма да ги променя, гаранция за този рядък случай, който все още е възможен с руски имена досега.

има например ситуация, при която можете да получавате въпроси от сървъра ("?") по броя на буквите вместо вашите руски имена. Ще ви бъде по-лесно, защото това е много много рядко и главно поради глупостта на администратора на базата данни, когато трябва да разберете с клиента защо вашата програма е бъги (и игривите ръце на местния администратор.), и то в най-неудобното време. когато вече забравих какво правиш там.

> в самото начало на програмирането се сблъсках с някои проблеми поради това
Е, тук сте изправени пред проблеми поради липсата на това. или по-скоро не бъгове, а просто неразбиране на правилната работа като цяло, по някаква причина смятате, че трябва да е различно.

> И често използвам една мрежа за показване на различни набори от данни.
и не използвате деактивиране на контролите при промяна на данните, защото „срещнахте някои бъгове“?
В резултат на това получавате повторна инициализация на контролите „за всяко кихане“, още един „бъг“ и нежелание да използвате мрежата сега. "има някои проблеми с него".

променете мирогледа си. всъщност това не са "бъгове заради това", а заради вас, заради начина, по който го използвате и дали вашите идеи за нормалната работа на реалността.