TFbmItem.UserFields
Diese Variable ist vom Typ TFbmUserFieldItemList und eine Eigenschaft der Klasse TFbmItem, welche in der Unit Item definiert wurde. Diese Variable bietet nur lesenden Zugriff.
Bietet Zugriff auf die benutzerdefinierten Felder des Elements.
Quelltext-Beispiel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
const
SourceUserFieldName = 'KontoDatentypZeichenkette'; // TODO: Mit den richtigen Namen der
TargetUserFieldName = 'KontoDatentypListe'; // Benutzerdefinierten Felder füllen
var
i: Integer;
Names, Values: TStringList;
SourceValue: string;
begin
if Item.UserFields.Exists(SourceUserFieldName) and Item.UserFields.Exists(TargetUserFieldName) then
begin
SourceValue := Item.UserFields.ItemsByName[SourceUserFieldName].AsString;
Names := TStringList.Create;
try
Names.Text := Item.UserFields.ItemsByName[TargetUserFieldName].Validation;
Values := TStringList.Create;
try
Values.Text := Item.UserFields.ItemsByName[TargetUserFieldName].Values;
i := 0;
while (i < Names.Count) and (i < Values.Count) do
begin
if AnsiSameText(SourceValue, Values[i]) then
begin
Item.UserFields.ItemsByName[TargetUserFieldName].AsString := Names[i];
break;
end;
Inc(i);
end;
finally
Values.Free;
end;
finally
Names.Free;
end;
end;
end.
SourceUserFieldName = 'KontoDatentypZeichenkette'; // TODO: Mit den richtigen Namen der
TargetUserFieldName = 'KontoDatentypListe'; // Benutzerdefinierten Felder füllen
var
i: Integer;
Names, Values: TStringList;
SourceValue: string;
begin
if Item.UserFields.Exists(SourceUserFieldName) and Item.UserFields.Exists(TargetUserFieldName) then
begin
SourceValue := Item.UserFields.ItemsByName[SourceUserFieldName].AsString;
Names := TStringList.Create;
try
Names.Text := Item.UserFields.ItemsByName[TargetUserFieldName].Validation;
Values := TStringList.Create;
try
Values.Text := Item.UserFields.ItemsByName[TargetUserFieldName].Values;
i := 0;
while (i < Names.Count) and (i < Values.Count) do
begin
if AnsiSameText(SourceValue, Values[i]) then
begin
Item.UserFields.ItemsByName[TargetUserFieldName].AsString := Names[i];
break;
end;
Inc(i);
end;
finally
Values.Free;
end;
finally
Names.Free;
end;
end;
end.
Bei obigem Beispiel befinden sich im Zielfeld zum Beispiel folgende Wertepaare:
Hinterlegte Daten im neuen benutzerdefinierten Feld vom Typ Liste:
1
2
3
2
3
Name1=Wert1
Name2=Wert2
Name3=Wert3
Name2=Wert2
Name3=Wert3
In dem alten benutzerdefinierten Feld sind Zeichenketten wie "Wert1", "Wert2" oder "Wert3" hinterlegt.