Man kann die sichtbaren Feldnamen (
DisplayLabel) auch zur Laufzeit einstellen.
grosser Vorteil: man braucht keine persistenten Felder anlegen
Hier ein
Unit, die zeigt, wie man alle Zuordnungen Feldname->DisplayLabel
zentral für die gesamte Anwendung abhandeln kann:
Delphi-Quellcode:
unit UDisplayLabels;
interface
uses DB;
procedure SetDisplayLabels(ds:TDataset);
implementation
type
T2strings =
array[1..2]
of string;
// Zuordnungstabelle
// FieldName -> DisplayName
const
convliste:
array[0..6]
of T2strings =
(
('
IdWBruecke', '
Wechselbrücke'),
('
IdTor', '
Tor-Nr'),
('
EDatum', '
Einlieferdatum'),
('
MaxHeight', '
max. Höhe'),
('
IdLocation', '
Standort'),
('
LastChange', '
letzte Änderung'),
('
Disabled', '
Gesperrt')
);
// suche DisplayLabel, das zu "fieldname" passt
function ConvertString(
const fieldname:
string):
string;
var
i : Integer;
begin
for i := Low(convliste)
to High(convliste)
do
begin
if convliste[i][1] = fieldname
then
begin
Result := convliste[i][2];
Exit;
end;
end;
Result := '
';
// nix gefunden
end;
procedure SetDisplayLabels(ds:TDataset);
var
i : Integer;
dl :
string;
begin
for i := ds.Fields.Count-1
downto 0
do // herunterzählen auf 0 ist etwas schneller
begin
dl := ConvertString(ds.Fields[i].FieldName);
if dl <> '
'
then
ds.Fields[i].DisplayLabel :=
dl;
end;
end;
end.
Anwendung:
Einfach die Procedure SetDisplayLabels im Event
AfterOpen aufrufen:
Delphi-Quellcode:
procedure TForm1.Query1AfterOpen(DataSet: TDataSet);
begin
SetDisplayLabels(DataSet);
end;