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

Вниз

Пристыковать TCanvas к TCustomPanel   Найти похожие ветки 

 
SPeller ©   (2002-07-14 09:22) [0]

Добрый день всем! Подскажите, как правильно пристыковать канву к панельке? Если делать не внутри класса, то проходило всё довольно просто:

MyCanvas:=TCanvas.Create;
MyCanvas.Handle:=GetDC(Panel1.Handle);


И рисовало и не ругалось. Внутри же класса TCustomPanel если прописать в конструкторе

FCanvas:=TCanvas.Create;
FCanvas.Handle:=GetDC(Handle);


то в строке FCanvas:=TCanvas.Create; вылазит эксепшин "Control "" has no parent window"... Какой parent window ?? Среди родителей канвы нет ниодного оконного класса, а ошибка происходит в TWinControl.CreateWnd. Идём дальше, игнорируем ошибку, и сразу же второй эксепшин "Canvas does not allow drawing" который означает что хэндл контекста, в котором рисует канва равен нулю. А как же FCanvas.Handle:=GetDC(Handle); ??

Вот полный текст конструктора:

constructor TMyCustomPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := [csAcceptsControls, csCaptureMouse, csClickEvents,
csSetCaption, csOpaque, csDoubleClicks, csReplicatable];
Width := 17;
Height := 17;
FAlignment := taCenter;
BevelOuter := bvNone;
BevelWidth := 1;
FBorderStyle := bsSingle;
FBorderWidth:=1;
Color := clBtnFace;
FFullRepaint := False;
UseDockManager := True;
FLocked:=false;
FPos:=cell(0,0); // Всё что перед такими дробями это самодеятельность
FDefColor:=clWhite; //
Color:=clWhite;
FCellState:=csEmpty; //
FPCell:=nil; //
FCanvas:=TCanvas.Create;
FCanvas.Handle:=GetDC(Handle);
FSNum:=0; //
end;


Объясните пожалуйста в чём я не прав и что не так делаю?


 
MBo ©   (2002-07-14 10:42) [1]

Во-первых, еслия я правильно понял задачу, Canvas у TCustomPanel
уже есть, только protected( в TCustomControl объявлено)
Во-вторых, в подобных случаях нельзя обращаться к окну в Create- в этот момент окно еще не создано, и хэндла не имеет. Следует перекрыть CreateWnd, и операции, которым нужен дескриптор оконного элемента, делать там.



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

Текущий архив: 2002.07.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
3-81164
AndDem
2002-07-04 11:09
2002.07.25
SQL-запрос


8-81389
Vvedensk
2002-03-15 14:23
2002.07.25
Как увеличить изображения с малой потерью качества подобно таму как это делает PhotoShop


1-81316
Andy BitOff
2002-07-12 15:43
2002.07.25
Чтение файла


1-81297
kserg@ukr.net
2002-07-12 11:31
2002.07.25
как запретить перерисовку объекта?


1-81267
programmerts
2002-07-10 20:12
2002.07.25
Как написать программу без формы.