Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
7-50146
Alku
2002-02-20 10:43
2002.05.16
Какой функцией можно поменять системное время?


14-50129
Agent Smith
2002-04-08 17:23
2002.05.16
России принимают DMCA!


1-50007
Novak
2002-04-30 12:03
2002.05.16
StringGrid. Очень интересно как...Спасибо.


1-49935
KvORubinX
2002-04-29 08:59
2002.05.16
GIF GIF GIF GIF GIF GIF GIF формат


6-50064
Q
2002-02-24 19:05
2002.05.16
JavaScript для HTML-граббера





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