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

Вниз

Сумма ячеек в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.012 c
2-1140463821
Keyser
2006-02-20 22:30
2006.03.12
Как завершить процесс и запустить его?


2-1140641003
TimScorp
2006-02-22 23:43
2006.03.12
ListBox


8-1128180544
alsov
2005-10-01 19:29
2006.03.12
Как программно сделать mute


15-1140060498
КаПиБаРа
2006-02-16 06:28
2006.03.12
Ссылки в форуме


1-1139239622
Пётр
2006-02-06 18:27
2006.03.12
Как ограничить количество строк в Memo ?





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