Текущий архив: 2005.12.11;
Скачать: CL | DM;
ВнизСоздание компонента Найти похожие ветки
← →
Николай (2005-05-16 11:24) [0]Помогите пожалуйста даработать этот компонент
При устаноке его на форму всё нормально, но другие компоненты становяться невидимыми как это исправить.
unit MyMenuClockDate;
interface
uses
SysUtils,Menus,Classes,
Controls,ExtCtrls,ComCtrls,Forms,Graphics;
type
TMyMenuClockDate = class(TMainMenu)
private
FTimer: TTimer;
FStatusBar:TStatusBar;
FPanel:TPanel;
procedure TimerExpired(Sender: TObject);
procedure MyHint(Sender: TObject);
procedure CreateStatuspanel();
protected
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
end;
procedure Register;
implementation
constructor TMyMenuClockDate.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FTimer := TTimer.Create(Self);
FTimer.Interval := 1000;
FTimer.OnTimer := TimerExpired;
CreateStatuspanel();
end;
destructor TMyMenuClockDate.Destroy;
begin
inherited Destroy;
end;
procedure TMyMenuClockDate.CreateStatuspanel();
function WidthText(Text:String):Integer;
var
Bm:TBitmap;
begin
try
Result:=0;
Bm:=TBitmap.Create();
Result:=Bm.Canvas.TextWidth(Text);
finally
Bm.Free;
end;
end;
begin
Application.OnHint := MyHint;
FPanel:=TPanel.Create(Self);
FPanel.Caption:="";
FPanel.Align:=alClient;
FPanel.BevelInner:=bvLowered;
FPanel.Parent:=TForm(Owner);
FStatusBar:=TStatusBar.Create(Self);
FStatusBar.ControlStyle := FStatusBar.ControlStyle + [csAcceptsControls];
FStatusBar.Panels.Add;
FStatusBar.Panels[0].Width:=6+WidthText(TimeToStr(Time));
FStatusBar.Panels[0].Text:=TimeToStr(Time);
FStatusBar.Panels.Add;
FStatusBar.Panels[1].Width:=9+WidthText(FormatDateTime("dd mmmm yyyyy ã.",Date));
FStatusBar.Panels[1].Text:=FormatDateTime("dd mmmm yyyyy ã.",Date);
FStatusBar.Panels.Add;
FStatusBar.Parent:=FPanel;
end;
procedure TMyMenuClockDate.TimerExpired(Sender: TObject);
begin
FStatusBar.Panels[0].Text:=TimeToStr(Time);
FStatusBar.Panels[1].Text:=FormatDateTime("dd mmmm yyyyy ã.",Date);
end;
procedure TMyMenuClockDate.MyHint(Sender: TObject);
begin
FStatusBar.Panels[2].Text:=Application.Hint;
end;
procedure Register;
begin
RegisterComponents("MyComponent", [TMyMenuClockDate]);
end;
end.
← →
ЮЮ © (2005-05-16 11:30) [1]FPanel.SendToBack;
А может лучше по-человечески? FStatusBar класть на форму, а FPanel вообще не порождать?
← →
Семен Сорокин © (2005-05-16 11:32) [2]другие компоненты невидимы из-за вот этого:
FPanel:=TPanel.Create(Self);
FPanel.Caption:="";
FPanel.Align:=alClient;
FPanel.BevelInner:=bvLowered;
FPanel.Parent:=TForm(Owner);
и вообще зачем нцжна эта панель? из кода не ясно...
ну а функция
function WidthText(Text:String):Integer;
вообще шедевр
← →
Юрий Зотов © (2005-05-16 14:20) [3]Даже FPanel.SendToBack не поможет - графические контролы на том же Parent"е панель все равно закроет.
Зачем нужна панель - действительно, непонятно.
Страницы: 1 вся ветка
Текущий архив: 2005.12.11;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.041 c