Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];

Вниз

Не рисуется компонента, и все тут...   Найти похожие ветки 

 
Aleksandr   (2001-12-18 13:03) [0]

Уважаемые коллеги!
Понадобилось это мне создать компоненту. Создал, породив от TGraphicControl. Ставлю на форму - все в порядке, проперти видны, но вот не рисуется, и все тут... Код таков

type
TWayTree = class(TGraphicControl)
private
...
protected
procedure Paint;override;
public
constructor Create(AOwner : TComponent);
published
...
property Color default clWhite;
property Visible default true;
end;

procedure Register;

implementation

procedure TWayTree.Paint;
var
ARect : TRect;
begin
Inherited;
Canvas.Brush.Color:=Color;
ARect.Left:=Left;
ARect.Top:=Top;
ARect.Bottom:=Top+Height;
ARect.Right:=Left+Width;
Canvas.FillRect(ARect)
end;

constructor TWayTree.Create;
begin
Inherited Create(AOwner);
...
end;

procedure Register;
begin
RegisterComponents("WayTrees", [TWayTree])
end;

end.

Мало того, когда я еще пытаюсь добавить свойства FPen и FBrush (для отдельного доступа в дизайн-тайме):

TWayTree = class(TGraphicControl)
private
FPen : TPen;
FBrush : TBrush;
procedure RePaintRequest(Sender : TObject);
procedure SetBrush(Value : TBrush);
procedure SetPen(Value : TPen);
protected
procedure Paint;override;
public
constructor Create(AOwner : TComponent);
destructor Destroy;
published
property Color default clWhite;
property Visible;
property Brush : TBrush read FBrush write SetBrush;
property Pen : TPen read FPen write SetPen;
end;

procedure Register;

implementation

procedure TWayTree.Paint;
var
ARect : TRect;
begin
Inherited;
Canvas.Pen:=FPen;
Canvas.Brush:=FBrush;
Canvas.Brush.Color:=Color;
ARect.Left:=Left;
ARect.Top:=Top;
ARect.Bottom:=Top+Height;
ARect.Right:=Left+Width;
Canvas.FillRect(ARect);
Canvas.TextOut(ARect.Left,ARect.Top,"AAA");
end;

destructor TWayTree.Destroy;
begin
FPen.Free;
FBrush.Free;
inherited Destroy
end;

constructor TWayTree.Create;
begin
Inherited Create(AOwner);
FPen:=TPen.Create;
FBrush:=TBrush.Create;
FPen.OnChange:=RepaintRequest;
FBrush.OnChange:=RepaintRequest
end;

procedure TWayTree.SetBrush;
begin
if Value=nil then
Exit;
FBrush.Assign(Value);
Invalidate
end;

procedure TWayTree.SetPen;
begin
if Value=nil then
Exit;
FPen.Assign(Value);
Invalidate
end;

procedure TWayTree.RePaintRequest;
begin
Invalidate
end;

procedure Register;
begin
RegisterComponents("WayTrees", [TWayTree]);
end;

end.
компонента при вставлении в форму ругается, что не может установить Pen в nil. Pen и Brush в Инспекторе появляются, но при нажатии на + нифига не выпадает, при изменении размеров компоненты та же ошибка... Чего я тут не так делаю?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
1-22071
KAA
2001-12-19 10:48
2002.01.08
Два сервиса мешают друг другу.


6-22297
Вопрошатель
2001-10-10 17:09
2002.01.08
Посоветуйте кто, что может


3-21919
VS
2001-12-04 14:07
2002.01.08
Чтение и исправление данных из базы формата DBF Visual FoxPro 6.0


3-21953
VariK
2001-12-05 15:14
2002.01.08
Про Записи


1-22183
XeN
2001-12-21 11:21
2002.01.08
DelphiX_play





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский