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

Вниз

Возвращаясь к Tpanel .Зависает Delphi.   Найти похожие ветки 

 
max1000   (2006-02-14 13:32) [0]

Создаю компонент Tpanel с  Caption  в левом верхнем углу ...
Но после установки на форму Делфи зависает и закрываеться подскажите ошибку.
Вот код:
unit panelA;

interface

uses
 Windows, Messages, SysUtils, Classes, Controls, ExtCtrls,Graphics;

type
 TpanelA = class(TPanel)
 private
   { Private declarations }
 protected
   { Protected declarations }
 public
   constructor Create(Aowner:TComponent);override;
   procedure paint;override;
 published
   { Published declarations }
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("MyComponent", [TpanelA]);
end;

{ TpanelA }

constructor TpanelA.Create(Aowner: TComponent);
begin
 inherited;
  Create(Aowner);
  paint;
end;

procedure TpanelA.paint;
const
 Alignments: array[TAlignment] of Longint = (DT_LEFT, DT_RIGHT, DT_CENTER);
var
 Rect: TRect;
 TopColor, BottomColor: TColor;
 FontHeight: Integer;
 Flags: Longint;
begin
inherited;
//with TPanelA do begin
 Rect := GetClientRect;
 with Canvas do
 begin
   Brush.Color := Color;
   FillRect(Rect);
   Brush.Style := bsClear;
   Font := Self.Font;
   FontHeight := TextHeight("W");
   with Rect do
   begin
     Top := ((Top));
     //Bottom := Top + FontHeight;
   end;
   Flags := DT_EXPANDTABS or DT_VCENTER;// or Alignments[FAlignment];
   Flags := DrawTextBiDiModeFlags(Flags);
   DrawText(Handle, PChar(Caption), -1, Rect, Flags);
end;
end;
//end;

end.


 
Style ©   (2006-02-14 13:43) [1]

constructor TpanelA.Create(Aowner: TComponent);
begin
inherited;
 Create(Aowner);
 paint; // ---> Это как???
end;


 
wal ©   (2006-02-14 14:11) [2]


> constructor TpanelA.Create(Aowner: TComponent);
> begin
>  inherited;
>   Create(Aowner);
>   paint;
> end;
Или точку с запятой убери после inherted или Create(..) убери.
И paint тоже ни к чему, он сам вызовется, когда нарисоваться нужно будет.

С уважением.


 
max1000   (2006-02-14 14:11) [3]

а мне надо что бы сразу прорисовка была.. или так нельзя?


 
max1000   (2006-02-14 14:15) [4]

Парни Вери сенкс!!!!!!!! Низачто бы блин эту точку с запятой не увидел бы!!!
Все работает..Уря!!!


 
wal ©   (2006-02-14 14:17) [5]


> а мне надо что бы сразу прорисовка была.. или так нельзя?
Сразу, это когда?
Оно еще и невидимо может быть. А когда оно будет видимым, система сама скажет, что перерисовать надо, послав сообщение, и, в конце концов, вызвав paint. Если уж очень хочется, вызывай Invalidate.

С уважением.


 
Юрий Зотов ©   (2006-02-14 23:15) [6]

> wal

Сама по себе точка с запятой тут ни при чем. Но она привела к тому, что из конструктора вызывается тот же самый (а не унаследованный) конструктор. Естественно, возникает зацикливание и создается впечатление, что  зависла Delphi.


 
wal ©   (2006-02-15 12:06) [7]


> [6] Юрий Зотов ©   (14.02.06 23:15)
Это понятно. Но вот возник вдруг вопрос. При этом вызов Create будет происходить как вызов конструктора, или как обычного метода?


 
icWasya ©   (2006-02-15 19:01) [8]

wal ©   (15.02.06 12:06) [7]

> Но вот возник вдруг вопрос.

Вызов как конструктора происходит в при использовании такой синтаксической конструкции:
тип  . конструктор
например
 TMyClass.Create(Form2);

а в случае
переменная  . конструктор , в том числе где переменная=Self, будет вызов обычной процедуры.


 
Юрий Зотов ©   (2006-02-15 22:09) [9]

> wal ©   (15.02.06 12:06) [7]

К [7] могу добавить лишь вопрос - а на фига его вообще вызывать? Inherited уже есть и больше ничего не требуется.



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

Форум: "Компоненты";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.239 c
6-1145358391
Zurius
2006-04-18 15:06
2006.10.01
Как получить код html страници из WebBrowser a


1-1155801487
lex67
2006-08-17 11:58
2006.10.01
Как сделать паузу


2-1157718051
drashka
2006-09-08 16:20
2006.10.01
Incompatible types: TBasicAction and TCloseAction


15-1158120543
vajo
2006-09-13 08:09
2006.10.01
Проблема с почтой


2-1157788881
_ERIC_
2006-09-09 12:01
2006.10.01
Обновление TWebBrowser





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