Главная страница
    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.44 MB
Время: 0.007 c
1-81315
Den_4000
2002-07-12 15:50
2002.07.25
Панель как в Outlook


14-81471
RV
2002-06-27 11:10
2002.07.25
Аккорд-АМД3. Как выкинуть?


3-81148
Spinx
2002-07-04 02:10
2002.07.25
ограничения FIBPlus 4.6 ?


8-81374
Dimitriy
2002-03-16 17:09
2002.07.25
Курсор


14-81477
SashaK
2002-06-28 20:20
2002.07.25
помогите написать снифер





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