Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/100: Рейтинг темы: голосов - 100, средняя оценка - 4.88
95 / 38 / 15
Регистрация: 02.04.2015
Сообщений: 235

Простой пример TObjectList

12.07.2015, 13:23. Показов 19260. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Помогите составить самый простой пример с TObjectList , желательно с 2-мя полями , например, фамилия и год рождения. Также желательно , чтобы прислали через архив . В интернете слишком мало приведено примеров и непонятно ничего.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.07.2015, 13:23
Ответы с готовыми решениями:

Можно ли в TObjectList добавлять TObjectList-ы?
Подскажите в TObjectList можно добовлть TObjectList-ы

простой пример работы с БД
добрый вечер. хотел сделать простенький пример... но увы :( последний шаг не получается сделать. ошибка в том что не уставливается у...

Нужен пример простой игры
Нужно создать не сложную игру, типа 2048/крестики нолики/сапер. Прошу, если у вас есть свои игры на делфи бросьте их в эту тему, желательно...

39
Эксперт Pascal/Delphi
 Аватар для mmm_corp
103 / 91 / 32
Регистрация: 30.05.2015
Сообщений: 594
12.07.2015, 13:30
вот на примере более удобного stringlist
Delphi
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
type
  TIDD = class
    IntData: integer;
    StrData: string;
  end;
 
// универсальная процедура заполнения comboboxs
procedure rewFillStrings(AList: TStrings; DataSet: TDataSet;
  AIDField: string='id'; ANameField: string='sname'; ASTRField: string='swebname'; AHide: string='hide');
var
    idd: tidd;
    irec: integer;
    s: string;
    fd: tfield;
begin
  fd:=DataSet.FindField(AHide);
 
    irec := 0;
    with DataSet do
      begin
      //prepare update
      AList.BeginUpdate;
      ClearStringsItems(AList);
//      AList.Clear;
      DisableControls;
      // close active dataset
      //if Active then Close;
      try
      First;
        while not EOF do
          begin
          if Assigned(fd) and FieldByName(AHide).AsBoolean then
            begin
            Next;
            Continue;
            end;
 
          s:=FieldByName(ANameField).AsString;
          AList.Add(s);
          idd := tidd.create;
          if AIDField <> 'null'
            then idd.IntData := FieldByName(AIDField).value
            else idd.IntData := -1;
 
          if ASTRField <> 'null'
            then idd.StrData := FieldByName(ASTRField).AsString
            else idd.StrData := '';
          AList.Objects[IRec] := idd;
          inc(irec);
          next;
 
          //idd.Free;
          end;
      finally
        EnableControls;
        AList.EndUpdate;
      end;
      end;
end;
 
procedure ClearStringsItems(dx: TStrings);
var
  i: Integer;
begin
//  dx:=(Sender as TdxBarCombo).items;
  for I:=0 to dx.Count-1 do
    dx.Objects[i].Free;
 
  dx.Clear;
end;
1
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
12.07.2015, 14:07
Лучший ответ Сообщение было отмечено Петр Аркадьевич как решение

Решение

Цитата Сообщение от Петр Аркадьевич Посмотреть сообщение
Помогите составить самый простой пример с TObjectList
вот простой пример с использованием разных классов как элементов списка(чтобы показать, что можно записать не только однородную информацию)

Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Contnrs;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
 
  TSex = (sxUnknown, sxMale, sxFemale);
 
  TPerson = class
    private
      FName: String;
      FSex: TSex;
      FBDate: TDateTime;
    public
      constructor Create(AName: String; ASex: TSex; ABDate: TDateTime);
      procedure Info;
  end;
 
  TSity = class
    private
      FName: String;
      FPop: Integer;
    public
      constructor Create(AName: String; APop: Integer);
      procedure Info;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
// -------------------------------- первый класс --------------------------------
// конструктор класса с задачей параметров
constructor TPerson.Create(AName: String; ASex: TSex; ABDate: TDateTime);
begin
  FName := AName;
  FSex := ASex;
  FBDate := ABDate;
end;
// процедура выдающая информацию
procedure TPerson.Info;
const ASexStr: Array[TSex] of String = ('Неизвестен', 'Мужской', 'Женский');
begin
  MessageDlg('Данный класс: ' + ClassName + #13#10#13#10 + 'Имя: ' + FName + #13#10 + 'Пол: ' +
    ASexStr[FSex] + #13#10 + 'Дата рождения: ' + DateToStr(FBDate), mtInformation, [mbOK], 0)
end;
 
// -------------------------------- второй класс --------------------------------
constructor TSity.Create(AName: String; APop: Integer);
begin
  FName := AName;
  FPop := APop;
end;
 
procedure TSity.Info;
begin
  MessageDlg('Данный класс: ' + ClassName + #13#10#13#10 + 'Название: ' +
    FName + #13#10 + 'Население: ' + IntToStr(FPop), mtInformation, [mbOK], 0);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var OList: TObjectList;
    ElCnt: Integer;
begin
  OList := TObjectList.Create; // создаем список
 
  OList.Add(TPerson.Create('Маша', sxFemale, StrToDate('1.2.1995'))); // создание и добавление информации в список
  OList.Add(TPerson.Create('Коля', sxMale, StrToDate('5.7.1985')));   // еще добавление в список
 
  OList.Add((TSity.Create('Барнаул', 620000)));
  OList.Add((TSity.Create('Санкт-Петербург', 5000000)));
  OList.Add((TSity.Create('Новосибирск', 1500000)));
 
  ElCnt := 3;
 
  // проверить, является ли некий элемент типом TPerson
  // для того чтобы работать потом с данным элементом как с Person
  if OList[ElCnt] is TPerson then
    (OList[ElCnt] as TPerson).Info; // так добираться до элементов в списке
 
  // проверяем, является ли элемент типом TSity
  // чтобы дальше работать с данными как с Sity
  if OList[ElCnt] is TSity then
    (OList[ElCnt] as TSity).Info;
 
  OList.Free; // уничтожаем список
end;
 
end.
3
95 / 38 / 15
Регистрация: 02.04.2015
Сообщений: 235
12.07.2015, 15:06  [ТС]
Arcor, Спасибо. Хороший пример. Как будет выглядеть форма , просто 1 кнопка?

Добавлено через 23 минуты
Arcor, или как?
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
12.07.2015, 15:07
да, как будет выглядеть форма очень легко узнать отсюда
Цитата Сообщение от Arcor Посмотреть сообщение
Delphi
1
2
3
4
type TForm1 = class(TForm) 
Button1: TButton;
.....
.....
а отсюда ущнают какие обработчики
Цитата Сообщение от Arcor Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
type TForm1 = class(TForm) 
....
.... 
procedure Button1Click(Sender: TObject); 
private 
{ Private-Deklarationen } 
public 
{ Public-Deklarationen }
1
95 / 38 / 15
Регистрация: 02.04.2015
Сообщений: 235
12.07.2015, 15:16  [ТС]
Arcor, при нажатии на кнопка должна выводиться информация?

Добавлено через 54 секунды
Arcor, да , все вижу , спасибо , замечательный пример)

Добавлено через 5 минут
Arcor, Еще вопрос.1)Как Сохранить содержимое TOBJectList в файл
2) Чтение TobjectList
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
12.07.2015, 15:18
Цитата Сообщение от Петр Аркадьевич Посмотреть сообщение
Arcor, Еще вопрос.1)Как Сохранить содержимое TOBJectList в файл
2) Чтение TobjectList
тут нужно разрабатывать алгоритм. и структуру, как мы будем это производить, но лучше всего через TFileStream, сейчас набросаю пример
0
95 / 38 / 15
Регистрация: 02.04.2015
Сообщений: 235
12.07.2015, 15:20  [ТС]
Arcor, Спасибо, желательно на том же примере

Добавлено через 14 секунд
Arcor, если это возможно
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
12.07.2015, 16:24
сделал просто сохранение и загрузку TPerson в файл, TSity сделаете сами, по аналогии, там пару значений поменять нужно всего

никаких проверок я не делал что касаются файла и распределения памяти, это уже ваша часть задания обеспечиить эти все "защиты" и проверки

вот собственно код, на 1 кнопке создаем жлементы и записываем с писок, и так же записываем в файл
на второй кнопке загрузка данных из файла

Delphi
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Contnrs;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
 
  TSex = (sxUnknown, sxMale, sxFemale);
 
  TPerson = class
    private
      FName: String;
      FSex: TSex;
      FBDate: TDateTime;
    public
      constructor Create(AName: String; ASex: TSex; ABDate: TDateTime);
      procedure Info;
 
      property Name: String read FName write FName;
      property Sex: TSex read FSex write FSex;
      property BDate: TDateTime read FBDate write FBDate;
  end;
 
  TSity = class
    private
      FName: String;
      FPop: Integer;
    public
      constructor Create(AName: String; APop: Integer);
      procedure Info;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
// -------------------------------- первый класс --------------------------------
// конструктор класса с задачей параметров
constructor TPerson.Create(AName: String; ASex: TSex; ABDate: TDateTime);
begin
  FName := AName;
  FSex := ASex;
  FBDate := ABDate;
end;
// процедура выдающая информацию
procedure TPerson.Info;
const ASexStr: Array[TSex] of String = ('Неизвестен', 'Мужской', 'Женский');
begin
  MessageDlg('Данный класс: ' + ClassName + #13#10#13#10 + 'Имя: ' + FName + #13#10 + 'Пол: ' +
    ASexStr[FSex] + #13#10 + 'Дата рождения: ' + DateToStr(FBDate), mtInformation, [mbOK], 0)
end;
 
 
 
// -------------------------------- второй класс --------------------------------
constructor TSity.Create(AName: String; APop: Integer);
begin
  FName := AName;
  FPop := APop;
end;
 
procedure TSity.Info;
begin
  MessageDlg('Данный класс: ' + ClassName + #13#10#13#10 + 'Название: ' +
    FName + #13#10 + 'Население: ' + IntToStr(FPop), mtInformation, [mbOK], 0);
end;
 
// процедура сохранения TPerson в файл
procedure Save(AOList: TObjectList; AFileName: String);
var FS: TStream;
    MS: TMemoryStream;
    P: TPerson;
    Strlen: Integer;
    i: Integer;
begin
  FS := TFileStream.Create(AFileName, fmCreate);
 
  MS := TMemoryStream.Create;
 
  for i := 0 to AOList.Count - 1 do
    begin
      if AOList[i] is TPerson then
        begin
          P := AOList[i] as TPerson;
 
          StrLen := Length(P.Name);
          FS.WriteBuffer(Strlen, SizeOf(Strlen));
          FS.WriteBuffer(P.Name[1], SizeOf(Char) * Strlen);
 
          MS.Position := 0;
          FS.CopyFrom(MS, MS.Size);
          FS.WriteBuffer(P.Sex, SizeOf(TSex));
          FS.WriteBuffer(P.BDate, SizeOf(P.BDate));
        end;
    end;
 
  MS.Free;
  FS.Free;
end;
 
// процедура загрузки TPerson из файла
procedure Load(AOList: TObjectList; AFileName: String);
var FS: TStream;
    MS: TMemoryStream;
    Name: String;
    Sex: TSex;
    BDate: TDateTime;
 
    Strlen: Integer;
begin
  FS := TFileStream.Create(AFileName, fmOpenRead);
 
  MS := TMemoryStream.Create;
 
  while FS.Position <= FS.Size - 1 do
    begin
 
      FS.ReadBuffer(Strlen, SizeOf(Strlen));
      SetLength(Name, Strlen);
      FS.ReadBuffer(Name[1], SizeOf(Char) * Strlen);
 
      MS.Position := 0;
      FS.CopyFrom(MS, MS.Size);
 
      FS.ReadBuffer(Sex, SizeOf(TSex));
      FS.ReadBuffer(BDate, SizeOf(BDate));
      AOList.Add(TPerson.Create(Name, Sex, BDate));
    end;
 
  MS.Free;
  FS.Free;
 
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var OList: TObjectList;
    ElCnt: Integer;
begin
  OList := TObjectList.Create; // создаем список
 
  OList.Add(TPerson.Create('Маша', sxFemale, StrToDate('1.2.1995'))); // создание и добавление информации в список
  OList.Add(TPerson.Create('Коля', sxMale, StrToDate('5.7.1985')));   // еще добавление в список
 
  OList.Add((TSity.Create('Барнаул', 620000)));
  OList.Add((TSity.Create('Санкт-Петербург', 5000000)));
  OList.Add((TSity.Create('Новосибирск', 1500000)));
 
  ElCnt := 1;
 
  // проверить, является ли некий элемент типом TPerson
  // для того чтобы работать потом с данным элементом как с Person
  if OList[ElCnt] is TPerson then
    (OList[ElCnt] as TPerson).Info; // так добираться до элементов в списке
 
  // проверяем, является ли элемент типом TSity
  // чтобы дальше работать с данными как с Sity
  if OList[ElCnt] is TSity then
    (OList[ElCnt] as TSity).Info;
 
  Save(OList, 'C:\123.dat');  // после того как заполнили список, сохраняем его
 
 
  OList.Free; // уничтожаем список
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var OList: TObjectList;
    ElCnt: Integer;
begin
  OList := TObjectList.Create; // создаем список
  Load(OList, 'C:\123.dat');   // загружаем информацию из файла и записываем в список
 
  ElCnt := 0;
 
  // далее достаем из списка элементы по уже ранее описанному алгоритму
 
  if OList[ElCnt] is TPerson then
    (OList[ElCnt] as TPerson).Info; // так добираться до элементов в списке
 
  if OList[ElCnt] is TSity then
    (OList[ElCnt] as TSity).Info;
 
  OList.Free; // уничтожаем список
 
end;
 
end.
Добавлено через 17 минут
в общем вот и город и человек еще записывается и читается

Delphi
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// процедура сохранения TPerson в файл
procedure Save(AOList: TObjectList; AFileName: String);
var FS: TStream;
    MS: TMemoryStream;
    P: TPerson;
    S: TSity;
    Strlen: Integer;
    i: Integer;
begin
  FS := TFileStream.Create(AFileName, fmCreate);
 
  MS := TMemoryStream.Create;
 
  for i := 0 to AOList.Count - 1 do
    begin
      if AOList[i] is TPerson then
        begin
          P := AOList[i] as TPerson;
 
          // запись названия класса
          StrLen := Length(P.ClassName);
          FS.WriteBuffer(Strlen, SizeOf(Strlen));
          FS.WriteBuffer(P.ClassName[1], SizeOf(Char) * Strlen);
 
          // запись имени
          StrLen := Length(P.Name);
          FS.WriteBuffer(Strlen, SizeOf(Strlen));
          FS.WriteBuffer(P.Name[1], SizeOf(Char) * Strlen);
 
          MS.Position := 0;
          FS.CopyFrom(MS, MS.Size);
          // запись пола
          FS.WriteBuffer(P.Sex, SizeOf(TSex));
          // запись даты рождения
          FS.WriteBuffer(P.BDate, SizeOf(P.BDate));
        end;
 
      if AOList[i] is TSity then
        begin
          S := AOList[i] as TSity;
 
          // запись названия класса
          StrLen := Length(S.ClassName);
          FS.WriteBuffer(Strlen, SizeOf(Strlen));
          FS.WriteBuffer(S.ClassName[1], SizeOf(Char) * Strlen);
 
          // запись названия города
          StrLen := Length(S.Name);
          FS.WriteBuffer(Strlen, SizeOf(Strlen));
          FS.WriteBuffer(S.Name[1], SizeOf(Char) * Strlen);
 
          MS.Position := 0;
          FS.CopyFrom(MS, MS.Size);
          // запись кол-ва населения
          FS.WriteBuffer(S.Pop, SizeOf(S.Pop));
        end;
    end;
 
  MS.Free;
  FS.Free;
end;
 
// процедура загрузки TPerson из файла
procedure Load(AOList: TObjectList; AFileName: String);
var FS: TStream;
    MS: TMemoryStream;
    Name: String;
    Sex: TSex;
    BDate: TDateTime;
    Pop: Integer;
 
    Strlen: Integer;
begin
  FS := TFileStream.Create(AFileName, fmOpenRead);
 
  MS := TMemoryStream.Create;
 
  while FS.Position <= FS.Size - 1 do
    begin
 
      // чтение названия класса
      FS.ReadBuffer(Strlen, SizeOf(Strlen));
      SetLength(Name, Strlen);
      FS.ReadBuffer(Name[1], SizeOf(Char) * Strlen);
 
      if Name = 'TPerson' then
        begin
 
          // чтение имени
          FS.ReadBuffer(Strlen, SizeOf(Strlen));
          SetLength(Name, Strlen);
          FS.ReadBuffer(Name[1], SizeOf(Char) * Strlen);
 
          MS.Position := 0;
          FS.CopyFrom(MS, MS.Size);
 
          FS.ReadBuffer(Sex, SizeOf(TSex));
          FS.ReadBuffer(BDate, SizeOf(BDate));
          AOList.Add(TPerson.Create(Name, Sex, BDate));
        end;
 
      if Name = 'TSity' then
        begin
 
          // чтение названия города
          FS.ReadBuffer(Strlen, SizeOf(Strlen));
          SetLength(Name, Strlen);
          FS.ReadBuffer(Name[1], SizeOf(Char) * Strlen);
 
          MS.Position := 0;
          FS.CopyFrom(MS, MS.Size);
 
          FS.ReadBuffer(Pop, SizeOf(Pop));
          AOList.Add(TSity.Create(Name, Pop));
        end;
    end;
 
  MS.Free;
  FS.Free;
 
end;
2
95 / 38 / 15
Регистрация: 02.04.2015
Сообщений: 235
12.07.2015, 17:40  [ТС]
Arcor, огромное спасибо. Только не очень понятно для меня процедура сейв и лоад соответственно. И еще так вопрос : как сделать чтобы 2-ая форма работала с одним объектом?

Добавлено через 8 минут
Arcor, если брать TPerson , то в файле отображаются имена Коля и Маша , а все остальное а кодировке
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
12.07.2015, 17:59
Цитата Сообщение от Петр Аркадьевич Посмотреть сообщение
если брать TPerson , то в файле отображаются имена Коля и Маша , а все остальное а кодировке
Это не кодировка, а просто бинарные данные.
0
95 / 38 / 15
Регистрация: 02.04.2015
Сообщений: 235
12.07.2015, 18:24  [ТС]
northener, как их можно избежать?
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
12.07.2015, 18:47
Цитата Сообщение от Петр Аркадьевич Посмотреть сообщение
как их можно избежать?
Зачем? Вопрос звучал
Цитата Сообщение от Петр Аркадьевич Посмотреть сообщение
Как Сохранить содержимое TOBJectList в файл
В коде Arcor есть и сохранение и загрузка.
0
95 / 38 / 15
Регистрация: 02.04.2015
Сообщений: 235
12.07.2015, 18:48  [ТС]
northener, Это я видел, просто не очень понятно для меня описаны процедуры
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
12.07.2015, 18:58
Цитата Сообщение от Петр Аркадьевич Посмотреть сообщение
как их можно избежать?
для чего их избегать? жанные эти просто в блокнте так отображаются и не наша это забота знать как оно там в текстовом формате выглядит
Цитата Сообщение от Петр Аркадьевич Посмотреть сообщение
Это я видел, просто не очень понятно для меня описаны процедуры
что нужно объяснить? как работает весь механизм, открываем справочник/учебник и изучаем, я не буду все это тут рассказывать, ибо писать много придется

Добавлено через 1 минуту
P.S. везде где MS есть , их можно убрать, я сперва задумал немного по другому, потом переделал немного, и оказалось, что MS не используется там
0
95 / 38 / 15
Регистрация: 02.04.2015
Сообщений: 235
12.07.2015, 19:08  [ТС]
Arcor, =) А вот я писал еще про 2-ую форму: как сделать чтобы 2-ая форма работала с одним объектом?
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
12.07.2015, 19:19
Цитата Сообщение от Петр Аркадьевич Посмотреть сообщение
А вот я писал еще про 2-ую форму: как сделать чтобы 2-ая форма работала с одним объектом?
я не понял что имеется ввиду, форма тут при чем?
0
95 / 38 / 15
Регистрация: 02.04.2015
Сообщений: 235
12.07.2015, 20:13  [ТС]
Arcor, да вот просто тут задание с примером вашим схожие.
В 1-ой форме должны быть как раз кнопки сохранить и удалить ( это все есть)

Добавлено через 41 секунду
Arcor, А во 2-ой должны быть поля Edit , в которых я ввожу данные имя , пол и т.п.

Добавлено через 1 минуту
Arcor, т.е. когда введу поля во 2-ой форме , на 1-ой должна отобразиться эта информация полностью

Добавлено через 38 минут
Arcor, Не знаете как это сделать, вообщем вместо заплонированного текста , должен выводиться мой , который я напечатаю в edit
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
12.07.2015, 21:10
значит в главной форме делаешь типа глобальную переменную списка, во второй форме кидаешь эдиты и что там надо, во второй форме обращаемся к первой форме, с списку, и во второй форме добавляем инфу в этот список. т.е получится глобальный контейнер

в первой форме типа тут пишешь

Delphi
1
2
3
4
5
6
7
8
9
10
11
TForm1 = class(TForm)
private
.....
public
 
MyList: TObjectList; // именно в Public секции
... 
 
end;
 
...
вторая форма

тут какие-*то обработчики. скажем тык по енопке для добавления инфы

Delphi
1
2
3
4
5
6
7
8
9
procedure BtnClick(Sender: TObject);
begin
lalala
bla bla bla
 
ну и тут как в тех примерах
Form1.MyList.Add( ... );
 
end;
1
95 / 38 / 15
Регистрация: 02.04.2015
Сообщений: 235
12.07.2015, 21:24  [ТС]
Arcor, Хорошо , а как самому вводить данные в edit, и в примерах , которые вы давали OList и все остальное также и останется?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.07.2015, 21:24
Помогаю со студенческими работами здесь

Технология DDE. Простой пример
Уважаемые гуру, очень нужна ваша срочная помощь. Нужен исходник DDE-сервера и DDE-клиента. Чтобы от клиента серверу отправлялось...

Простой пример работы с потоками
На разных форумах рассматриваются конкретные задачи, в которых нужно использовать поток. Хотелось бы не очень вникая в детали...

Простой пример шифрование строки AES256
Добрый день уважаемые знатоки по шифрованию. Недавно столкнулся с необходимостью защиты информации в моей программе. Для понимания мне...

Простой пример с использованием оператора XOR
Помогите, разобраться с этим операторам.

Вариантные записи. Простой и понятный пример
не пойму как работать с вариантными записями. может кто-то выложить понятный и расжёваный пример?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru