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

Вниз

DBGrid   Найти похожие ветки 

 
kirillrepin ©   (2008-07-07 15:05) [0]

Подскажите пожалуйста ответ на наверное глупый вопрос.
есть DBGrid и несколько Label, надо чтобы при клике на ячейке дбгрида выделялась строка и лэйбелах отображались содержимое ячеек из этой строки.
заранее благодарен!


 
Правильный^Вася   (2008-07-07 15:07) [1]

Dataset.AfterScroll


 
kirillrepin ©   (2008-07-07 15:20) [2]

извините не совсем понял ответ?


 
Поросенок Винни-Пух ©   (2008-07-07 15:22) [3]

TDBText вместо TLabel


 
kirillrepin ©   (2008-07-07 15:38) [4]

а как возможно реализовать так как поставлена задача?


 
Sergey13 ©   (2008-07-07 15:45) [5]

> [4] kirillrepin ©   (07.07.08 15:38)

А ты вообще программировал ранее? Тебе уже 2 варианта предложили.


 
Ega23 ©   (2008-07-07 15:47) [6]


> Dataset.AfterScroll


В данной ситуации я бы на TDataSource.OndataChange закладывался бы.


 
Правильный^Вася   (2008-07-07 15:53) [7]


> Dataset.AfterScroll
> kirillrepin ©   (07.07.08 15:20) [2]
> извините не совсем понял ответ?

в обработчике события присваиваешь своим наклейкам содержимое ячеек


 
Anatoly Podgoretsky ©   (2008-07-07 15:53) [8]


> А ты вообще программировал ранее? Тебе уже 2 варианта предложили.

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


 
Ega23 ©   (2008-07-07 16:03) [9]


> Так не законченые же, я вставлял - компилятор ругается.


Просто у вас проблемы с пониманием основ объектно-ориентированного программирования..  :)


 
Поросенок Винни-Пух ©   (2008-07-07 16:05) [10]

Чувак, замени лэйблы на tdbtext


 
Anatoly Podgoretsky ©   (2008-07-07 16:09) [11]

> Ega23  (07.07.2008 16:03:09)  [9]

Не у меня, а у компилятора.


 
Anatoly Podgoretsky ©   (2008-07-07 16:10) [12]

> Поросенок Винни-Пух  (07.07.2008 16:05:10)  [10]

Он же сказал - нельзя, зачет не примут.


 
BUM   (2008-07-08 12:30) [13]


> В данной ситуации я бы на TDataSource.OndataChange закладывался
> бы.

Почему это?


 
Ega23 ©   (2008-07-08 12:36) [14]


> Почему это?


Ну как же. А DataSet.Disable|EnableControls ?


 
BUM   (2008-07-08 12:48) [15]


> Ну как же. А DataSet.Disable|EnableControls ?

Ну дык AfterScroll в данном случае (DisableControls) и будет работать а не OndataChange..


 
Ega23 ©   (2008-07-08 12:54) [16]


> Ну дык AfterScroll в данном случае (DisableControls) и будет
> работать а не OndataChange..


Правильно.
А не задумывался, зачем DisableControls придумано? Как раз для того, чтобы отключить все визуальные компоненты и не тратить время на перерисовку данных.


 
BUM   (2008-07-08 13:10) [17]


> А не задумывался, зачем DisableControls придумано? Как раз
> для того, чтобы отключить все визуальные компоненты и не
> тратить время на перерисовку данных.

Интересно, это я нить обсуждения потерял или Вы?


 
Ega23 ©   (2008-07-08 13:30) [18]


> Интересно, это я нить обсуждения потерял или Вы?


А Вы не понимаете, о чём идёт речь?
Вообще-то я писал Правильному Васе, но раз Вы не понимаете, то объясняю:
1. Как известно, в DBGrid (DBEdit, DBLabel, DBLookupCombo и т.п.) нет никаких данных. Данные есть в "наборе данных" - в каком-то потомке TDataSet.
2. Есть такая штука, как TDataSource. Нужность данного компонента лично у меня вызывает массу вопросов (считаю его лишним), но - тут уж подеваться некуда. У каждого TDataSource есть один TDataSet. С другой стороны, у одного TDataSet может быть много разных TDataSource.
3. Есть такая штука, как TDataLink. Любой DBAware компонент где-то внутри себя (или в private или в protected) имеет DataLink. И именно в DataLink приходят все события от набора данных, такие как:
 3.1. ActiveChanged. Генерируется при изменении свойства Active. Т.е. при открытии или закрытии НД.
 3.2. DataChanged. Весьма любопытное событие. Генерируется много и часто. В основном при изменении положения курсора НД. Но, например, также генерируется при вызове TDataSet.EnableControls
 3.3. Всего их там порядка 7-10. При желании Вы сможете ознакомится с остальными в документации и в исходниках DB.TDataLink
4. Так вот. При вызове метода TDataSet.DisableControls происходит следующее: TDataSet начинает плевать на содержимое списка FListSource (вроде так называется. Лень смотреть. Короче, список всех TDataSource, "смотрящих" на этот НД) и не рассылает им сообщения о том, что с ним (TDataSet) что-то произошло. Т.е. данные в визуальных контролах как-бы "замирают" и перестают обновляться.
5. И они не обновляются, пока не будет вызван метод TDataSet.EnableControls (точнее, каждый раз, когда вызывается метод DisableControls, инкриментируется некий счётчик. При вызове EnableControls - он декриментируется. Если 0 - не изменяется. События пойдут тогда, когда равен 0).

Резюме: если мы хотим, чтобы событие происходило ВСЕГДА - действительно нужно закладываться на TDataSet.AfterScroll.
А вот если тогда, когда надо - тогда на TDataSource.OnDataChange


 
Василий Жогарев ©   (2008-07-08 13:37) [19]


> есть DBGrid и несколько Label, надо чтобы при клике на ячейке
> дбгрида выделялась строка и лэйбелах отображались содержимое
> ячеек из этой строки.

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
 Label1.Caption := ADOQuery1IdStreet.AsString;
 Label2.Caption := ADOQuery1Street.Value;
end;


 
BUM   (2008-07-08 13:45) [20]


> Вообще-то я писал Правильному Васе

Прошу прощения. И спасибо за объяснение. Хотя например
> Есть такая штука, как TDataSource. Нужность данного компонента
> лично у меня вызывает массу вопросов (считаю его лишним)

не совсем понял. Хотелось бы узнать как Вы без него обходитесь? Спасибо.


 
Ega23 ©   (2008-07-08 14:08) [21]


> не совсем понял. Хотелось бы узнать как Вы без него обходитесь?
>  Спасибо.


А я без него никак не обхожусь. Так уж вся эта связка устроена TDataSet -> TDataSource -> TDataLink
Просто его "нужность" в этой связке вызывает некоторые сомнения.
Впрочем это уже тема для совсем другого холивара, не имеющего отношения к сабжу.



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

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

Наверх




Память: 0.52 MB
Время: 0.015 c
11-1192628677
Jon
2007-10-17 17:44
2008.08.10
Problem with LoadLibrary


2-1215536561
maxmic
2008-07-08 21:02
2008.08.10
clipbrd и бинарные данные


15-1214050387
Илья Корстин
2008-06-21 16:13
2008.08.10
mui32.lib, glut32.lib, glut32.dll


15-1214169103
JetuS
2008-06-23 01:11
2008.08.10
Сниффер ICMP-пакетов


15-1214360615
Slider007
2008-06-25 06:23
2008.08.10
С днем рождения ! 25 июня 2008 среда