![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
problema s pointerom [D7, WinXP]
Adil © (2006-06-07 22:46:00)Etot urodec daet mne oshibku na showmessage(root^.Parent.ClassName);
Pls, help. Thanks
////////////////////////////////////////////////////////
// TAdilTaskBar Component //
// //
// This component is for creating TaskBar //
// panel of your application forms. //
// //
// //
// Copyright 2006, Adil Aliev //
// E-mail: adilaliev@users.sourceforge.net //
// //
// //
////////////////////////////////////////////////////////
unit AdilTaskbarPanel;
interface
uses
SysUtils, Classes, Controls, ExtCtrls, TntExtCtrls, TntControls, Graphics, TntButtons,Dialogs;
type
TAdilTaskbarPanel=class;
TAdilTaskBarButton = class(TCollectionItem)
private
{ Private declarations }
FCaption: TWideCaption;
FSpeedButton:TTntSpeedButton;
procedure SetCaption(Value: TWideCaption);
function GetGlyph:TBitmap;
procedure SetGlyph(Value: TBitmap);
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(Collection : TCollection); override;
destructor Destroy; override;
published
{ Published declarations }
property Caption: TWideCaption read FCaption write SetCaption;
// property Icon: TBitmap read GetGlyph write SetGlyph;
end;
TAdilTaskbarButtons = class(TCollection)
private
{ Private declarations }
procedure SetItem(Index:integer;Value:TAdilTaskBarButton);
function GetItem(Index:integer):TAdilTaskBarButton;
protected
{ Protected declarations }
procedure Update(TaskBarButton:TAdilTaskBarButton);
public
{ Public declarations }
constructor Create(TaskBar:TAdilTaskbarPanel);
function Add:TAdilTaskBarButton;
property TaskbarButtons[Index:integer]:TAdilTaskBarButton read GetItem write SetItem; default;
published
{ Published declarations }
end;
TAdilTaskbarPanel = class(TTntPanel)
private
{ Private declarations }
FTaskBarButtons:TAdilTaskbarButtons;
procedure SetTaskBarButtons(Value:TAdilTaskbarButtons);
procedure UpdateTaskBarButton(Index:integer);
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner:TComponent);override;
destructor Destroy; override;
procedure GetChildren(Proc:TGetChildProc; Root:TComponent); override;
published
{ Published declarations }
property TaskBarButtons:TAdilTaskBarButtons read FTaskBarButtons write SetTaskBarButtons;
end;
procedure Register;
implementation
var root:^TAdilTaskbarPanel;
last:integer=1;
constructor TAdilTaskBarButton.Create(Collection : TCollection);
begin
showmessage(root^.Parent.ClassName);
{ FSpeedButton:=TTntSpeedButton.Create(root^);
{ FSpeedButton.Caption:=FCaption;
FSpeedButton.Name:='AdilButton'+inttostr(last);
FSpeedButton.Parent:=root^;
FSpeedButton.Top:=3;
FSpeedButton.Left:=last*150;
inc(last);
FSpeedButton.Width:=145;
FSpeedButton.Height:=23;
}
inherited Create(Collection);
end;
destructor TAdilTaskBarButton.Destroy;
begin
inherited Destroy;
end;
procedure TAdilTaskBarButton.SetCaption(Value: TWideCaption);
begin
FCaption:=Value;
// FSpeedButton.Caption:=Value;
end;
function TAdilTaskBarButton.GetGlyph:TBitmap;
begin
// Result:=FSpeedButton.Glyph;
end;
procedure TAdilTaskBarButton.SetGlyph(Value: TBitmap);
begin
// FSpeedButton.Glyph:=Value;
end;
constructor TAdilTaskBarButtons.Create(TaskBar:TAdilTaskbarPanel);
begin
inherited Create(TAdilTaskBarButton);
end;
procedure TAdilTaskbarButtons.SetItem(Index:integer;Value:TAdilTaskBarButton);
begin
inherited SetItem(Index,Value);
end;
function TAdilTaskbarButtons.GetItem(Index:integer):TAdilTaskBarButton;
begin
Result:=TAdilTaskBarButton(inherited GetItem(Index));
end;
procedure TAdilTaskBarButtons.Update(TaskBarButton:TAdilTaskBarButton);
begin
// if TaskBarButton<>nil then
end;
function TAdilTaskbarButtons.Add:TAdilTaskBarButton;
begin
Result:=TAdilTaskBarButton(inherited Add);
end;
constructor TAdilTaskbarPanel.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
FTaskBarButtons:=TAdilTaskbarButtons.Create(self);
root:=@AOwner;
showmessage('Salam');
end;
destructor TAdilTaskbarPanel.Destroy;
begin
inherited Destroy;
end;
procedure TAdilTaskbarPanel.SetTaskBarButtons(Value:TAdilTaskBarButtons);
begin
FTaskBarButtons.Assign(Value);
end;
procedure TAdilTaskbarPanel.GetChildren(Proc:TGetChildProc; Root:TComponent);
begin
end;
procedure TAdilTaskbarPanel.UpdateTaskBarButton(Index:integer);
begin
end;
procedure Register;
begin
RegisterComponents('Adil Components', [TAdilTaskbarPanel]);
end;
end.
Adil (2006-06-10 18:24:00) [1]spasibo
Юрий Зотов (2006-06-08 07:06:00) [2]В третьих, root надо выкинуть совсем, а вместо него наследовать коллекцию от TOwnedCollection. В четвертых, свойство Caption элемента коллекции есть смысл делать не отдельным, а завязать на свойство DisplayName.
ЮЮ (2006-06-08 06:45:00) [3]Во первых, достаточно
root: TAdilTaskbarPanel;
ибо root и есть УКАЗАТЕЛЬ на объект класса TAdilTaskbarPanel
Во вторых, не здесь не место глобальным переменным
var
root: TAdilTaskbarPanel;
last: integer;
Ибо, создав 2 экземпляра класса, получишь непредсказуемое поведение обоих объектов
Adil (2006-06-07 23:53:00) [4]Вообще то такие вещи делается по другому немножечко.