Тема: Ошибка
Показать сообщение отдельно
  #17  
Старый 12.05.2014, 10:00
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Если я правильно понял, то в разных наборах CheckListBox есть элементы соответствующие одному и тому-же строковому значению:
"Программные средства формирования и контроля полномочий доступа в AC"
"Вибродатчики (акселерометры)"
и т.д.
Тогда почему бы не воспользоваться методом AddObject и не добавить просто нужную строку? Тогда нет никакой необходимости в этой куче ифов которые по сути дублируют визуальные элементы. А вместо всего этого безобразия пробежать в цикле по всем спискам и если элемент списка отмечен вывести в мемо связанный с этим элементом текст.
Вот так это может выглядеть:
Код:
unit Unit21;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CheckLst;

type
  TForm21 = class(TForm)
    CheckListBox1: TCheckListBox;
    CheckListBox2: TCheckListBox;
    Memo1: TMemo;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;

 TString = class
  Text: String;
  constructor Create(S: String);
 end;

var
  Form21: TForm21;

implementation

{$R *.dfm}

procedure TForm21.Button1Click(Sender: TObject);
var
  i: Integer;
begin
 for i := 0 to 5
 do if CheckListBox1.Checked[i]
    then Memo1.Lines.Add(TString(CheckListBox1.Items.Objects[i]).Text);
 for i := 0 to 5
 do if CheckListBox2.Checked[i]
    then Memo1.Lines.Add(TString(CheckListBox2.Items.Objects[i]).Text);
end;

procedure TForm21.FormCreate(Sender: TObject);
var
  i: Integer;
begin
 for i := 0 to 5
 do CheckListBox1.AddItem(IntToStr(i+1), TString.Create('This item 1.' + IntToStr(i+1)));
 for i := 0 to 5
 do CheckListBox2.AddItem(IntToStr(i+1), TString.Create('This item 2.' + IntToStr(i+1)));
end;

{ TString }

constructor TString.Create(S: String);
begin
 Text := S;
end;

end.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием