|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Delphi 7 CheckListBox & Memo
Добрый день, такая ситуация: Есть несколько чеклистбоксов и в зависимости от того, где стоит галка, нужно добавить определенный текст в мемо.
У меня получается только для одного активного, а если выбираю несколько (чеклистбоксов), то все обновляется. Просто накидайте идеи, а то стандартным кодом не выходит Код:
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. |