Добрый день или вечер. Подскажите пожалуйста как правильно создать функцию удаления фигур с формы. Моих навыков программирования хватило только на написания функции Off которая изменяет параметр Visible, однако мне надо чтобы фигура совсем стиралась с Формы.
И ещё. Деструктор можно использовать для удаления элементов из массива (У меня под каждую фигуру выделен массив). В нем можно реализовать это удаление?
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;
OCTAGRAM
13.12.2017 7:35
Цитата(SkyEdge @ 13.12.2017 1:17)
Добрый день или вечер. Подскажите пожалуйста как правильно создать функцию удаления фигур с формы.
Насколько я понимаю, если не делать по совсем нормальному пути (безоконным компонентом вроде стандартных TLabel или TShape), то хотя бы на форму поставить TPaintBox, и в его OnDraw рисовать все фигуры. А в конструкторе и деструкторе фигур только делать Invalidate.
Цитата(SkyEdge @ 13.12.2017 1:17)
И ещё. Деструктор можно использовать для удаления элементов из массива (У меня под каждую фигуру выделен массив). В нем можно реализовать это удаление?
Да. Компоненты внутри TComponentList ведут себя так.
Цитата(SkyEdge @ 13.12.2017 2:07)
setlength(MTreug,CountTreug); // Увеличить массив МTreug на значение CountTreug MTreug[nTekTreug]:= TTreug.create(Xu1,Yu1,Ru1,ColorFig,Form1);
Вот тут бы двигать элементы ещё надо.
Или взять TObjectList, который умеет двигать. И он ещё умеет автоуничтожение делать своим элементам при удалении.
nishaknapp
16.01.2023 7:01
Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. Craps: Meet the Dice Game
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.