Форум: "Базы";
Текущий архив: 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.005 c