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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.007 c
15-1214071119
data
2008-06-21 21:58
2008.08.10
а я в отпуске))) пишу из Турции


15-1214220098
int64
2008-06-23 15:21
2008.08.10
Нет притока программистов в Delphi?


2-1215372434
Acronis
2008-07-06 23:27
2008.08.10
Вопрос про выбор папки


13-1120639782
Игорь Шевченко
2005-07-06 12:49
2008.08.10
Как вызывать виртуальные классовые методы из неклассовых методов?


6-1191501575
Леван Варшанидзе
2007-10-04 16:39
2008.08.10
IDFTP.LIST Не возвращает год создания фаила





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский