Форум: "Базы";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];
ВнизВопрос о DrawColumnCell Найти похожие ветки
← →
Wik (2002-04-19 14:12) [0]Добрый день мастерам!
Вот какой вопрос. Вместо разных id подставляю значения и все было бы замечательно, если бы не одно но: после того как побываю в окне редактирования записи (оно у меня на другой форме), все подставленные значения (кроме текущей записи) исчезают. что за глюк и как с ним бороться? Refresh не помогает.
← →
Val (2002-04-19 14:21) [1]Нужно для этого использовать либо запрос, либо лукап поля.
Так у вас происходит потому, что перерисовываются все ячейки, а значений для отображения не получают, кроме текущей.
← →
Johnmen (2002-04-19 14:21) [2]??????????/
← →
wik (2002-04-19 14:49) [3]Это как?
← →
Johnmen (2002-04-19 15:25) [4]Если все еще есть желание получить ответ, задавай вопрос так, чтобы все понимали ...
← →
wik (2002-04-19 15:29) [5]Извините, но я не совсем понял, как сделать. Можно примерчик пожалуйста?
← →
Johnmen (2002-04-19 15:39) [6]Чего сделать-то ???????????????
← →
wik (2002-04-19 15:56) [7]Val сказал правильно. Все вычисляемые ячейки очищаются кроме текущей записи. Что сделать, чтобы они не очищались?
← →
Val (2002-04-19 16:03) [8]>wik (19.04.02 15:56)
так это в вопросе сказано так :)
а откуда вы берете значения для вписывания их вместо id?
← →
Lusha (2002-04-19 16:05) [9]>wik (19.04.02 15:56)
К вашему сведению вместе с гридом у Вас создается объект TGridDataLink связанный с гридом... Он содержит буфер записей (равный количеству видимых в гриде строк) и грид отрисовывает содержимое ячеек исходя из значений этого буфера... Так что лично я не понимаю, что у Вас происходит...
P.S. Может все таки приведете пример кода?
← →
wik (2002-04-19 16:32) [10]при входе на форму с гридом все в порядке.
procedure TFirmsF.DBGr1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var p1:integer;
s1,st1,s0:String;
begin
//---
← →
Johnmen (2002-04-19 16:41) [11]Случай тяжелый...требует срочного хирургического вмешательства...:))))))))
← →
Lusha (2002-04-19 16:48) [12]Основываясь на Вашем коде предположу, что грид в Вашей программе привязан к ZMySQLFirms... Если так, то следующая строка неверна...
try p1:=DM.ZMySqlQFirms.FieldByName("relat_id").Asinteger
И должна быть заменена на...
try p1:=TDBGrid(Sender).DataSource.DataSet.FieldByName("relat_id").Asinteger
Вообще у меня много чего есть сказать по этому коду... но я лучше промолчу... :)
← →
wik (2002-04-19 17:02) [13]Lusha, я с благодарностью выслушаю Ваши замечания. Надо же когда-нибудь учиться писать по человечески.
← →
Val (2002-04-19 17:07) [14]>Wik (19.04.02 14:12)
Знаете, не зря все так улыбаются-как у вас со скоростью при таком коде?
еще раз повторюсь-для отображения соответствующих ID значений из других таблиц нужно использовать лукап-поля либо соответствующие запросы в квери, выбирающие нужные значения по связям между таблицами.
А OnDrawColumnCell используют для чего нибудь попроще-например у вас в таблице поле принимает значения true или false(1 или 0), с помощью обработки этого события можно отобразить для пользователя "Да" либо "Нет" или что угодно еще.
← →
Lusha (2002-04-19 17:24) [15]>wik (19.04.02 17:02)
Ну, так если внести изменения согласно Lusha © (19.04.02 16:48)...
← →
wik (2002-04-19 17:34) [16]Спасибо за совет.
Скорость, как ни странно, прекрасная.query открывается только один раз, и фильтр работает гораздо быстрее чем select...where, особенно если поле неиндексировано.
Кстати, предыдущий совет не сработал.
Ячейки затираются даже в том случае, если их просто накрыть каким-нибудь окном.
← →
Lusha (2002-04-19 17:40) [17]Странно... Впрочем, если учесть, что Query открывается всего один раз... :)
← →
wik (2002-04-19 17:45) [18]Конечно. Там же стоит
if DM.ZMySqlQrelat.Active=False then begin
pr_open(st1, DM.ZMySqlQrelat);
Конечно, если бы MySQL поддерживал вложенные запросы, этой проблемы просто не возникло бы. Но...
← →
Lusha (2002-04-19 17:56) [19]Нашел... Орисовка работает только для p1>0. Иначе FillRect (читай пустая ячейка)...
До понедельника...
← →
wik (2002-04-19 18:04) [20]У меня p1>0 всегда, т.к. это id.
← →
Lusha (2002-04-19 22:42) [21]Вынужден признать, что представленный Вами код рабочий (проверил на Delphi 4 на DBDEMOS, слегка оптимизировав, разумеется), а все мои реплики, скажем так, "не в кассу"... :(
Единственное, что могу предложить в данной ситуации - убедиться, что ZMySqlQrelat используется лишь в представленном Вами обработчике...
P.S. Прислушайтесь к Val. Переходите на Lookup поля...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c