![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему не очищаются Columns in DBGrid?
Drowsy © (2014-11-22 16:48:00)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.
Jeer (2014-11-26 16:37:00) [1]>Ega23 © (26.11.14 12:33) [16]
>Чего загадочного-то? Датасорс отцепил
Это я по поводу для ТС.
Ega23 (2014-11-26 14:00:00) [2]Там целый менеджер был написан.
Т.к. "всё равно на экране только один дбгрид в каждый момент времени".
junglecat (2014-11-26 13:40:00) [3]> фрейм в одном экземпляре пихать во все стопицот форм
вот это я понимаю - тру код реюзинг
Ega23 (2014-11-26 13:15:00) [4]Знавал я одного поциэнта, у него любимой темой было на фрейм набросить датасет, датасорс и дбгрид. А потом этот фрейм в одном экземпляре пихать во все стопицот форм своего приложения.
Вот он там тоже вручную в каждом месте колонки создавал.
junglecat (2014-11-26 13:11:00) [5]а для меня загадочна сама постановка вопроса: зачем очищать Columns in DBGrid?
Ega23 (2014-11-26 12:33:00) [6]Чего загадочного-то? Датасорс отцепил
Jeer (2014-11-25 20:55:00) [7]Самая загадочная програм-фраза :)
DBGrid1.DataSource := nil;
Ega23 (2014-11-25 15:32:00) [8]
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;
Германн (2014-11-25 01:21:00) [9]
> тогда уж DBCreed
<offtop>
Тогда уж лучше Creedence :)
</offtop>
Inovet (2014-11-24 19:53:00) [10]> DBCreed
И искать надо по сочетанию символов "DBGrid"
junglecat (2014-11-24 16:55:00) [11]> а DBGreed
тогда уж DBCreed
icWasya (2014-11-24 16:29:00) [12]код который ... живет в модуле, в котором живет грид.
И не CustomGreed, и не StringGreed, а DBGreed
кгшзх (2014-11-24 15:29:00) [13]слушай, чего тебе надо?
клеар добросовестно чистит все твои колонки.
они исчезают.
все.
бесследно.
затем, в связи с тем что к твоему гриду прикручен датасорс и датасет, грид пересоздает все колонки.
по числу полей датасета на который смотрит грид.
теперь про варианты.
вариант единственный - это исходники (а не косметичка жены или туалетный лоток кошки)
но исходников много и живут они в разных модулях
твой клеар - метод тколлекшон из классес пас.
который нихрена не знает ни про грид ни про его колонки.
код который пересоздает колонки живет в модуле, в котором живет грид.
имя модуля назвать или сам найдешь?
Drowsy (2014-11-24 14:59:00) [14]второй, наверно,
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 14:38:00) [15]А где эта процедура ResetColumnFieldBindings?
а давай подумаем, где она может быть?
у тебя есть много вариантов ? если да, то какой второй вариант?
Drowsy (2014-11-24 14:34:00) [16]
> после clear вызывается ResetColumnFieldBindings
А где эта процедура ResetColumnFieldBindings?
Ни в хелпах, ни в сорсах не могу найти.
junglecat (2014-11-24 14:16:00) [17]а приведенный код вообще не скомпилиццо. из-за буквы б после cnt
кгшзх (2014-11-24 14:11:00) [18]руками или автоматом роли не играет.
после clear вызывается ResetColumnFieldBindings
и если есть датасор/датасет, то для всех полей вызывается интерналадд.
великая тайна вселенной раскрывается за одну минуту
junglecat (2014-11-24 14:03:00) [19]> [1] Drowsy © (24.11.14 13:44)
а грид привязан к датасету? как там вообще колонки создаются: руками или автоматом из датасета?
кгшзх (2014-11-24 13:48:00) [20]в невнимательности и в ненаблюдательности