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

Вниз

Возвращаясь к 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.056 c
15-1157876075
kull
2006-09-10 12:14
2006.10.01
Какой браузер лучше?


2-1157630489
Ruslan D
2006-09-07 16:01
2006.10.01
назначение события для компонент


2-1158233130
Officeman
2006-09-14 15:25
2006.10.01
как привести строку к единому регистору


2-1157877145
zopa
2006-09-10 12:32
2006.10.01
class / class(TObject)


2-1158076753
Василий
2006-09-12 19:59
2006.10.01
DBGide