0

PK が TDBAdvGrid の列 0 に関連付けられているレコードで Locate を必死に実行しようとしています。私が持っている TMS Component Pack のバージョンは 6.8.something です。Delphi XE 1 を搭載した Win7x64 で使用しています。Pag​​eMode はオフになっています。これは、クライアント レベルでの並べ替えとグループ化が必要になるためです (現時点ではバックエンド データベースはなく、オフライン モードのクライアント データセットのみ)。

見つけるための私のコードは次のようなものです:

procedure TMainFrm.EditAction;
var ItemID : Integer;
    ItemIDStr: String;
begin
  // With PageMode set to false(which we need), the dataset is not synchronized.
  //ItemID := GetActionGrid.Columns[ 0 ].Field.AsInteger;
  ItemIDStr := GetActionGrid.Cells[ 0,GetActionGrid.SelectedRow[ 0 ] ];
  ItemID := StrToIntDef( ItemIDStr ,-1 );
//  GetActionGrid.Fields[ 0 ].AsInteger;
  If DMMain.CLNActions.Locate( 'ITEM_ID',ItemID,[] ) Then
    CreateApplicationForm( TActionFrm, True );
end;

ただし、ItemIDStr は常に空の文字列を返すため、機能しません。私は今、本当にアイデアが不足しています。

提案?

ありがとうございました!

4

1 に答える 1

0
function TFrameDBGrid1.GrFindValInCol(FldName, FldVal : String) : boolean; //search value in a certain column of the grid
var
   StartCell:TPoint;
   FindParams: TFindParams;
   rv:TPoint;
   CurrCol: integer;
  I: Integer;
const CResultInvalidInt=-1;
begin
  Result := false;
  StartCell.x := CResultInvalidInt;
  StartCell.y := CResultInvalidInt;
  CurrCol := GetColumnIndexOfField(FldName);
  grdGlobal.FindCol := CurrCol;
  FindParams := [fnMatchRegular, fnFindInPresetCol];
  rv:=grdGlobal.Find(StartCell, FldVal, FindParams);
  Result:= (rv.x <> CResultInvalidInt) and (rv.y <> CResultInvalidInt);
  if Result then
    if grdGlobal.Row <> rv.y then
      grdGlobal.Row := rv.y;
end;
于 2013-06-10T14:21:14.527 に答える