Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 566

/ вопрос решён /

Здравствуйте!
Искал что такое класс TComponentList или TObjectList .
Нашел только в одном месте http://zoo-mania.ru/delphi/tobjectlist/index.html, но этот пример не работает:

Приложение:
  1. unit main;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.  
  8.  
  9. type
  10. TfrmCallbase = class(TForm)
  11.  
  12. Edit1: TEdit;
  13. Edit2: TEdit;
  14. procedure FormCreate(Sender: TObject);
  15. procedure FormDestroy(Sender: TObject);
  16. private
  17. { Private declarations }
  18. public
  19. { Public declarations }
  20. end;
  21. type
  22. TEditList = class(TObjectList)
  23. private
  24. function GetItems(Index: Integer): TEdit;
  25. procedure SetItems(Index: Integer; const Value: TEdit);
  26. published
  27. public
  28. property Items[Index: Integer]: TEdit read GetItems write SetItems; default;
  29. end;
  30. var
  31. frmCallbase: TfrmCallbase;
  32. EditList: TEditList;
  33.  
  34. implementation
  35.  
  36. {$R *.dfm} { TEditList }
  37. procedure TfrmCallbase.FormCreate(Sender: TObject);
  38. begin
  39. EditList := TEditList.Create();
  40. EditList.Add(Edit1);
  41. EditList.Add(Edit2);
  42.  
  43. for i:=0 to EditList.Count - 1 do
  44. EditList[i].Text = 'default';
  45. end;
  46.  
  47. procedure TfrmCallbase.FormDestroy(Sender: TObject);
  48. begin
  49. EditList.Free;
  50. end;
  51.  
  52. function TEditList.GetItems(Index: Integer): TEdit;
  53. begin
  54. Result := TEdit(inherited GetItem(Index));
  55. end;
  56.  
  57. procedure TEditList.SetItems(Index: Integer; const Value: TEdit);
  58. begin
  59. inherited SetItem(Index, Value);
  60. end;
  61.  
  62. end.
  63. {Error in module main: Declaration of class TForm1 is missing or incorrect.
  64.  
  65.  
  66. }
  67.  
  68. type
  69. TForm1 = class(TForm) // ???????????
  70.  


Примечание #1 (13 октября 2014, 18:56):
Как это вставить? Или покажите работающую программу, где всё понятно для меня.

zvygin1964 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: zvygin1964 (статус: Посетитель)
Вопрос отправлен: 13 октября 2014, 18:55
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 14 октября 2014, 19:31; участников в обсуждении: 1.
zvygin1964

zvygin1964 (статус: Посетитель), 14 октября 2014, 19:31 [#1]:

Спасибо за ответ min@y™
unit main; 
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Contnrs;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Edit4: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
    type
 TEditList = class(TObjectList)
  private
    function GetItems(Index: Integer): TEdit;
    procedure SetItems(Index: Integer; const Value: TEdit);
  published
  public
    property Items[Index: Integer]: TEdit read GetItems write SetItems; default;
  end;
 
var
  Form1: TForm1;
  EditList: TEditList;
 
 
 
implementation
 
{$R *.dfm}  { TEditList }
function TEditList.GetItems(Index: Integer): TEdit;
begin
   Result := TEdit(inherited GetItem(Index));
end;
 
procedure TEditList.SetItems(Index: Integer; const Value: TEdit);
begin
  inherited SetItem(Index, Value);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
 var
   i: Integer;
begin
  EditList := TEditList.Create();
  for i:= 0 to ComponentCount - 1 do
  if Components[i] is TEdit
    then EditList.Add(Components[i]);
 
    for i:=0 to EditList.Count - 1 do
    begin
     EditList[i].Text := 'default';
    end;
 
  end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
   EditList.Free;
end;
 
end.

14 октября 2014, 19:32: Статус вопроса изменён на решённый (изменил автор вопроса — zvygin1964): Решение дал min@y™ . Оценка 5.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:25
Выполнено за 0.03 сек.