Folgende Uni stammt von
shmia und wurde
hier gepostet.
Die sichtbaren Feldnamen (DisplayLabel) lassen sich zur Laufzeit einstellen, was den Vorteil hat, dass man keine persistenten Felder anlegen muss.
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;