Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: DBEdit Farbe ändern bei ReadOnly - Welches Event

  Alt 13. Jun 2011, 22:46
Einfach mal so runtergeschrieben und ein wenig mit nem simplen Programm getestet:

Delphi-Quellcode:
type
  TDataSourceHack = class(DB.TDataSource)
  end;

  TControlHack = class(Controls.TControl)
  end;

// kommt ins OnDataChanged der DataSource - könnte man auch über das abgeleitete DBEdit dranhängen
var
  Link: Pointer;
begin
  for Link in TDataSourceHack(Sender).DataLinks do
  begin
    if (TObject(Link) is TFieldDataLink)
      and (TFieldDataLink(Link).Control is TControl) then
    begin
      if TDataSourceHack(Sender).DataSet.CanModify
        and (not Assigned(TFieldDataLink(Link).Field)
        or not TFieldDataLink(Link).Field.ReadOnly) then
        TControlHack(TFieldDataLink(Link).Control).Color := clWindow
      else
        TControlHack(TFieldDataLink(Link).Control).Color := clBtnFace;
    end;
  end;
end;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat