Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос о DrawColumnCell


Страницы:   1 2

Wik ©   (2002-04-19 14:12:00) 

Добрый день мастерам!
Вот какой вопрос. Вместо разных id подставляю значения и все было бы замечательно, если бы не одно но: после того как побываю в окне редактирования записи (оно у меня на другой форме), все подставленные значения (кроме текущей записи) исчезают. что за глюк и как с ним бороться? Refresh не помогает.


Lusha   (2002-04-19 22:42:00) [1]

Вынужден признать, что представленный Вами код рабочий (проверил на Delphi 4 на DBDEMOS, слегка оптимизировав, разумеется), а все мои реплики, скажем так, "не в кассу"... :(

Единственное, что могу предложить в данной ситуации - убедиться, что ZMySqlQrelat используется лишь в представленном Вами обработчике...

P.S. Прислушайтесь к Val. Переходите на Lookup поля...


wik   (2002-04-19 18:04:00) [2]

У меня p1>0 всегда, т.к. это id.


Lusha   (2002-04-19 17:56:00) [3]

Нашел... Орисовка работает только для p1>0. Иначе FillRect (читай пустая ячейка)...

До понедельника...


wik   (2002-04-19 17:45:00) [4]

Конечно. Там же стоит
if DM.ZMySqlQrelat.Active=False then begin
pr_open(st1, DM.ZMySqlQrelat);

Конечно, если бы MySQL поддерживал вложенные запросы, этой проблемы просто не возникло бы. Но...


Lusha   (2002-04-19 17:40:00) [5]

Странно... Впрочем, если учесть, что Query открывается всего один раз... :)


wik   (2002-04-19 17:34:00) [6]

Спасибо за совет.
Скорость, как ни странно, прекрасная.query открывается только один раз, и фильтр работает гораздо быстрее чем select...where, особенно если поле неиндексировано.
Кстати, предыдущий совет не сработал.
Ячейки затираются даже в том случае, если их просто накрыть каким-нибудь окном.


Lusha   (2002-04-19 17:24:00) [7]

>wik (19.04.02 17:02)
Ну, так если внести изменения согласно Lusha © (19.04.02 16:48)...


Val   (2002-04-19 17:07:00) [8]

>Wik (19.04.02 14:12)
Знаете, не зря все так улыбаются-как у вас со скоростью при таком коде?
еще раз повторюсь-для отображения соответствующих ID значений из других таблиц нужно использовать лукап-поля либо соответствующие запросы в квери, выбирающие нужные значения по связям между таблицами.
А OnDrawColumnCell используют для чего нибудь попроще-например у вас в таблице поле принимает значения true или false(1 или 0), с помощью обработки этого события можно отобразить для пользователя "Да" либо "Нет" или что угодно еще.


wik   (2002-04-19 17:02:00) [9]

Lusha, я с благодарностью выслушаю Ваши замечания. Надо же когда-нибудь учиться писать по человечески.


Lusha   (2002-04-19 16:48:00) [10]

Основываясь на Вашем коде предположу, что грид в Вашей программе привязан к ZMySQLFirms... Если так, то следующая строка неверна...
try p1:=DM.ZMySqlQFirms.FieldByName("relat_id").Asinteger
И должна быть заменена на...
try p1:=TDBGrid(Sender).DataSource.DataSet.FieldByName("relat_id").Asinteger

Вообще у меня много чего есть сказать по этому коду... но я лучше промолчу... :)


Johnmen   (2002-04-19 16:41:00) [11]

Случай тяжелый...требует срочного хирургического вмешательства...:))))))))


wik   (2002-04-19 16:32:00) [12]

при входе на форму с гридом все в порядке.

procedure TFirmsF.DBGr1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var p1:integer;
s1,st1,s0:String;
begin
//---


Lusha   (2002-04-19 16:05:00) [13]

>wik (19.04.02 15:56)
К вашему сведению вместе с гридом у Вас создается объект TGridDataLink связанный с гридом... Он содержит буфер записей (равный количеству видимых в гриде строк) и грид отрисовывает содержимое ячеек исходя из значений этого буфера... Так что лично я не понимаю, что у Вас происходит...


P.S. Может все таки приведете пример кода?


Val   (2002-04-19 16:03:00) [14]

>wik (19.04.02 15:56)
так это в вопросе сказано так :)
а откуда вы берете значения для вписывания их вместо id?


wik   (2002-04-19 15:56:00) [15]

Val сказал правильно. Все вычисляемые ячейки очищаются кроме текущей записи. Что сделать, чтобы они не очищались?


Johnmen   (2002-04-19 15:39:00) [16]

Чего сделать-то ???????????????


wik   (2002-04-19 15:29:00) [17]

Извините, но я не совсем понял, как сделать. Можно примерчик пожалуйста?


Johnmen   (2002-04-19 15:25:00) [18]

Если все еще есть желание получить ответ, задавай вопрос так, чтобы все понимали ...


wik   (2002-04-19 14:49:00) [19]

Это как?


Val   (2002-04-19 14:21:00) [20]

Нужно для этого использовать либо запрос, либо лукап поля.
Так у вас происходит потому, что перерисовываются все ячейки, а значений для отображения не получают, кроме текущей.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо