Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #14  
Старый 11.05.2014, 11:09
Тролль Тролль вне форума
Заблокирован
 
Регистрация: 07.05.2014
Сообщения: 11
Версия Delphi: 7, Kylix
Репутация: -1385
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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.
Ответить с цитированием
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:29.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025