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

Вниз

Как перерисовать конкретную ячейку грида, а не весь грид?   Найти похожие ветки 

 
strelok-47   (2004-08-06 09:49) [0]

Грид Eh"ашный


 
Соловьев ©   (2004-08-06 09:54) [1]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=168


 
Johnmen ©   (2004-08-06 09:54) [2]

Что значит "перерисовать" ?


 
GRAND25 ©   (2004-08-06 09:59) [3]

Если тебе нужно запрограммировать особый вид ячейки в зависимости от выполнения каких-то условий, то вешайся на событие OnGetCellParams


 
strelok-47   (2004-08-06 10:19) [4]

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


 
Johnmen ©   (2004-08-06 10:24) [5]

Избавься от запроса при отрисовке. Тем более, что это порочный подход.
Для подробностей мало инфы...


 
GRAND25 ©   (2004-08-06 10:28) [6]

Может, тебе стоило бы создать в таблице, на которую должен выполняться такой запрос, поле, которое будет содержать результаты его выполнения? В смысле, физически. А в триггерах на Insert и Update тогда нужно обеспечить правильное заполнение этого поля: т.е. в этих триггерах запрос и выполнять. А потом уж покрасить в нужный цвет строку или ячейку грида - дело техники и тормозов не будет, т.к. не будет выполняться тормозящий запрос.

ЗЫ. Вынесение бизнес-логики на сервер рулит!


 
strelok-47   (2004-08-06 10:29) [7]

не могу избавиться, там три таблицы какскадом соеденены, и надо манипулировать с первым гридом, а данные брать из третьей


 
GRAND25 ©   (2004-08-06 10:33) [8]


> не могу избавиться, там три таблицы какскадом соеденены,
> и надо манипулировать с первым гридом, а данные брать из
> третьей


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


 
strelok-47   (2004-08-06 10:36) [9]

а ежели без триггеров? К тому же манипуляции на гриде я произвожу только если работаю именно с третьей таблицей в ее гриде, в зависимости от значения одного из ее полей


 
Sergey13 ©   (2004-08-06 10:38) [10]

2strelok-47   (06.08.04 10:29)
>не могу избавиться
Иногда "не могу" и "нельзя" разные вещи.


 
strelok-47   (2004-08-06 10:40) [11]

2 Sergey13
а если по существу?


 
Sergey13 ©   (2004-08-06 10:42) [12]

А по существу напиши свои запросы/структуры/задачу сюда - подумают люди. А то только гриды да таблицы, а информации пока что ноль.


 
Danilka ©   (2004-08-06 10:44) [13]

[11] strelok-47   (06.08.04 10:40)
Вообще-то тот-же вопрос можно и тебе адресовать. Подробнее описал-бы задачу, а то все какие-то абстракции. :))


 
Danilka ©   (2004-08-06 10:44) [14]

[12] Sergey13 ©   (06.08.04 10:42)
:))


 
strelok-47   (2004-08-06 10:49) [15]

а нафига? есть три таблицы Т1, Т2 и Т3, повязаны все как мастер-детайл, т.е. Т1 мастер для Т2, Т2 для Т3. Есть у них гриды Г1, Г2, Г3.задача такова: если я меняю значение записи в Т3, мне надо определенным образом подсветить мастерную запись в Т1. Все.

ЗЫ Запросы то зачем? А структура БД надо полагать? Переделывать я все равно уже не буду, в ней люди работают. Ранее я уже решал такую задачу, но тот подход гнилой и мне не нпавиться


 
Johnmen ©   (2004-08-06 10:51) [16]

А сечас как это делается ?


 
strelok-47   (2004-08-06 10:52) [17]

а никак, я потому с справшиваю.


 
Sergey13 ©   (2004-08-06 10:52) [18]

Ну дык если ты ничего не хочешь переделывать и менять то фиг ли спрашивать? Ждешь волшебного слова для ускорения? Ну с бубном попрыгай вокруг - иногда помогает. 8-)


 
strelok-47   (2004-08-06 10:53) [19]

2 Sergey13
смешно,


 
Sergey13 ©   (2004-08-06 10:56) [20]

2[19] strelok-47   (06.08.04 10:53)
Да скорее грустно. 8-(


 
strelok-47   (2004-08-06 11:03) [21]

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


 
Sergey13 ©   (2004-08-06 11:07) [22]

2[21] strelok-47   (06.08.04 11:03)
Кому нужен раскрашеный феррари, который ездит 20км.ч.? Может подругому сделать. Не грид красить, а какую нить "лампочку" сбоку приделать и по афтерскролл зажигать/гасить. Если еще и задержку сделаешь для быстрой прокрутки - вообще хорошо.


 
Danilka ©   (2004-08-06 11:11) [23]

гадание на кофейной гуще. :))
знать-бы, какие изменения в т3 как влияют на т1 еще можно было-бы что-то подумать и предложить, но, видимо, не судьба, недаром Стрелок, вероятно все это страшная военная тайна. :))


 
strelok-47   (2004-08-06 11:11) [24]

ламмпочка не катит, юзерам хочется всю картину видеть, т.е. чоб сразу были подсвечены все которые д.б.подсвечены, чоб они на них сразу же встали отредактровали что надо и, апосля того как отредактруют, чоб либо цвет фона в гриде нумер один либо изменился либо нет


 
strelok-47   (2004-08-06 11:15) [25]

2 Danilka
я же написал, значение одного из полей Т3. имя его я думаю не имеет значение. Назови его как хочешь.


 
GRAND25 ©   (2004-08-06 11:56) [26]


> если я меняю значение записи в Т3, мне надо определенным
> образом подсветить мастерную запись в Т1. Все.


В какой конкретно момент? OnColEnter, OnColExit, BeforePost, AfterPost?


> видимо все таки придется заюзать триггер.


таки скорее придется :)


 
strelok-47   (2004-08-06 12:02) [27]

AfterPost


 
GRAND25 ©   (2004-08-06 12:20) [28]


> AfterPost


Тогда триггер тебе сам доктор прописал, чтобы он срабатывал как раз в аккурат после добавления/изменения записи.


 
Sergey13 ©   (2004-08-06 12:26) [29]

2[24] strelok-47   (06.08.04 11:11)
>ламмпочка не катит, юзерам хочется всю картину видеть,
Им всегда много хочется. 8-) Но тогда программист должен либо послать их, либо пересмотреть подход к программе. Через запросы твоя задача вроде бы должна решаться проще. Но без инфы от тебя это просто слова.


 
strelok-47   (2004-08-06 12:38) [30]

ну тригер у Т3 сработает, а вот датасет Т1 изменится ли при этом? вряд ли. мне же надо каким-то образом заставить грид не _весь_ перерисоваться, а только одну запись его, соотвествующую Т1, т.е. меняется детайл - перерисовывается мастер


 
Sergey13 ©   (2004-08-06 12:42) [31]

30 постов уже, а пока даже тип БД не известен, не говоря уж о компонентах доступа. 8-)


 
strelok-47   (2004-08-06 12:45) [32]

а я не вписал? сорри...
ADO, MSSQL


 
GRAND25 ©   (2004-08-06 12:45) [33]


> ну тригер у Т3 сработает, а вот датасет Т1 изменится ли
> при этом? вряд ли.


А ты в Т1 поле новое введи, где флажочек будет ставиться с признаком, согласно которому и должна краситься строка грида. Затем покраска строки грида не будет уже вызывать никаких запросов и все будет работать шустро.


 
strelok-47   (2004-08-06 12:49) [34]

погоди, т.е. его надо делать "железным"?  Дык это мона и без триггеров решить...


 
GRAND25 ©   (2004-08-06 14:56) [35]

В каком смысле железным? Тебе же надо это поле заполнять чем-то типа 1,2,...,n в зависимости от результата какого-то запроса. Значит, триггер пусть и разруливает: выполняет запрос и в это новой поле пишет 1,2,...,n в зависимости от результата. А твоя клиентская аппликуха пусть красит строчки в зависимости от значения этого нового поля.

Если без триггеров, то ты можешь включить подсветку текущей строки на мастерном гриде даже тогда, когда он не имеет фокуса (Options.AlwaysShowSelection), но, если я правильно понял, тебе надо несколько другое.


 
strelok-47   (2004-08-06 15:05) [36]

Для того чтобы записывать в поле у Т1 совсем необязателен триггер, можно руками туда вносить значение чидя на AfterPost"е у Т3


 
GRAND25 ©   (2004-08-06 15:52) [37]


> Для того чтобы записывать в поле у Т1 совсем необязателен
> триггер, можно руками туда вносить значение чидя на AfterPost"е
> у Т3


Дело вкуса. Лично я привык бизнес-логику выносить на сервер максимально, насколько это возможно.


 
Sergey13 ©   (2004-08-06 15:54) [38]

2GRAND25 ©   (06.08.04 15:52)
>Дело вкуса. Лично я привык бизнес-логику
Ты считаешь что раскраска грида - это бизнес-лигика? Странный у тебя бизнес. 8-)


 
GRAND25 ©   (2004-08-06 16:42) [39]


> Ты считаешь что раскраска грида - это бизнес-лигика? Странный
> у тебя бизнес. 8-)


Не раскраска грида! А выполнение запроса, определяющего что-то там.


 
Sergey13 ©   (2004-08-09 09:25) [40]

2[39] GRAND25 ©   (06.08.04 16:42)
>Не раскраска грида! А выполнение запроса, определяющего что-то там.
... для раскраски грида. 8-)



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

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

Наверх





Память: 0.54 MB
Время: 0.034 c
3-1092027895
Kerk
2004-08-09 09:04
2004.09.05
Удаленное подключение к MsAccess-базе


14-1092656911
Piton
2004-08-16 15:48
2004.09.05
Просьба, оцените!


1-1092684475
tgrey
2004-08-16 23:27
2004.09.05
преобразование string в real


14-1092642134
Krups
2004-08-16 11:42
2004.09.05
Сам собираю компьютер


9-1084807193
Pirate
2004-05-17 19:19
2004.09.05
3D Движки





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