
31.01.2015, 13:53
|
 |
Гуру
|
|
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
|
|
Пожалуй я погорячился насчет множеств именно для данной задачи. Тут больше подходят битовые операции в явном виде, т.к. Tag чекбокса может иметь более одного значения:
Код:
unit Unit28;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DIB, StdCtrls;
const
Red = 1;
Orange = 2;
Yellow = 4;
Green = 8;
LightBlue = 16;
Blue = 32;
Violet = 64;
type
TForm28 = class(TForm)
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
CheckBox7: TCheckBox;
Memo1: TMemo;
CheckBox8: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure CheckBoxClick(Sender: TObject);
private
Options: Integer;
public
{ Public declarations }
end;
var
Form28: TForm28;
implementation
{$R *.dfm}
procedure TForm28.CheckBoxClick(Sender: TObject);
Var
S: String;
begin
Options := Options xor TCheckBox(Sender).Tag;
S := '';
if Red and Options <> 0 then S := S + ' Каждый';
if Orange and Options <> 0 then S := S + ' Охотник';
if Yellow and Options <> 0 then S := S + ' Желает';
if Green and Options <> 0 then S := S + ' Знать';
if LightBlue and Options <> 0 then S := S + ' Где';
if Blue and Options <> 0 then S := S + ' Сидит';
if Violet and Options <> 0 then S := S + ' Фазан';
Memo1.Lines.Add(S);
end;
procedure TForm28.FormCreate(Sender: TObject);
begin
Options := 0;
CheckBox1.Tag := Red;
CheckBox2.Tag := Orange;
CheckBox3.Tag := Yellow;
CheckBox4.Tag := Green;
CheckBox5.Tag := LightBlue;
CheckBox6.Tag := Blue;
CheckBox7.Tag := Violet;
CheckBox8.Tag := Red or Yellow or Green;
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
|