Главная страница
    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.51 MB
Время: 0.007 c
11-1192280293
Elec3C
2007-10-13 16:58
2008.08.10
F12


2-1215156404
laao
2008-07-04 11:26
2008.08.10
объясните поведение Delphi при выполнении следующего кода


3-1203881506
Novichek
2008-02-24 22:31
2008.08.10
Сохранение данные по средствам ADOStoredProc


2-1215664320
uno-84
2008-07-10 08:32
2008.08.10
Вопрос по ControlBar


2-1208861820
DJ Kondakov
2008-04-22 14:57
2008.08.10
Окно поверх всех окон





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