[Lazarus] Is there aTDBLabel?

Michael Van Canneyt michael at freepascal.org
Wed Mar 9 20:59:30 CET 2016



On Wed, 9 Mar 2016, Frans wrote:

> Hi
>
> I use Lazarus 1.6 on Windows 7.
> I've used lazdatadesktop to change the Displaylabel of the DB fields. In a 
> DBGrid that new names popup as the column names. But in a form with TDBEdit 
> fields I can't use a TDBLabel that automatically takes the name from the 
> associated Control as the caption. Instead, I placed TLabel components and 
> made the following method:
>
> procedure TMyForm.FormShow(Sender: TObject);
> var
>  l: TLabel;
> begin
>  for TComponent(l) in Self do
>  begin
>    if (l is TLabel) and (l.FocusControl is TDBEdit) then
>      l.Caption := TDBEdit(l.FocusControl).Field.DisplayLabel;
>    if (l is TLabel) and (l.FocusControl is TDBLookupComboBox) then
>      l.Caption := TDBLookupComboBox(l.FocusControl).Field.DisplayLabel;
>  end;
> end;
>
> It works. But still I wonder, is there a another way? I've tried TDBText but 
> that shows th field value, not the DisplayLabel.

There is no standard control for it. But it should in fact be easy to add to
the LCL.

I have a very large application in which I do the same, but I had to develop
my own TLabel subclass for this. (It also switches color when the field is
required etc.)

Michael.




More information about the Lazarus mailing list