Форум: "Начинающим";
Текущий архив: 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