Главная страница
    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.45 MB
Время: 0.006 c
1-81346
AlekseyK
2002-07-13 11:18
2002.07.25
Как узнать на какой из combobox ов нажата кнопка?


14-81437
Феликс
2002-06-27 12:58
2002.07.25
Фильм


1-81292
EugenCFG
2002-07-11 21:16
2002.07.25
Изменив размер кнопоки, все остальные кнопки стали не стандар...


1-81337
Cola
2002-07-08 22:17
2002.07.25
XL-Report свойства


3-81159
Bura
2002-07-03 13:43
2002.07.25
InterBase error





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский