Thema: Delphi Boolean Indikator

Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#11

AW: Boolean Indikator

  Alt 4. Jun 2012, 18:45
Sonstige Ideen?
Jep, mit Trick 17.

Delphi-Quellcode:
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
  CheckListBox1.Checked[CheckListBox1.ItemIndex] :=
    not CheckListBox1.Checked[CheckListBox1.ItemIndex]; // Trick 17
end;

procedure TForm1.Button1Click(Sender: TObject); // Beispiel
var
  i: Integer;
begin // Beispiel Checks setzten
  for i := 0 to CheckListBox1.Count - 1 do
    CheckListBox1.Checked[i] := Random(2) = 0;
end;
Wenn das Item ausgecheckt wird, dann checken wir es doch wieder

//Edit:

Eine kleine Erweiterung, sie ersetzt das Check-Zeichen durch einen Smiley

Delphi-Quellcode:
procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  R: TRect;
  CLB: TCheckListBox;
  CW: Integer;
  FN: String;
  Ch: Char;
  TopDifTxt: Integer; // Gleicht die Höhendifferenz aus
begin
  CLB := (Control as TCheckListBox);
  R := Rect;
  CW := CLB.ClientWidth - (R.Right - R.Left);
  R.Left := R.Left - CW;
  R.Right := R.Left + CW;

  TopDifTxt := (CLB.ItemHeight div 2) - (CLB.Canvas.TextHeight(CLB.Items[Index]) div 2);

  //Ausgabe normaler Text
  CLB.Canvas.TextRect(Rect, Rect.Left, Rect.Top + TopDifTxt, CLB.Items[Index]);

  //Checkersatz
  CLB.Canvas.Font.Name := 'Wingdings';
  if CLB.Checked[Index] then Ch := 'Jelse Ch := #32;
  CLB.Canvas.TextRect(R, R.Left + 2, Rect.Top + TopDifTxt, Ch);
end;

Geändert von Popov ( 4. Jun 2012 um 19:38 Uhr)
  Mit Zitat antworten Zitat