Вопрос № 82497: у меня мовсем простенький вопрос.в dbgrid у меня имеет код товара и наименование товара.мне нужно при нажатии на какую нибудь строку открывалась другая форма с дополнительной информацией и том товаре который я выбрала.я обрабатываю событие oncellclic...
Вопрос № 82.497
у меня мовсем простенький вопрос.в dbgrid у меня имеет код товара и наименование товара.мне нужно при нажатии на какую нибудь строку открывалась другая форма с дополнительной информацией и том товаре который я выбрала.я обрабатываю событие oncellclick.а вот что там писать я не понимаю?подскажите пожалуйста.спасибо
Отправлен: 13.04.2007, 22:41
Вопрос задал: Диана (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Крылов Александр Владимирович
Здравствуйте, Диана!
Для начала Вам необходимо продумать как Вы будете передавать информацию о выбранном товаре во вторую форму. Есть два способа.
1. Выполнять запрос на первой форме (с кодом и наименованием товара) и потом уже передавать все данные в контролы второй формы с подробным описанием товара. Предположим, что мы кликаем по коду товара
Примерно код процедуры должен быть таким:
uses Form2; //данная строка должна быть после implementation для связи двух форм
procedure TForm1.DBGridCellClick(Column: TColumn);
var
query:string;
ID:string
...
...
begin
ID:=DBGrid.SelectedField.AsString; // получаем значение в ячейке, т.е. код товара
// выполняем запрос на выборку информации по выбранному товару
Form2.EditPrice:=DataSource.DataSet.Fields[0].AsString; // и так далее заполняем все поля второй формы
end;
2 способ. По моему мнению данный способ лучше, т.к. нам необходимо передать лишь код товара, а на второй форме делать уже все что угодно.
В модуле второй формы в разделе public объявите переменную, в которую будете передавать код товара, пусть она будет называться kod_tovara типа string. В первой форме после implementation впишите uses ИМЯ_МОДУЛЯ_ВТОРОЙ_ФОРМЫ;
Далее идет код процедуры для первой формы
procedure TForm1.DBGridCellClick(Column: TColumn);
var
query:string;
...
...
begin
Form2.kod_tovara:=DBGrid.SelectedField.AsString;
Self.Hide; //прячем первую форму;
Form2.Show; //показываем вторую форму;
end;
Теперь осталось повесить обработчик на OnShow второй формы, в который и вытаскивать все данные по интересующему товару
Отвечает: Алексеев Александр Владимирович
Здравствуйте, Диана!
ну начни с того что у ттебя grid привязан к некой базе когда ты в грибе выбираешь строку то автоматически выбираются все данные касательно этой строки в базе.
Cod:=query1.fieldvalues['Cod'];
Cod:=Table1.fieldvalues['Cod'];
В переменную запишется значение поля COD из базы