Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];

Вниз

Почему не очищаются 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
15-1446150607
картман
2015-10-29 23:30
2016.07.24
сжатие строк


15-1439034187
xayam from work
2015-08-08 14:43
2016.07.24
Архивирование опять сломалось?


15-1441920602
Юрий
2015-09-11 00:30
2016.07.24
С днем рождения ! 11 сентября 2015 пятница


15-1447765802
Кто б сомневался
2015-11-17 16:10
2016.07.24
Digital signatures - как узнать name of signer программно


11-1260089096
RusSun
2009-12-06 11:44
2016.07.24
[Error] scaledemo1.pas(124)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский