Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему не очищаются Columns in DBGrid?


Страницы:   1 2

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]

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо