Метки записи: |
Незнаю в тули тему пишу...
Вобщем у меня появилась такая проблемка, мне надо связать два списка. Вот что я пытаюсь сделать:
В документах мне необходимо, что бы можно было выбирать доп реквизит в зависимости от выбранного контакта.
К примеру, скажем есть 10 клиентов и 18 счетов, как сделать так, чтоб при выборе клиента в списке считов были счета только выбранного клиента.
Комментарии
Нужно сделать примерно следующее:
1. На OnDataChange повесить обработку изменения контакта. (какую-то процедуру)
2. В этом обработчике необходимо изменять источник данных нужного контрола доп. реквизита. Делать это нужно с помощью функции GetAddInfoControl(self, 'код допреквизита', -1) получить контрол доп. реквизита и в свойство ListSource вписать созданный Вами объект TDataSource, который будет ссылатся соответственно на созданный Вами TADOQuery с SQL запросом, который будет строится динамически, в зависимости от переданного параметра - идентификатора контакта.
Non noceo.
Ну этот способ понятен.
Просто хотелось элегантного решения на уровне настраевомого списка:)
Клиент не всегда прав, но лучше не подавать вида.
Таким образом?
procedure OnDataChange(FieldName: string);
var
Q:TADOQuery;
DataSource1:TDataSource;
begin
if (fDocumentType_id=12) and (rCityDoc<>0) and (FieldName='rOOHVehicle') then
begin
Q:=OpenSQL('SELECT Supplier_id FROM OutDoor_1 WHERE City_id='+IntToStr(rCityDoc)+' AND Nositel_id='+IntToStr(rOOHVehicle));
//
DataSource1.DataSet:=Q;
GetAddInfoControl(self,'APSupplir',-1).ListSource:=DataSource1;
//
Q.Free;
end;
end;