RAD Studio VCL Reference
|
Lists the individual field parameters of a TParams object.
property Items [Index: Integer]: TParam;
__property TParam Items[int Index];
Use Items to iterate through all the field parameters. Index identifies the index in the range 0 to Count - 1. Items can reference a particular parameter by its index, but the ParamByName method is preferred when working with named parameters, because it does not depend on the order of the parameters.
C++ Examples:
/* This example saves params from a ClientDataSet, alters them and restores them. */ TParams *SavedParams; void __fastcall TForm1::SaveParamsClick(TObject *Sender) { // Save the parameters for the TDataSet SavedParams->Assign(CDS->Params); } void __fastcall TForm1::AlterParamsClick(TObject *Sender) { CDS->Params->CreateParam(ftString, "stringParam", ptInput); // you can also edit the params in the CDS dynamically CDS->Params->CreateParam(ftSmallint, "smallIntParam", ptInput); CDS->Params->CreateParam(ftInteger, "intParam", ptInput); CDS->Params->CreateParam(ftWord, "wordParam", ptInput); CDS->Params->CreateParam(ftBoolean, "boolParam", ptInput); CDS->Params->CreateParam(ftFloat, "floatParam", ptInput); CDS->Params->CreateParam(ftCurrency, "currencyParam", ptInput); CDS->Params->CreateParam(ftBCD, "bcdParam", ptInput); CDS->Params->CreateParam(ftDate, "dateParam", ptInput); CDS->Params->CreateParam(ftTime, "timeParam", ptInput); CDS->Params->CreateParam(ftDateTime, "dateTimeParam", ptInput); // Call FetchParams to ensure parameters reflect server metadata CDS->FetchParams(); // with CDS->Params do for (int I = 0; I < CDS->Params->Count; I++) { AnsiString ListItem = ListBox1->Items->Strings[I]; switch (CDS->Params->Items[I]->DataType) { case ftString: CDS->Params->Items[I]->AsString = ListItem; break; case ftSmallint: CDS->Params->Items[I]->AsSmallInt = StrToIntDef(ListItem, 0); break; case ftInteger: CDS->Params->Items[I]->AsInteger = StrToIntDef(ListItem, 0); break; case ftWord: CDS->Params->Items[I]->AsWord = StrToIntDef(ListItem, 0); break; case ftBoolean: CDS->Params->Items[I]->AsBoolean = (ListItem == "True"); break; case ftFloat: CDS->Params->Items[I]->AsFloat = StrToFloat(ListItem); break; case ftCurrency: CDS->Params->Items[I]->AsCurrency = double(StrToFloat(ListItem)); break; case ftBCD: CDS->Params->Items[I]->AsBCD = StrToCurr(ListItem); break; case ftDate: CDS->Params->Items[I]->AsDate = StrToDate(ListItem); break; case ftTime: CDS->Params->Items[I]->AsTime = StrToTime(ListItem); break; case ftDateTime: CDS->Params->Items[I]->AsDateTime = StrToDateTime(ListItem); break; } } } void __fastcall TForm1::RestoreParamsClick(TObject *Sender) { // Restore the parameters to TDataSet CDS->Params->AssignValues(SavedParams); } void __fastcall TForm1::FormCreate(TObject *Sender) { // Initialize SavedParams SavedParams = new TParams; ListBox1->Items->Add("Here is a string"); ListBox1->Items->Add("4"); ListBox1->Items->Add("3456789"); ListBox1->Items->Add("34"); ListBox1->Items->Add("0"); ListBox1->Items->Add("12.56"); ListBox1->Items->Add("4.23"); ListBox1->Items->Add("99.5"); ListBox1->Items->Add("4/12/53"); ListBox1->Items->Add("7:45:00"); ListBox1->Items->Add("4/12/53 7:45:00"); }
/* This example requires a TClientDataSet and a button on a form. */ void __fastcall TForm1::Button1Click(TObject *Sender) { for (int I = 0; I < CDS->Params->Count; I++) { if (CDS->Params->Items[I]->IsNull && CDS->Params->Items[I]->DataType == ftInteger) CDS->Params->Items[I]->AsInteger = -1; }} void __fastcall TForm1::FormCreate(TObject *Sender) { CDS->LoadFromFile(GetCurrentDir() + L"/../CDS.XML"); CDS->Params->CreateParam(ftInteger, "StateParam", ptInput); CDS->Params->CreateParam(ftInteger, "MyParam", ptInput); }
Delphi Examples:
{ This example uses the FetchParams method to sync the params with the server. } procedure TForm1.SaveParamsClick(Sender: TObject); begin { Save the parameters for the TDataSet } SavedParams.Assign(CDS.Params); end; procedure TForm1.AlterParamsClick(Sender: TObject); var I : Integer; ListItem: string; begin CDS.Params.CreateParam(ftString, 'stringParam', ptInput); // you can also edit the params in the CDS dynamically CDS.Params.CreateParam(ftSmallInt, 'smallIntParam', ptInput); CDS.Params.CreateParam(ftInteger, 'intParam', ptInput); CDS.Params.CreateParam(ftWord, 'wordParam', ptInput); CDS.Params.CreateParam(ftBoolean, 'boolParam', ptInput); CDS.Params.CreateParam(ftFloat, 'floatParam', ptInput); CDS.Params.CreateParam(ftCurrency, 'currencyParam', ptInput); CDS.Params.CreateParam(ftBCD, 'bcdParam', ptInput); CDS.Params.CreateParam(ftDate, 'dateParam', ptInput); CDS.Params.CreateParam(ftTime, 'timeParam', ptInput); CDS.Params.CreateParam(ftDateTime, 'dateTimeParam', ptInput); { Call FetchParams to ensure parameters reflect server metadata } CDS.FetchParams; with CDS.Params do begin for I := 0 to Count - 1 do begin ListItem := ListBox1.Items[I]; case Items[I].DataType of ftString: Items[I].AsString := ListItem; ftSmallInt: Items[I].AsSmallInt := StrToIntDef(ListItem, 0); ftInteger: Items[I].AsInteger := StrToIntDef(ListItem, 0); ftWord: Items[I].AsWord := StrToIntDef(ListItem, 0); ftBoolean: begin if ListItem = 'True' then Items[I].AsBoolean := True else Items[I].AsBoolean := False; end; ftFloat: Items[I].AsFloat := StrToFloat(ListItem); ftCurrency: Items[I].AsCurrency := StrToFloat(ListItem); ftBCD: Items[I].AsBCD := StrToCurr(ListItem); ftDate: Items[I].AsDate := StrToDate(ListItem); ftTime: Items[I].AsTime := StrToTime(ListItem); ftDateTime: Items[I].AsDateTime := StrToDateTime(ListItem); end; end; end; end; procedure TForm1.RestoreParamsClick(Sender: TObject); begin { Restore the parameters to TDataSet } CDS.Params.AssignValues(SavedParams); end; procedure TForm1.FormCreate(Sender: TObject); begin { Initialize SavedParams } SavedParams := TParams.Create; ListBox1.Items.Add('Here is a string'); ListBox1.Items.Add('4'); ListBox1.Items.Add('3456789'); ListBox1.Items.Add('34'); ListBox1.Items.Add('0'); ListBox1.Items.Add('12.56'); ListBox1.Items.Add('4.23'); ListBox1.Items.Add('99.5'); ListBox1.Items.Add('4/12/53'); ListBox1.Items.Add('7:45:00'); ListBox1.Items.Add('4/12/53 7:45:00'); end; procedure TForm1.FormDestroy(Sender: TObject); begin SavedParams.Free; end;
{ This example fills in the parameters of a client dataset from the entries of a list box. } procedure TForm1.Button4Click(Sender: TObject); var I: Integer; ListItem: string; begin { Call FetchParams to ensure parameters reflect server metadata } ClientDataSet1.FetchParams; with ClientDataSet1.Params do begin for I := 0 to Count - 1 do begin ListItem := ListBox1.Items[I]; case Items[I].DataType of ftString: Items[I].AsString := ListItem; ftSmallInt: Items[I].AsSmallInt := StrToIntDef(ListItem, 0); ftInteger: Items[I].AsInteger := StrToIntDef(ListItem, 0); ftWord: Items[I].AsWord := StrToIntDef(ListItem, 0); ftBoolean: begin if ListItem = 'True' then Items[I].AsBoolean := True else Items[I].AsBoolean := False; end; ftFloat: Items[I].AsFloat := StrToFloat(ListItem); ftCurrency: Items[I].AsCurrency := StrToFloat(ListItem); ftBCD: Items[I].AsBCD := StrToCurr(ListItem); ftDate: Items[I].AsDate := StrToDate(ListItem); ftTime: Items[I].AsTime := StrToTime(ListItem); ftDateTime: Items[I].AsDateTime := StrToDateTime(ListItem); end; end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin ListBox1.Items.Add('Here is a string'); ListBox1.Items.Add('4'); ListBox1.Items.Add('3456789'); ListBox1.Items.Add('34'); ListBox1.Items.Add('0'); ListBox1.Items.Add('12.56'); ListBox1.Items.Add('4.23'); ListBox1.Items.Add('99.5'); ListBox1.Items.Add('4/12/53'); ListBox1.Items.Add('7:45:00'); ListBox1.Items.Add('4/12/53 7:45:00'); end;
{ This example requires a TClientDataSet and a button on a form. } {$IFNDEF UNICODE} uses SwSystem; {$ENDIF} procedure TForm1.Button1Click(Sender: TObject); var I : Integer; begin { Assign -1 to any integer parameter which does not have a value. } for I := 0 to CDS.Params.Count - 1 do if (CDS.Params.Items[I].IsNull) and (CDS.Params.Items[I].DataType = ftInteger) then { Items is the default property, so you can omit its name } CDS.Params[I].AsInteger := -1; end; procedure TForm1.FormCreate(Sender: TObject); begin {$IFDEF UNICODE} CDS.LoadFromFile(GetCurrentDir + '\CDS.XML'); {$ELSE} CDS.LoadFromFile(gsAppPath + 'CDS.XML'); {$ENDIF} CDS.Params.CreateParam(ftInteger, 'StateParam', ptInput); CDS.Params.CreateParam(ftInteger, 'MyParam', ptInput); end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|