baran_2005
یک شنبه 10 آبان 1388, 11:20 صبح
سلام به همه دوستان
من برای sort dbgrid در برنامه یک تابع دارم که در ontitleclick هر کدام از grid ها فراخوانی می کنم و از دستور order by در sql و یا dataset نمی خواهم استفاده کنم . تا حالا مشکلی نداشتم الان که در dll قرارش دادم دچار مشکل شدم . ایا دوستان می تونند کد رو به گونه ای تغییر بدهند که در dll قابل استفاده باشد .
procedure Sort_Grid(Column: TColumn);
var
andstr:string;
i:integer;
begin
try
if Column.Field.FieldKind<>fkData then exit;
andstr:='';
if (Column.Field.DataSet.ClassNameIs ('tadoquery')=true) then
begin
if tadoquery(Column.Field.DataSet ).sort='' then
andstr:=''
else
andstr:=',';
if KeyDataToShiftState(1)=[ssctrl] then
begin
tadoquery(Column.Field.DataSet ).sort:=tadoquery(Column.Field.DataSet ).sort+andstr+Column.FieldName;
Column.Title.Font.Color:=clyellow;
end;
if KeyDataToShiftState(1)=[] then
begin
for i:=0 to TDBGrid(Column.Grid ).Columns.Count-1 do
TDBGrid(Column.Grid ).Columns[i].Title.Font.Color:=clWhite;
Column.Title.Font.Color:=clyellow;
tadoquery(Column.Field.DataSet ).sort:=Column.FieldName;
end;
if KeyDataToShiftState(1)=[ssctrl,ssshift] then
begin
tadoquery(Column.Field.DataSet ).sort:= tadoquery(Column.Field.DataSet ).sort+andstr+Column.FieldName+' DESC';
Column.Title.Font.Color:=$000A71FC;
end;
if KeyDataToShiftState(1)=[ssshift] then
begin
for i:=0 to TDBGrid(Column.Grid ).Columns.Count-1 do
(Column.Grid as TDBGrid).Columns[i].Title.Font.Color:=clWhite;
Column.Title.Font.Color:=$001D9DE2;
tadoquery(Column.Field.DataSet).sort:=Column.Field Name+' DESC';
end;
end;
if KeyDataToShiftState(1)=[ssctrl] then
except on e:exception do
ShowMessage (e.Message );
end;
end;
من برای sort dbgrid در برنامه یک تابع دارم که در ontitleclick هر کدام از grid ها فراخوانی می کنم و از دستور order by در sql و یا dataset نمی خواهم استفاده کنم . تا حالا مشکلی نداشتم الان که در dll قرارش دادم دچار مشکل شدم . ایا دوستان می تونند کد رو به گونه ای تغییر بدهند که در dll قابل استفاده باشد .
procedure Sort_Grid(Column: TColumn);
var
andstr:string;
i:integer;
begin
try
if Column.Field.FieldKind<>fkData then exit;
andstr:='';
if (Column.Field.DataSet.ClassNameIs ('tadoquery')=true) then
begin
if tadoquery(Column.Field.DataSet ).sort='' then
andstr:=''
else
andstr:=',';
if KeyDataToShiftState(1)=[ssctrl] then
begin
tadoquery(Column.Field.DataSet ).sort:=tadoquery(Column.Field.DataSet ).sort+andstr+Column.FieldName;
Column.Title.Font.Color:=clyellow;
end;
if KeyDataToShiftState(1)=[] then
begin
for i:=0 to TDBGrid(Column.Grid ).Columns.Count-1 do
TDBGrid(Column.Grid ).Columns[i].Title.Font.Color:=clWhite;
Column.Title.Font.Color:=clyellow;
tadoquery(Column.Field.DataSet ).sort:=Column.FieldName;
end;
if KeyDataToShiftState(1)=[ssctrl,ssshift] then
begin
tadoquery(Column.Field.DataSet ).sort:= tadoquery(Column.Field.DataSet ).sort+andstr+Column.FieldName+' DESC';
Column.Title.Font.Color:=$000A71FC;
end;
if KeyDataToShiftState(1)=[ssshift] then
begin
for i:=0 to TDBGrid(Column.Grid ).Columns.Count-1 do
(Column.Grid as TDBGrid).Columns[i].Title.Font.Color:=clWhite;
Column.Title.Font.Color:=$001D9DE2;
tadoquery(Column.Field.DataSet).sort:=Column.Field Name+' DESC';
end;
end;
if KeyDataToShiftState(1)=[ssctrl] then
except on e:exception do
ShowMessage (e.Message );
end;
end;