ClientDataSet - criando campos e indices em runtime |
Top Previous Next |
|
// criando campos e indices de um ClientDataSet em Run-Time: // tb = TClientdataSet
procedure TForm1.mlABtn1Click(Sender: TObject); begin with Tb do begin with FieldDefs.AddFieldDef do begin DataType := ftInteger; Name := 'Codigo'; end; with FieldDefs.AddFieldDef do begin DataType := ftString; Size := 10; Name := 'Nome'; end; with IndexDefs.AddIndexDef do begin Fields := 'nome'; Name := 'inome'; end; CreateDataSet; end; Tb.Open; end;
------------------------- feito por jr
procedure InsereCampoEmXML(const Arq: string; const NomeCampo, TipoEmXML: string); var L: TStringList; S, Linha: string; I: Integer; begin S := '<FIELD attrname="' + NomeCampo + '" fieldtype="' + TipoEmXML + '"/>';
L := TStringList.Create; if not FileExists(Arq) then Exit; L.LoadFromFile(Arq); // a primeira linha contem a estrutura dos campos if Pos(Uppercase(S), Uppercase(L[0])) = 0 then begin I := Pos('</FIELDS>', Uppercase(L[0]));
if I = 0 then msgErro('Cláusula </FIELDS> não encontrada!') else begin Linha := L[0]; Insert(S,Linha,I); L[0] := Linha; end;
L.SaveToFile(Arq); end; L.Free; end; // está incompleto, falta tamanho e alteracao... |