Einzelnen Beitrag anzeigen

hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Focus von Felder besser hervorheben (global)

  Alt 5. Mai 2006, 10:53
Ja natürlich die Farbe sieht bescheiden aus. Hab jetzt noch eine Variable für die Schriftfarbe hinzugefügt, eine Variable um die Highlightfunction wärend der Laufzeit an und auszuschalten, und natürlich bessere Farben genommen :
Delphi-Quellcode:
HighlightEnabled: Boolean = false;
HighlightingColor: TColor = clMaroon;
HighlightingFontColor: TColor = clHighlightText;
  
  //...

procedure TScreenHelper.ActiveControlChange(Sender: TObject);
begin
  if Highlighting and not Application.Terminated then
  begin
    if Assigned(ActiveControl) then
      with TControlCracker(ActiveControl) do begin
        // undo highlighting
        Color := NormalColor;
        font.Color := NormalFontColor;
      end;
    if Assigned(Screen.ActiveControl) then
    begin
      // do highlighting
      if (HighlightEnabled = true) then begin
        NormalColor := TControlCracker(Screen.ActiveControl).Color;
        NormalFontColor := TControlCracker(Screen.ActiveControl).Font.Color;
        ActiveControl := Screen.ActiveControl;
        TControlCracker(Screen.ActiveControl).Color := HighlightingColor;
        TControlCracker(Screen.ActiveControl).Font.Color := HighlightingFontColor;
      end;
    end;
  end;

  if Assigned(SavedActiveControlChange) then
    SavedActiveControlChange(Sender);
end;
Einen Vorschlag / Frage hätte ich noch dazu: Da ich das Highlight wärend der Laufzeit ändere, wäre es doch eigentlich sinnvoll, alle Felder auf ReadOnly zu setzen wenn (HighlightEnabled = false) ist, und dann alle aktivieren. Nur habe ich die funktion dafür noch nicht finden können bzw scheine ich den Syntax nicht zu kennen. Mit der Funktion aus den oberen Beiträgen hatte ich einen Erfolg heute Nacht mit:
Delphi-Quellcode:
if (screen.CustomForms[i].Components[j] is TDBEdit) then
begin
  (screen.CustomForms[i].Components[j] as TDBEdit).ReadOnly:=readonly; //true oder false
end;
Damit würde es ja gehen, aber dann brauche ich eine extra Schleife die es für jeden Typ dann machen muss. Wobei ich dann auch alle Typen separat einfügen muss.
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat