:: MVP ::
|
|
:: RSS ::
|
|
|
Как изменить цвет фона CheckListBox?
procedure ChangeBgColor(clb: TCheckListBox; const Color: TColor);
begin
if (clb.Color <> Color) and (clb.Canvas.Brush.Color <> Color) then
begin
clb.Color := Color;
// В свежих версиях Delphi (вроде DXx.x) первой
// строчки достаточно, но для Delphi 7 этого
// будет недостаточно, нужно дописать еще:
clb.Canvas.Brush.Color := Color;
clb.Canvas.FillRect(clb.ClientRect);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CheckListBox1.Enabled := True;
ChangeBgColor(CheckListBox1, clWindow);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
CheckListBox1.Enabled := False;
ChangeBgColor(CheckListBox1, clBtnFace);
end;
|
Как менять состояние галки в CheckListBox по нажатию на текст?
procedure TForm1.CheckListBox1Click(Sender: TObject);
var
p: TPoint;
idx: Integer;
begin
p := CheckListBox1.ScreenToClient(Mouse.CursorPos);
idx := CheckListBox1.ItemAtPos(p, True);
if idx >= 0 then
begin
// Условие на проверку координаты нужно для того, чтобы исключать
// из ибработки нажание на саму галку (в этом случае поведение
// компонента будет отличаться от ожидаемого).
if p.X > 14 then
CheckListBox1.Checked[idx] := not CheckListBox1.Checked[idx];
if Assigned(CheckListBox1.OnClickCheck) then
CheckListBox1.OnClickCheck(Sender);
end;
end;
|
Как изменить цвет строти/текста в CheckListBox?
procedure TForm1.FormCreate(Sender: TObject);
begin
CheckListBox1.Style := lbOwnerDrawFixed;
end;
procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
txt: string;
begin
txt := (Control as TCheckListBox).Items[Index];
(Control as TCheckListBox).Canvas.Font.Style :=
(Control as TCheckListBox).Canvas.Font.Style - [fsBold];
if not Odd(Index) then
(Control as TCheckListBox).Canvas.Brush.Color := clWindow
else
(Control as TCheckListBox).Canvas.Brush.Color := clGradientInactiveCaption;
if (Control as TCheckListBox).Checked[Index] then
begin // Выбранная строка
(Control as TCheckListBox).Canvas.Brush.Color := clYellow;
(Control as TCheckListBox).Canvas.Font.Color := clRed;
(Control as TCheckListBox).Canvas.Font.Style :=
(Control as TCheckListBox).Canvas.Font.Style + [fsBold];
end;
if odSelected in State then
begin // Выделенная строка
(Control as TCheckListBox).Canvas.Brush.Color := clRed;
(Control as TCheckListBox).Canvas.Font.Color := clWhite;
end;
(Control as TCheckListBox).Canvas.FillRect(Rect);
(Control as TCheckListBox).Canvas.TextOut(Rect.Left, Rect.Top, txt);
end;
|
При использовании материала - ссылка на сайт обязательна
|
|