Autor Beitrag
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Mo 05.09.16 08:53 
Mit folgendem Code färbe ich die Items einer Checklistbox ein, je nachdem ob sie enabled sind oder nicht.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
procedure Tfrm_karte.clb_andere_extrasDrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  clb: TCheckListBox;
begin
  clb := TCheckListBox(Control);
  if clb.Enabled then
  begin
    if clb.itemEnabled[index] then
    begin
      if odSelected in State then
      begin
        clb.Canvas.Brush.Color := clHighlight;
        clb.Canvas.Font.Color := clWhite;
      end
      else
      begin
        clb.Canvas.Brush.Color := gi_Color.ofeld;
        clb.Canvas.Font.Color := clWindowText;
      end;
    end
    else
    begin
      clb.Canvas.Brush.Color := gi_Color.rfeld;
      clb.Canvas.Font.Color := clBtnText;
    end
  end
  else
  begin
    clb.Canvas.Brush.Color := gi_Color.rfeld;
    clb.Canvas.Font.Color := clBtnText;
  end;
  clb.Canvas.FillRect(Rect);
  clb.Canvas.TextOut(Rect.left, Rect.top, clb.Items[Index]);
end;


Leider wirkt sich die Hintergrundfarbe nur auf die Listbox aus, aber nicht auf die Hintergrundfarbe der dazugehörigen Checkbox. Wie komme ich nun an deren Hintergrundfarbe ran?

_________________
mfg. Joel
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 05.09.16 14:22 
- Nachträglich durch die Entwickler-Ecke gelöscht -
JoelH Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Mo 05.09.16 15:10 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Guten Tag JoelH,

ich glaube dass die TCheckListBox eine Color Eigenschaft besitzt um den Hintergrund zu färben:
ausblenden Delphi-Quelltext
1:
CheckListBox1.Color := clred;					


Genau das ist das Problem ;-) Diese Eigenschaft benutze ich und genau das bringt das Problem.

Ich habe jetzt mal zwei Pics angehängt. Bei der ersten ist die gesamte Checklistbox disabled. Wie man sieht ist die Backgroundfarbe weiss. Bei zweiterer ist nur ein Item inaktiv. Der Text ist auch richtig hinterlegt, allerdings ist die dazugehörige Checkbox grün, wie die offenen Felder auch, obwohl man erkennen (wenn auch schlecht) das sie disabled ist.

Bearbeiten ( upps, Bilder falsch rum benamst, nicht verwirren lassen ;-) )
Einloggen, um Attachments anzusehen!
_________________
mfg. Joel
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 05.09.16 15:23 
- Nachträglich durch die Entwickler-Ecke gelöscht -
JoelH Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Mo 05.09.16 15:45 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Also soll die kleine Fläche rund um die Checkbox in der selben Farbe verlaufen wie das selektierte Item. richtig? Das müsste ich mir nach der Arbeit anschauen.

Genau. :zustimm: Allerdings nicht des selektierten, sondern des inaktiv geschalteten.

_________________
mfg. Joel
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 05.09.16 18:03 
- Nachträglich durch die Entwickler-Ecke gelöscht -