Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2016.07.24;
Скачать: CL | DM;

Вниз

Почему не очищаются Columns in DBGrid?   Найти похожие ветки 

 
Drowsy ©   (2014-11-22 16:48) [0]

cnt1 = cnt
Почему?

type
 TForm2 = class(TForm)
   DBGrid1: TDBGrid;
   Button1: TButton;
   Label1: TLabel;
   Label2: TLabel;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var cntб сnt1 : integer;
begin
 cnt := DBGrid1.Columns.Count;
 Label1.Caption := IntToStr(cnt);

 DBGrid1.Columns.Clear;

 cnt1 := DBGrid1.Columns.Count;
 Label2.Caption := IntToStr(cnt1);
end;

end.


 
Drowsy ©   (2014-11-24 13:44) [1]

Кому не лень, намекните, хотя бы, в чём причина?


 
кгшзх ©   (2014-11-24 13:48) [2]

в невнимательности и в ненаблюдательности


 
junglecat ©   (2014-11-24 14:03) [3]

> [1] Drowsy ©   (24.11.14 13:44)

а грид привязан к датасету? как там вообще колонки создаются: руками или автоматом из датасета?


 
кгшзх ©   (2014-11-24 14:11) [4]

руками или автоматом роли не играет.
после clear вызывается ResetColumnFieldBindings
и если есть датасор/датасет, то для всех полей вызывается интерналадд.

великая тайна вселенной раскрывается за одну минуту


 
junglecat ©   (2014-11-24 14:16) [5]

а приведенный код вообще не скомпилиццо. из-за буквы б после cnt


 
Drowsy ©   (2014-11-24 14:34) [6]


> после clear вызывается ResetColumnFieldBindings


А где эта процедура ResetColumnFieldBindings?
Ни в хелпах, ни в сорсах не могу найти.


 
кгшзх ©   (2014-11-24 14:38) [7]

А где эта процедура ResetColumnFieldBindings?

а давай подумаем, где она может быть?
у тебя есть много вариантов ? если да, то какой второй вариант?


 
Drowsy ©   (2014-11-24 14:59) [8]

второй, наверно,
procedure TCollection.Clear;
begin
 if FItems.Count > 0 then
 begin
   BeginUpdate;
   try
     while FItems.Count > 0 do
       TCollectionItem(FItems.Last).Free;
   finally
     EndUpdate;
   end;
 end;
end;

а какой первый?


 
кгшзх ©   (2014-11-24 15:29) [9]

слушай, чего тебе надо?

клеар добросовестно чистит все твои колонки.
они исчезают.
все.
бесследно.

затем, в связи с тем что к твоему гриду прикручен датасорс и датасет, грид пересоздает все колонки.
по числу полей датасета на который смотрит грид.

теперь про варианты.
вариант единственный - это исходники (а не косметичка жены или туалетный лоток кошки)
но исходников много и живут они в разных модулях
твой клеар  - метод тколлекшон из классес пас.
который нихрена не знает ни про грид ни про его колонки.

код который пересоздает колонки живет в модуле, в котором живет грид.

имя модуля назвать или сам найдешь?


 
icWasya ©   (2014-11-24 16:29) [10]

код который ... живет в модуле, в котором живет грид.
И не CustomGreed, и не StringGreed, а DBGreed


 
junglecat ©   (2014-11-24 16:55) [11]

> а DBGreed

тогда уж DBCreed


 
Inovet ©   (2014-11-24 19:53) [12]

> DBCreed

И искать надо по сочетанию символов "DBGrid"


 
Германн ©   (2014-11-25 01:21) [13]


> тогда уж DBCreed

<offtop>
Тогда уж лучше Creedence :)
</offtop>


 
Ega23 ©   (2014-11-25 15:32) [14]

procedure TForm2.Button1Click(Sender: TObject);
var cntб сnt1 : integer;
begin
cnt := DBGrid1.Columns.Count;
Label1.Caption := IntToStr(cnt);

DBGrid1.DataSource := nil;
DBGrid1.Columns.Clear;

cnt1 := DBGrid1.Columns.Count;
Label2.Caption := IntToStr(cnt1);
end;


 
Jeer ©   (2014-11-25 20:55) [15]

Самая загадочная програм-фраза :)
DBGrid1.DataSource := nil;


 
Ega23 ©   (2014-11-26 12:33) [16]

Чего загадочного-то? Датасорс отцепил


 
junglecat ©   (2014-11-26 13:11) [17]

а для меня загадочна сама постановка вопроса: зачем очищать Columns in DBGrid?


 
Ega23 ©   (2014-11-26 13:15) [18]

Знавал я одного поциэнта, у него любимой темой было на фрейм набросить датасет, датасорс и дбгрид. А потом этот фрейм в одном экземпляре пихать во все стопицот форм своего приложения.
Вот он там тоже вручную в каждом месте колонки создавал.


 
junglecat ©   (2014-11-26 13:40) [19]

> фрейм в одном экземпляре пихать во все стопицот форм

вот это я понимаю - тру код реюзинг


 
Ega23 ©   (2014-11-26 14:00) [20]

Там целый менеджер был написан.
Т.к. "всё равно на экране только один дбгрид в каждый момент времени".


 
Jeer ©   (2014-11-26 16:37) [21]

>Ega23 ©   (26.11.14 12:33) [16]
>Чего загадочного-то? Датасорс отцепил

Это я по поводу для ТС.



Страницы: 1 вся ветка

Текущий архив: 2016.07.24;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
15-1444082370
d2pak
2015-10-06 00:59
2016.07.24
Что с Delphi World


15-1445780305
Кто б сомневался
2015-10-25 16:38
2016.07.24
Посоветуйте какие то интересные сайты, типа хабра


15-1442241297
timokhasarov
2015-09-14 17:34
2016.07.24
Access ошибка доступа к программе


15-1444944604
Юрий
2015-10-16 00:30
2016.07.24
С днем рождения ! 16 октября 2015 пятница


2-1412944569
Mass
2014-10-10 16:36
2016.07.24
прилипание