Announcement

Collapse
No announcement yet.

Farbe für ein Steuerelement, bei dem enabled = False ist, ändern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Farbe für ein Steuerelement, bei dem enabled = False ist, ändern

    Hallo,
    ich möchte bei Steuerelementen, z.B. TDBEdit, die die Eigenschaft enabled = False haben, die Farbe der Schrift ändern. Statt grau soll der Inhalt des Feldes rot angezeigt werden. Geht das überhaupt?

    Vielen Dank im Voraus
    Andreas

  • #2
    Hallo!<br>
    So müsste es gehen:<br><br>

    <b>if</b> DBEdit1.Enabled <b>then</b><br>
    DBEdit1.Font.Color := clWindowText<br>
    <b>else</b><br>
    DBEdit1.Font.Color := clRed;<br><br>
    Das ganze geht auch im Objektinspector zur Entwurfszeit.<br>
    Gruß<br>
    M.Pannie

    Comment


    • #3
      Hallo,<BR>
      leider funktioniert es nicht. Die Farbeigenschaft wird nur genommen wenn das Element aktiv ist.<BR>
      <BR>
      Gruß<BR>
      A. Irme

      Comment


      • #4
        An welcher Stelle weist du dem Steuerelement die Farbe zu

        Comment


        • #5
          hey,
          da wirst du wohl bei "enabled:=false" keine Chance haben, da die Farbgebung über gekapselte win-dll's passiert.
          probiers mal mit Readonly := true und setze die Farbe dann wie oben geschriebe

          Comment


          • #6
            Hallo Andreas,

            <br>ganz einfach geht das nicht, da das von Windows übernommen wird. Du kannst aber über die Paint-Methode die Schrift nachträglich nochmals einzeichnen. Ich habe hierzu eine Komponente von TEdit abgeleitet und die Paint-Methode überschrieben (siehe Beispiel).<br>

            <pre>
            procedure TRkLabeledEditOutput.WMPaint(var Message: TWMPaint);
            // Text in schwarzer Farbe neu einzeichnen
            var
            hdc: THandle;
            OldFont: THandle;
            Rect: TRect;
            begin
            inherited;
            hdc := GetDC(Handle);
            Rect := ClientRect;
            Rect.Left := 1;
            Rect.Top := 1;
            Rect.Right := Rect.Right -1;
            OldFont := SelectObject(hdc, Font.Handle);
            SetBkColor(hdc, ColorToRGB(clBtnFace));
            case Alignment of
            taLeftJustify: DrawText(hdc, pchar(Text), Length(Text), Rect, ES_LEFT);
            taRightJustify: DrawText(hdc, pchar(Text), Length(Text), Rect, ES_RIGHT);
            taCenter: DrawText(hdc, pchar(Text), Length(Text), Rect, ES_CENTER);
            end;
            SelectObject(hdc, OldFont);
            ReleaseDC(Handle, hdc);
            end;
            </pre>
            <br>
            Rober

            Comment

            Working...
            X