IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Помогите решить проблему с удалением фигур, Работа с фигурами
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской
Реальное имя: Pavel

Репутация: -  0  +


Добрый день или вечер.
Подскажите пожалуйста как правильно создать функцию удаления фигур с формы.
Моих навыков программирования хватило только на написания функции Off которая изменяет параметр Visible, однако мне надо чтобы фигура совсем стиралась с Формы.

И ещё. Деструктор можно использовать для удаления элементов из массива (У меня под каждую фигуру выделен массив). В нем можно реализовать это удаление?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 2
Пол: Мужской
Реальное имя: Pavel

Репутация: -  0  +


Фрагменты кода


constructor TFigure.create (x1,y1,r1 : integer; Color1 : TColor; TekForm1 : TForm);
begin
x:= x1;
y:= y1;
r:= r1;
Color:= Color1;
TekForm:= TekForm1;
Width:=5;
Visible:=True;
Draw;
end;

procedure TTreug.Draw; //Процедура рисования треугольника
var dx,dy : integer;
begin
TekForm.Canvas.Pen.Color:= Color;
TekForm.Canvas.Pen.Width:= Width;
dy:= round(r/2);
dx:= round(r*cos(pi/6));
TekForm.Canvas.MoveTo(x-dx,y+dy); //поместить карандаш в т1
TekForm.Canvas.LineTo(x,y-r); //линия 1-2
TekForm.Canvas.LineTo(x+dx,y+dy); //линия 2-3
TekForm.Canvas.LineTo(x-dx,y+dy); //линия 3-1
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Ru1:=round(sqrt(sqr(X-Xu1)+sqr(Y-Yu1)));
if (FlagFig1 = True) or (FlagFig2= True) or (FlagFig3= True) or (FlagFig4=True) then
begin
ColorDialog1.Execute; // вызов цветовой палитры
ColorFig:= ColorDialog1.Color; // присвоение цвета из цветовой палитры в переменную ColorFig
if FlagFig1 = True then // Cоздание треугольника
begin
CountFigura:=CountFigura+1;
nTekFigura:=CountFigura-1;
CountTreug:= CountTreug+1;
nTekTreug:= CountTreug-1;
setlength(MTreug,CountTreug); // Увеличить массив МTreug на значение CountTreug
MTreug[nTekTreug]:= TTreug.create(Xu1,Yu1,Ru1,ColorFig,Form1);
FlagFig1:=False;
ListBox1.Items.Add(IntToStr(nTekTreug)+'-Треугольник');
ListBox1.ItemIndex:=nTekTreug;
ListBox1.Selected[nTekTreug];
if (CountTreug>1) then MTreug[nTekTreug-1].pWidth:=1; // Предыдущий треугольник становятся простой(не выделенный)

if CountKrug>0 then lst1.Selected[nTekKrug]:=False;
if CountPrUg>0 then lst2.Selected[nTekPrUg]:=False;
if CountTrap>0 then lst3.Selected[nTekTrap]:=False;
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 17:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name