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

Вниз

Пристыковать 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
1-81218
MARcoDEN
2002-07-14 10:33
2002.07.25
Как вытаскивать определенное значение из HTML страницы


3-81192
kengura
2002-07-04 20:02
2002.07.25
Изменение данных в справочнике, отображение в таблицах.


7-81493
fore_3
2002-05-07 12:39
2002.07.25
Как послать логическую 1 на нужную ножку lpt порта


14-81458
Григорий Ситнин
2002-06-04 12:13
2002.07.25
Требуется программист


4-81515
KeVRter
2002-05-20 21:00
2002.07.25
Как запретить CTRL+ALT+DEL, ALT+TAB, ALT+F4, ALT+ESC....





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