Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
ВнизПомогите с созданием класса Найти похожие ветки
← →
interandry © (2007-08-03 14:59) [0]Добрый день!!! Вопрос вот ч чем.
Есть форма с PaintBox - необходимо реализовать класс визуального компонента для того что бы после клика на PaintBox этот компонент прорисовался на PaintBox.
← →
Сергей М. © (2007-08-03 15:02) [1]И чем же тебе помочь ?
← →
JanMihail © (2007-08-03 19:00) [2]Зачем тебе класс. Просто при нажатии на PaintBox найди на не м все компоненты и перерисуй. FindComponent или EnumWindows()
← →
interandry © (2007-08-03 22:45) [3]Спасибо за ответы. Дело в том что мне надо создать класс компонента ну например опоры (теор-мех). При нажатии на кнопку на панели должен создаваться этот класс а при клике по PaintBox прорисовываться в указаном месте. Вообще мне надо сделать что то типа P-CADa или подобного. Вот скрин того что должно быть http://zagrebay2007.narod.ru/Screen.JPG
← →
ЮЮ © (2007-08-04 09:21) [4]
> необходимо реализовать класс визуального компонента для
> того что бы после клика на PaintBox этот компонент прорисовался
> на PaintBox
Если компонент визуальный, то причем здесь PaintBox и клик на нем. Он должен рисоваться на "себе", типа TShape.
Если невизуальный, то должен иметь метод типа Draw(ACanvs: TCanvar; ARect: TRect; ...), т.е. уметь рисовать себя на любом канвасе, будь то канвас TPaintBox-а, или TBitnap или TPrinter
← →
interandry © (2007-08-05 01:05) [5]Большое спасибо. Вот только попробывал - ПОЛУЧИЛИСЬ!!! Еще раз спасибо огромное.
Я сделал как предложил ЮЮ - на основе не визуального класса.
Но у меня встречный вопрос - для не визуальный компонентов возможно реализовать ракцию на мышку, клавиатуру, и определять находится курсор над этим компонентом.
Заранее благодарю!!!!!
ЗЫ. Как мед так и ложкой. :)
← →
{RASkov} © (2007-08-05 01:16) [6]> [5] interandry © (05.08.07 01:05)
> Но у меня встречный вопрос - для не визуальный компонентов
> возможно реализовать ракцию на мышку, клавиатуру, и определять
> находится курсор над этим компонентом.
> Заранее благодарю!!!!!
Что ты имеешь ввиду? Если он невизуальный, то ..... вообщем как это - (невизуальный) и (находится ли над ним курсор)??
Может тебе стоит свою изначальную задачу подробнее объяснить...А?
← →
interandry © (2007-08-05 11:19) [7]Добрый день!!
Из+ачально задача состоит в то что бы создать некий редактор, аля P-CAD или ему подобный. http://zagrebay2007.narod.ru/Screen.JPG
1. Кликаем по кнопке на панели соответствующего элемента (опора, балка...)
2. Кидаем его на холст редактора (канва)
3. При необходимости двигаем его по холсту мышкой
Примерно так.
По совету
> Если компонент визуальный, то причем здесь PaintBox и клик
> на нем. Он должен рисоваться на "себе", типа TShape.Если
> невизуальный, то должен иметь метод типа Draw(ACanvs: TCanvar;
> ARect: TRect; ...), т.е. уметь рисовать себя на любом канвасе,
> будь то канвас TPaintBox-а, или TBitnap или TPrinter
я сделал так что мой класс прорисовывает себя на канве, но вкралось такое подозрение что если содать класс на основе не визуального компонента, функциональность на этом и заканчивается.
Извините за костноязычность :(
Заранее спасибо.
← →
{RASkov} © (2007-08-05 22:49) [8]> [7] interandry © (05.08.07 11:19)
Можно, например, реализовать коллекцией
где CollectionItem"ом будет "фигура" прорисовываемая на общей, для всех "фигур", канве...
В элементе хранить параметры рисования, такие как Left, Top, Width, Height, Кисть, Перо и все что нужно еще...
При прорисовке делать нечто так:
for N:= 0 to Collection.Count-1 do begin
Canvas.Pen.Assign(Item[N].Pen);
....
Item[N].Draw(Canvas);
end;
Причем Канву лучше использовать не Паинтбокса, а Битмапа, а на OnPaint PainBox"а BitBlt с канвы битмапа на паинтбокс....
для перемещения элемента можно менять left и top выделенного Item"a...
Мышь можно проверять PtInRect или PtInRegion....
В общем идея такая....
← →
Двигатель внешнего сгорания (2007-08-05 23:04) [9]
> interandry © (05.08.07 11:19) [7]
С классом идея правильная.
Попробуй классический метод:
1. Создай абстрактный класс, например TFigure с абстрактным методом Paint.
2. Каждый наследник TFigure имеет собственный набор свойств и перекоывает метод Paint, т.е. умеет себя отрисовывать самостоятельно.
Например:TFigure=class
FCanvas: TCanvas;
private
procedure Paint; abstract;
public
constructor Create(Canvas: TCanvas);
procedure Draw;
end;
TSquare=class(TFigure)
FRect: TRect;
private
procedure Paint;
end;
TСircle=class(TFigure)
FRect: TRect;
private
procedure Paint;
end;
implementation
constructor TFigure.Create(Canvas: TCanvas);
begin
FCanvas := Canvas;
end;
procedure TSquare.Paint;
begin
FCanvas.Rectangle(FRect);
end;
procedure TСircle.Paint;
begin
FCanvas.Ellipse(FRect);
end;
Каждая фигура прорисовывает себя на канве, используя public-метод Draw.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c