![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день, такая ситуация: Есть несколько чеклистбоксов и в зависимости от того, где стоит галка, нужно добавить определенный текст в мемо.
У меня получается только для одного активного, а если выбираю несколько (чеклистбоксов), то все обновляется. Просто накидайте идеи, а то стандартным кодом не выходит Код:
Memo1.Clear;
begin
if CheckListBox1.selected[1] then
Memo1.Text:='бла бла бла';
end |
|
#2
|
||||
|
||||
|
Код:
var
i: integer;
begin
Memo1.Clear;
for i:= 0 to CheckListBox1.Count-1 do
if CheckListBox1.selected[i] then Memo1.Lines.Add('бла бла бла');
end; |
|
#3
|
|||
|
|||
|
В общем, да, непонятно я выразила мысль, в общем, в зависимости от того какие чекбоксы выбраны, добавляем разный текст, в конце, в мемо должен выйти список. а так если делать, то он один и тот же будет текст добавлять.
|
|
#4
|
|||
|
|||
|
И еще,нумерация в чекЛистБоксе с 0, а в Мемо с 1??
|
|
#5
|
||||
|
||||
|
Цитата:
|
|
#6
|
|||
|
|||
|
Код:
begin
if CheckListBox1.selected[1] then Form2.Memo1.Lines.Add('***');
if CheckListBox1.selected[2] then Form2.Memo1.Lines.Add('ййй);
end; |
|
#7
|
||||
|
||||
|
Цитата:
Код:
const
txt: array[0..4] of string = ('первая','вторая','третья','четвёртая','итд.');
...
var
i: integer;
begin
Memo1.Clear;
for i:= 0 to High(txt) {CheckListBox1.Count-1} do
if CheckListBox1.selected[i] then Memo1.Lines.Add(txt[i]);
end; |
|
#8
|
||||
|
||||
|
Цитата:
|
|
#9
|
||||
|
||||
|
Упс, я тоже этого не заметил, в смысле про Checked
![]() |
|
#10
|
|||
|
|||
|
Спасибо,товарищи, с чекед работает как надо... мда, с чего это мне взбрело селектед писать) может еще кто-нибудь заодно посоветует, как авто нумерацию строк сделать в Мемо? есть там какое-нибудь спец. свойство?
|
|
#11
|
||||
|
||||
|
Вроде нет, но можно псевдо
Код:
var i: integer; begin for i:= 0 to Memo1.Lines.Count-1 do Memo1.Lines[i]:= IntToStr(i+1) + '. ' + Memo1.Lines[i]; end; |
|
#12
|
|||
|
|||
|
В общем, не работает, не пойму в чем причина. Мемо вообще пустое остается. В чем беда может быть?
|
|
#13
|
||||
|
||||
|
Цитата:
|
|
#14
|
|||
|
|||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst;
type
tmyclass=class
private
Ftext: string;
procedure Settext(const Value: string);
public
property text:string read Ftext write Settext;
end;
type
TForm1 = class(TForm)
CheckListBox1: TCheckListBox;
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure CheckListBox1ClickCheck(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
list:tstringlist;
implementation
{$R *.dfm}
{ tmyclass }
procedure tmyclass.Settext(const Value: string);
begin
Ftext := Value;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
mc:tmyclass;
begin
list:=tstringlist.Create;
mc:=tmyclass.create;
{этим самым мы здесь и далее по коду создаем объекты, которые занимает место в памяти.
Delphi не удаляет их в процессе выполнения работы, поэтому как только они станут бесполезны, мы должны обязательно
удалить их самостоятельно,чтобы не вызвать утечку памяти.}
mc.text:='Тестовая строка 1';
list.Addobject(mc.text,pointer(mc));
mc:=tmyclass.create;
mc.text:='Тестовая строка 2';
list.Addobject(mc.text,pointer(mc));
mc:=tmyclass.create;
mc.text:='Тестовая строка 3';
list.Addobject(mc.text,pointer(mc));
{ Только для теста.
mc.text:='Тестовая строка 4'; // добавили просто строку, чтобы проверить, будет ли access violation.
list.Add(mc.text);
}
checklistbox1.Items.Assign(list);
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i:integer;
begin
if assigned(list) then
begin
for i:=0 to list.Count-1 do
list.Objects[i].Free;
list.destroy;
end;
end;
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var
lst:tstrings;
i:integer;
begin
i:=checklistbox1.ItemIndex;
if checklistbox1.Checked[i] then { дополнительная проверка на assigned (как в listview - selected) не нужна, т.к. если не будет
элементов, не по чему будет кликать}
begin
if checklistbox1.items.objects[i] is tmyclass then // проверяем, можно ли привести объект в списке к tmyclass.
memo1.Lines.Add(tmyclass(checklistbox1.items.objects[i]).text);
end;
end;
end. |