Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zaobilaženje DoFilterRecord metode TBufDataseta

6 views
Skip to first unread message

AureliusMaticus

unread,
Jan 8, 2012, 3:40:02 AM1/8/12
to
Da bih ostvario master/detail filtriranje u svojoj komponenti koja je
nasljednica TBufDataset-a iz Freepascala (fpc 2.2.4 verzije),
zaobilazim DoFilterRecord metodu na slijedeći način:

[code]procedure TZMQueryDataSet.DoFilterRecord(var Acceptable:
Boolean);
var
i, vCount:Integer;
begin
//inherited behavior
inherited DoFilterRecord(Acceptable);
//New behavior
if ((FBulkInsert=False) and (DisableMasterDetailFiltration=False))
then begin
vCount:=0;
if (Assigned(MasterFields) and Assigned(MasterSource)
and Self.Active and MasterSource.DataSet.Active) then begin
self.Filtered:=True;
for i:=0 to self.MasterFields.Count-1 do begin
try
//If Name=Value (Detail field=Master field) pair is provided
If
((self.FieldByName(MasterFields.Names[i]).Value=MasterSource.DataSet.FieldByName(MasterFields.ValueFromIndex[i]).Value)
or
(self.FieldByName(MasterFields.Names[i]).AsString=MasterSource.DataSet.FieldByName(MasterFields.ValueFromIndex[i]).AsString))
then Inc(vCount);
except
//If Name=Value (Detail field=Master field) pair is not
provided
If
((self.FieldByName(MasterFields[i]).Value=MasterSource.DataSet.FieldByName(MasterFields[i]).Value)
or
(self.FieldByName(MasterFields[i]).AsString=MasterSource.DataSet.FieldByName(MasterFields[i]).AsString))
then Inc(vCount);
end;
end;
end;
if vCount=self.MasterFields.Count then Acceptable:=True
else Acceptable:=False;
end;
end;[/code]

To radi dobro, ali sam uočio da više ne radi normalno filtriranje
pomoću Filter i Filtered svojstava.

Jel' mi može tko pomoći, kako da zaobiđem DoFilterRecord, a da
istovremeno zadržim normalnu funkcionalnost filtriranja pomoću Filter
i Filtered svojstava?

Ivan@work

unread,
Jan 9, 2012, 2:14:45 AM1/9/12
to
On 01/08/2012 09:40 AM, AureliusMaticus wrote:
> Da bih ostvario master/detail filtriranje u svojoj komponenti koja je
> nasljednica TBufDataset-a iz Freepascala (fpc 2.2.4 verzije),
> zaobilazim DoFilterRecord metodu na slijedeći način:
>...
> To radi dobro, ali sam uočio da više ne radi normalno filtriranje
> pomoću Filter i Filtered svojstava.
>
> Jel' mi može tko pomoći, kako da zaobiđem DoFilterRecord, a da
> istovremeno zadržim normalnu funkcionalnost filtriranja pomoću Filter
> i Filtered svojstava?

Ovako iz glave mi se čini da je problem što ignoriraš slučaj kad
inherited DoFilterRecord postavi Acceptable na False. Najjednostavnije
je da tvoj kod ne radi ništa ako je Acceptable = False:

if Acceptable and not FBulkInsert and not DisableMasterDetailFiltration
0 new messages