Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.02;
Скачать: CL | DM;

Вниз

Вопрос по ООП   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
2-1186490490
1c_user
2007-08-07 16:41
2007.09.02
ГдЕ оШиБкА??, если она есть вообще...


15-1186482650
sql_
2007-08-07 14:30
2007.09.02
function


2-1186485158
Надежда
2007-08-07 15:12
2007.09.02
Проверка не запущена ли уже эта программа


15-1186225189
foreverDelphi
2007-08-04 14:59
2007.09.02
кто хочет из гуру помочь новичку


8-1164902378
Ангела
2006-11-30 18:59
2007.09.02
Есть ли компонент как Image , но