Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2010, 14:45   #1
JustKurt
ANT team
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 39
По умолчанию TObjectList.Add - проблемы

Доброго всем времени суток!
не могу решить проблему с кодом -

Код:
  EditList = class(TObjectList)
  private
    function GetItems(Index: Integer): TEdit;
    procedure SetItems(Index: Integer; const Value: TEdit);
  public
    property Items[Index: Integer]: TEdit read GetItems write SetItems; default;
  end;

........

procedure TForm1.btn1Click(Sender: TObject);
var
    i,b: integer;
begin
EditList.Create(true); 
b:=3;
for i := 1 to b do
begin
  Edit := TEdit.Create(nil);
  Edit.Parent := Form1;
  Edit.Top := 40 + 25*i;
  Edit.Left := 120;
  case i of
    1: Edit.Name := 'Surname';
    2: Edit.Name := 'Name';
    3: Edit.Name := 'Adress';
  end;
  Edit.Text := '';
  EditList.Add(Edit); // <- This form of method call only allowed for class methods
end;
end;
При компиляции ругается на "This form of method call only allowed for class methods"

В поиске/гугле был - ничего толкового не нашел..


UPD : Сорри, проблему решил - переписал код заново - все работает)

Последний раз редактировалось JustKurt; 18.06.2010 в 15:19. Причина: решено
JustKurt вне форума Ответить с цитированием
Старый 18.06.2010, 15:42   #2
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Я ее тут чуть поправил, а то в том виде она никак работать не хотела
Код:
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);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var Edit:array[1..3]of TEdit;
 EditList:TObjectList;
const
EdName:array[1..3]of string=('Surname','Name','Adress');

procedure TForm1.Button1Click(Sender: TObject);
var
    i,b: integer;
begin
EditList:=TObjectList.Create(true);
b:=3;
for i := 1 to b do
begin
  Edit[i] := TEdit.Create(owner);
  with Edit[i]do begin
  Parent := Form1;
  Top := 40 + 25*i;
  Left := 120;
  Name := EdName[i];
  Text := '' end;
  EditList.Add(Edit[i]);
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 EditList.Free
end;

end.
baster128 вне форума Ответить с цитированием
Старый 18.06.2010, 15:46   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

одно но, массива тут не надо, иначе смысл от списка обьектов(ObjectList)?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.06.2010, 19:36   #4
JustKurt
ANT team
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 39
По умолчанию

Да, это понятно, что не нужно - пытался вообще код запустить, преподаватель требует именно через массив)

Код:
procedure TForm1.Button11Click(Sender: TObject);
var i: integer;
begin
EditList := TEditList.Create(true);
EditList.Add(Edit1);
EditList.Add(Edit2);
EditList.Add(Edit3);
EditList.Add(Edit4);
EditList.Add(Edit5);
EditList.Sort(@CompareObjectName);
for i := 0 to EditList.Count-1 do
  begin
  EditList[i].Left := 120;
  EditList[i].Top := 60+i*30;
  end;
end;
Код:
 EditList[i].Left := 120;
  EditList[i].Top := 60+i*30;
Проблема - как задать правильно для элементов?
Необходимо создать произвольный набор компонентов ( едиты в данном случае ) и раскидать по форме , после выстроить их ровно через TObjectList... = |


UPD : Проблему снова решил ) Детальный поиск на форуме - уникальная вещь)

Верно будет

Код:
(EditList[i] as tedit).Left := 120;
и т.д.

Всем спасибо за участие и внимание!

Последний раз редактировалось JustKurt; 18.06.2010 в 19:45.
JustKurt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение(Add) Rymbil Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 22.01.2010 10:24
SQL.add Grom48 БД в Delphi 2 13.12.2009 16:42
add project lalilulelo Помощь студентам 3 26.05.2009 10:18
Проблемы с TObjectList lexaltd Общие вопросы Delphi 6 06.04.2009 20:54