Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

Сумма ячеек в DBgrid?   Найти похожие ветки 

 
49 Cent   (2006-02-24 00:15) [0]

Суть вопроса в следующем! У меня в аксесовском файл сохранен в таблице прайс лист. Сам прайс состоит из 2 частей: в одной части указаны элементы изделий, а в другой части указан материал. На пересечение указаны соответственно цены элементов в разных материалах. В большинстве случаев, цена заказа состоит из нескольких составляющих. Например, заказ может быть таким:
1элемент материал А+2 элемент материал B+5элемент материал D ...

Как я уже говорил прайс в Аксесе в виде таблицы. С этой таблицей я работаю с помощью Adotable и DBgrid. Очень хотелось бы выполнить следующую задачу. В Dbgrid отметить ячейки в которых указаны цены заказанных элементов и затем суммировать все значения выделенных ячеек. Такую задачу легко выполнить в Экселе. Зажимаешь Ctrl и выделяешь нужные ячейки, а внизу указана сумма. Однако, вопрос в том как выполнить эту задачу через Dbgrid? Даже если в свойстах отметить MultiSelect:=true, то все равно нельзя зажав Ctrl выделить нужные ячейки. Может есть иной способ? Скажем идеальный способ двойным кликом отметить нужные ячейки, выделить их цветом, чтобы юзер мог видеть чего он суммирует и затем после нажатия на кнопку суммировать все значения выделенных ячеек. Можно ли выполнить эту задачу? Если можно очень нужен исходник.
Заранее благодарен.


 
Плохиш ©   (2006-02-24 00:20) [1]

1. DBGrid - это не эксель.

> Даже если в свойстах отметить MultiSelect:=true, то все
> равно нельзя зажав Ctrl выделить нужные ячейки.

Странно, у меня позволяет.

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

Ну и в чём проблемы, в мировой помойке полно примеров. Набери в поиске "раскрасить DBGrid", на пример.


 
49 Cent   (2006-02-24 00:41) [2]


> Ну и в чём проблемы, в мировой помойке полно примеров. Набери
> в поиске "раскрасить DBGrid", на пример.

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


 
Плохиш ©   (2006-02-24 01:35) [3]


> но вопрос ... в том как просуммировать все выделенные ячейки

Пройтись по набору данных и если запись выделена, то прибавить её значение к сумме.


 
Плохиш ©   (2006-02-24 01:41) [4]

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


 
49 Cent   (2006-02-24 02:52) [5]

2 Плохиш
Спасибо за ссылку! Много полезного и нужного, но признаться ответ я так и не нашел. Т.е автор пишет про КАК ОТМЕТИТЬ НЕСКОЛЬКО СТРОК ИЛИ "НЕ MultiSelect"ОМ ЕДИНЫМ...", но признаться я не понял кода. Плюс какие-то наворты с check. Т.е алгоритм понятен, но вот как реализовать этот код для моей программы я опять же повторюсь не врубаюсь. Вы пишите:

> Пройтись по набору данных и если запись выделена, то прибавить
> её значение к сумме.

Если можно, конечно, не могли бы вы показать код, который реализует эту задачу? Т.е в конечном счете как я понимаю тут 2-3 строки кода. Видимо нужен цикл типа (while  not adotable1.Eof do begin) и во время цикла проверка условия на то выделена ли ячейка или нет. Непосредственно код очень сильно помог бы и все объяснил.


 
Плохиш ©   (2006-02-24 10:54) [6]

Берём за основу "Задача 5" из ссылки:

...
 sum := 0; DBGrid1.DataSet.First;
 while not DBGrid1.DataSet.Eof do
 begin
   Value := DBGrid1.DataSet.FieldByName("Species No").AsInteger;
   if ListSelect.IndexOf(Pointer(Value)) >=0 then
     sum := sum + DBGrid1.DataSet.FieldByName("Summa").AsFloat;
   DBGrid1.DataSet.Next;
 end;
 ShowMessage(FloatToStr(sum));
...


 
49 Cent   (2006-02-24 17:38) [7]

У меня тут такая мысль появилась! Ведь не обязательно проходиться по набору данных. Т.е можно сделать следующим образом! С помощью нескольких строк кода, можно определить значение выделенной ячейки. После двойного клика, значение выделенной ячейки можно прибавить к исходной цифре.

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


 
Плохиш ©   (2006-02-24 17:54) [8]


> В статье указанной по ссылке, пример того, как покрасить
> строку в случае если отмечен Checkbox.

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


 
49 Cent   (2006-02-24 19:02) [9]


> Враньё наглое

Ну, не вранье и не наглое... а недопонимание... возможно ламерское.

> Над привязкой приведённого примера к твоей конкретной задаче
> тебе придётся подумать самому.

Придеться. Не факт, что получится, но придется. :(


 
49 Cent   (2006-02-24 19:47) [10]

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



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

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
2-1140888361
Gydvin
2006-02-25 20:26
2006.03.12
Объединение строк в ASM


1-1139390282
nastya
2006-02-08 12:18
2006.03.12
вставить нестандартный символ


1-1139242281
Дмитрий_177
2006-02-06 19:11
2006.03.12
Событие, когда в буфере есть текст


2-1140536309
Байрам
2006-02-21 18:38
2006.03.12
Маска у FormatMaskText


2-1140437038
Василь Быков
2006-02-20 15:03
2006.03.12
Как добавить поле в таблицу ?