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

Вниз

Оперативная перерисовка DBGrid а   Найти похожие ветки 

 
Johnmen   (2002-04-11 11:05) [0]

Имеется следующий обработчик :
procedure TForm1.XXXDataSet1AfterScroll(DataSet: TDataSet);
begin;
DBGrid1.Columns[x].Visible:=not DBGrid1.Columns[x].Visible;
end;

Если навигация осуществляется с помощью указанного грида, то ожидаемого эффекта не наблюдается...
Кто подскажет красивое решение проблемы ?
Благодарю заранее...


 
alexandr   (2002-04-11 11:17) [1]

прикольно как это: на четных записях столбец есть, на нечетных нет?


 
Lusha   (2002-04-11 11:18) [2]

>Johnmen ©
>Если навигация осуществляется с помощью указанного грида, то ожидаемого эффекта не наблюдается...

А ведь должен наблюдаться... Проблемка в коде...


 
Fareader   (2002-04-11 11:18) [3]

А если не секрет, то какой ожидаемый эффект ? :)


 
Johnmen   (2002-04-11 11:25) [4]

>alexandr © : это всего лишь абстрактный пример.
>Lusha © : если, например, навигация в др.гриде, связанном с тем же НД, то перерисовывается. Проблемка в каком коде ?
>Fareader © : колонка то появляется, то исчезает при смене текущей записи.


 
Lusha   (2002-04-11 11:34) [5]

Именно навигация в гриде DBGrid1 тоже должна приводить к перерисовке (в данном коде появлению - исчезанию колонки). В каком коде? В коде программы, разумеется. Я набросал постенький пример TDataSet + TDataSource + TDBGrid + TDBNavigator. Указанный Вами обработчик, мсрабатывает и как при навигации посредством TDBNavigator, так и при навигации посредстыом TDBGrid... Или я чего то не понял?


 
Johnmen   (2002-04-11 11:41) [6]

>Lusha © :
1. Предлагаю быть попроще и перейти на ты.
2. Понял правильно. Добавлю, что юзается простенькая тестовая табличка из IB базы, поля НД прописаны статично, колонки грида прописаны статично.


 
Lusha   (2002-04-11 11:45) [7]

Словил... Подумаю... :)


 
Lusha   (2002-04-11 12:41) [8]

Нда-а-с. Вообще это смахивает на глюк. Если колонки явно не заданы в design Time - все работает...

Попробуй такой код...

type
TMyGridColumns = class(TDBGridColumns);

...

DBGrid1.Columns[х].Visible := not DBGrid1.Columns[х].Visible;
TMyColumns(DBGrid1.Columns).Update(DBGrid1.Columns[х]);




 
Johnmen   (2002-04-11 14:05) [9]

>Lusha © (11.04.02 12:41) :
Спасибо за проявленное участие !
Как всегда идет борьба с особенностями или/и с глюками !
Пробовал не задавать колонок в дизайне - тишина....
А вот этот твой вариант латания
TMyColumns(DBGrid1.Columns).Update(DBGrid1.Columns[х]);
работает в обоих случаях !
Я же решал эту проблему извратом, типа
DBGrid1.Columns[х].Width := DBGrid1.Columns[х].Width;
причем если колонок изменяющих видимость несколько, то надо делать для всех (и в твоем варианте и в моем) !

Еще раз спасибо !

>All : Если кто предложит еще варианты - буду рад !


 
Lusha   (2002-04-11 14:25) [10]

Johnmen ©
>Пробовал не задавать колонок в дизайне - тишина....
Живу на Delphi4. Если в Design Time колонки не определены - все работает корректно. Если бы ты не сказал что "колонки грида прописаны статично" мы бы друг друга не поняли... :)


 
Твой Малдер   (2002-04-11 14:26) [11]

...Кстати, аналогичная проблема перерисовки грида возникает и при изменении количества доступных записей в НД, напр.при установке фильтра...


 
Johnmen   (2002-04-11 14:41) [12]

Твой Малдер <=> Johnmen (в данном случае)/забыл обновить имя/

>Lusha © : Выясняются интересные вещи - в D4 глюка почти нет, а в D5, D6 - уже совсем есть ! (в случае неопределенности колонок)
Будет время - покопаюсь в исходниках...


 
Johnmen   (2002-04-11 16:17) [13]

Господа ! Скиньте сюда, у кого есть, процедуру отработки
TDBGridColumns.Update от D4, будьте любезны !


 
Lusha   (2002-04-11 16:23) [14]

>Johnmen ©
Не надо. Я был не прав. Этот эффект присутствует и у Delphi4. Я его просто благополучно прощелкал. И не глюк это, как выясняется, а обычная фича. Причина (на мой взгляд) обработчик мыши. Клик мыши в ячейке восприниматься как выбор ячейки (записи), а если она при этом пропадает...

С TDBGridColumns.Update все нормально и прозрачно... Проверь как работает обработчик OnAfterScroll при перемещении посредством клавиатуры - все ОК. Грабли только на мыши...


 
Johnmen   (2002-04-11 16:33) [15]

>Lusha © : Проверил, увы - грабли везде (что мыша, что клава) :)


 
Lusha   (2002-04-11 16:50) [16]

>Johnmen ©
Все тщательно (первый раз за день :) ) проверил. Не работает именно перемещение в гриде посредством мыши. Нашел где грабли в обработчике MouseDown и успокоился на счет Delphi4...

>Проверил, увы - грабли везде (что мыша, что клава) :)
Верю... Проверил на Builder5. Действительно грабли... :(
Что касается обработчика TDBGridColumns.Update, то они идентичны в Delphi4 и Delphi5... Ищу разницу...


 
Lusha   (2002-04-12 10:48) [17]

Я сравнил модули dbgrids от delphi4 и delphi5 (из поставки CBuilder5). Результат сравнения могу выслать...

С подобного рода граблями я столкнулся когда общался с бета версией Delphi3. Там была куча глюков в BDGrid. Я их пофиксил, а когда вышла официальная версия, то никаких особых исправлений я в новой версии модуля так и не обнаружил... Самое смешное, что стоило установить модуль dbgrids от бета версии (оригинальный) и грид снова начинал глючить и в официальной версии... Я не стал разбираться и забил...

P.S. Если что найдешь, сообщи...


 
Johnmen   (2002-04-12 10:52) [18]

>Lusha © : Да-да, вышли, пожалуйста, dbgrids от delphi4 и Результат сравнения !



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

Форум: "Базы";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
1-17609
Ежик2
2002-04-21 19:22
2002.05.06
Чем отличаются Dephi Personal, Professional и Enterprise?


14-17668
VictorT
2002-02-20 16:47
2002.05.06
Игрушка для програмиста


14-17677
SPeller
2002-03-22 14:26
2002.05.06
Глупый вопрос..


14-17697
MBo
2002-03-29 16:16
2002.05.06
Заинтересовался вот.


1-17607
SergeySh
2002-04-22 16:31
2002.05.06
Как отловить создание MDIChild окна?





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