Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > StringGrid и DBGrid


Автор: Syrex 4.9.2006, 11:56
Есть компонента String Grid (наверху) и  компонента DBGrid (внизу). DBGrid заполняется из файла bases.db (Paradox).
Задача: После введения числа в StringGrid (например в поле [1][1]) и нажатия кнопки Button1 её значение должно замениться на значение из поля Prise компоненты DBGrid, которое имеет такое же значение поля Number.

Автор: Greeen 4.9.2006, 12:01
Ну дык сначала Locate на нужную запись, а потом StringGrid1->Cell[1][1] = StringGrid1->Cell[1][1].ToInt() + FieldByName("Prise")->AsInteger;
Можешь конечно и запрос сообразить.  smile 

Автор: Syrex 4.9.2006, 12:21
Чего-то не то. Ты наверное не понял:
DBGrid:
Number | Prize
     1          123
     2          456

Если я в Ячейке SrtringGrid[1][1] ввожу число '1', то после нажатия оно должно замениться на '123'.
Если же я ввожу - '2' - то на '456' соответственно

Автор: The Thing 4.9.2006, 12:39
начал писать тебе ответ.. и понял, что я не понял вопроса!

Напиши более конкретную задачу! Есть то-то.. жму это.. не получается то-то!

Автор: Syrex 4.9.2006, 12:57
Например ввожу в ячейку [1][1] компоненты StringGrid значение '1'. 
Далее нажимаю на кнопку Button1.
На кнопке должен быть обработчик со следующим условием:
 -- Он должен заменить значение в ячейке [1][1] компоненты StringGrid на значение ячейки     компоненты DBGrid. Причем значение должно быть выбрано следующим образом: 
1. Мы ищем в компоненте DBGrid строку, в которой поле Number=значению ячейки [1][1] компоненты StringGrid.
2. Далее в найденной строке берем значение столбца "Prise" и присваиваем это значение ячейке [1][1] компоненты StringGrid.

Что сделано: Из файла *.db подгружаются значения в DBGrid. 
Не знаю как осуществить обращение к нужной ячейке (строка, столбец) в таблице DBGrid 

Автор: Greeen 4.9.2006, 16:55
Syrex, ищем не в DBGrid, а в DataSet или чего там у тебя. Короче в наборе данных Locate'ом ищешь нужную запись. Нашел, и ничего сложного? StringGrid1->Cell[1][1] = Dataset1->FieldByName["Prize"];
DBGrid не содержит данных, он их отображает

Автор: Syrex 5.9.2006, 09:57
А что значит поиск Locate'ом???

Автор: Greeen 5.9.2006, 10:07
Syrex, Locate это метод набора данных для поиска нужной записи.
Синтаксис не помню, посмотри в хэлпе, но по-моему Dataset1->Locate("FieldName", "Value");

Автор: Syrex 5.9.2006, 10:52
Я попробовал. Но вот проблема как правильно написать всё это в целом!!
Locate(KeyFields, Variant &KeyValues, TLocateOptions Options); - В хелпе
А вот как код на кнопку Button1 целиком написать??
Не могу связать всё это воедино

Автор: Greeen 5.9.2006, 11:02
Код

Dataset1->Locate("Number", StringGrid1->Cell[1][1], TLocateOptions());
StringGrid1->Cell[1][1] = Dataset1->FieldByName["Prize"];

Автор: Syrex 5.9.2006, 11:52
полностью рабочий код!
Код

       Table1->Locate("Number", StringGrid1->Cells[1][1], TLocateOptions());
       StringGrid->Cells[1][1] = Table1->FieldByName("Prize")->AsString;

Автор: Greeen 5.9.2006, 11:55
Syrex, хехе, забыл AsString дописать  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)