Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];
ВнизВопрос по ООП Найти похожие ветки
← →
Arx (2007-08-12 20:03) [0]Я довольно долго работал в Delphi, создал пару логических игр, редакторов, но с ООП не работал и вот решил научиться. Принцип создания классов, полей и методов я освоил, но вот с конкретным созданием объектов сложности.
Задача такая: создать программу, которая создавала бы при клике левой кнопкой мыши на форму объект, например квадрат (нарисованный в Canvas), а при клике правой кнопкой мыши на любом уже созданном объекте объект исчезал.
Позже, хотелось бы освоить взаимодействия объектов, например, когда один объект касается другово такого-же, оба исчезают.
← →
Leonid Troyanovsky © (2007-08-12 21:10) [1]
> Arx (12.08.07 20:03)
> Задача такая: создать программу, которая создавала бы при
> клике левой кнопкой мыши на форму объект, например квадрат
> (нарисованный в Canvas), а при клике правой кнопкой мыши
Поищи у себя на компе graphex.dpr.
Это - про левую кнопку.
Ну, а про правую, надо почитать книжечку к.л. по OOP Delphi.
--
Regards, LVT.
← →
Kostafey © (2007-08-12 21:52) [2]> при клике левой кнопкой мыши на форму объект, например квадрат
> (нарисованный в Canvas)
В конструкторе описать рисование квадрата,
в свойства - его координаты.
> при клике правой кнопкой мыши на любом уже созданном объекте
> объект исчезал
Ловим координаты мышки, перебираем свойства созданных объектов.
В деструкторе рисуем на том же месте квадрат малевича :)
Если объет создавался на основе какого-нибудь shape, то это даже не понадобится.
> Позже, хотелось бы освоить взаимодействия объектов, например,
> когда один объект касается другово такого-же, оба исчезают.
Тоже все решается перебором.
← →
Arx (2007-08-12 22:07) [3]Понятно всё кроме этого самого "перебора", у меня получается работать только с последним созданным объектом. Я возможно не правильно их создаю.
Var
Имя: Класс (созданный мной)
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Имя:=Класс.Create;
//X, Y становятся свойствами объекта "Имя", рисуется квадрат.
end;
Объект "Имя" я создаю заново каждый раз, и боюсь это не правильно...
← →
Германн © (2007-08-12 22:11) [4]
> Объект "Имя" я создаю заново каждый раз, и боюсь это не
> правильно...
>
Неправильно что переменная, в которой хранится адрес созданного объекта одна единственная.
← →
Kostafey © (2007-08-12 22:14) [5]> Понятно всё кроме этого самого "перебора", у меня получается
> работать только с последним созданным объектом.
Это что шутка?
Тут мастера по форуму ходят, меня сейчас пинать начнут, про связанные спсики или
еще чего посложнее, ну ладно рискну.
Я б просто маасив сделал.
Var
ArrOfMyClass: array [0..99] of TMyClass
i: byte;
при, например создании формы i:=0;
И далее
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ArrOfMyClass[i]:=TMyClass.Create(X,Y);
inc(i);
end;
← →
Leonid Troyanovsky © (2007-08-12 22:15) [6]
> Arx (12.08.07 22:07) [3]
> не правильно их создаю.
Возможно, что правильно было бы почитать хотя бы это
http://groups.google.com/group/borland.public.delphi.vcl.components.using/msg/3b9bce864c6dfb49
--
Regards, LVT.
← →
Германн © (2007-08-12 22:24) [7]
> меня сейчас пинать начнут, про связанные спсики или
> еще чего посложнее, ну ладно рискну.
Я б просто маасив сделал.
Зачем такие сложности. Есть ведь TList, TObjectList
← →
Arx (2007-08-12 22:28) [8]Спасибо. Массив, кажется, именно то, что нужно....
← →
Leonid Troyanovsky © (2007-08-12 23:02) [9]
> Arx (12.08.07 22:28) [8]
> Спасибо. Массив, кажется, именно то, что нужно....
Это только кажется.
Например, массив Components был бы, безусловно, более полезен.
Бо, при разрушении item он актуализируется.
См. также Notification procedure.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.056 c