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

Вниз

problema s pointerom   Найти похожие ветки 

 
Adil ©   (2006-06-07 22:46) [0]

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-07 23:53) [1]

Вообще то такие вещи делается по другому немножечко.


 
ЮЮ ©   (2006-06-08 06:45) [2]

Во первых, достаточно
root: TAdilTaskbarPanel;
ибо root и есть УКАЗАТЕЛЬ на объект класса  TAdilTaskbarPanel

Во вторых, не здесь не место глобальным переменным
var
 root: TAdilTaskbarPanel;
 last: integer;

Ибо, создав 2 экземпляра класса, получишь непредсказуемое поведение обоих объектов


 
Юрий Зотов ©   (2006-06-08 07:06) [3]

В третьих, root надо выкинуть совсем, а вместо него наследовать коллекцию от TOwnedCollection. В четвертых, свойство Caption элемента коллекции есть смысл делать не отдельным, а завязать на свойство DisplayName.


 
Adil ©   (2006-06-10 18:24) [4]

spasibo



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

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

Наверх





Память: 0.47 MB
Время: 0.046 c
3-1166619774
novill
2006-12-20 16:02
2007.03.18
Как в одном запросе выдать несколько дубликатов записей


3-1166546496
KIR
2006-12-19 19:41
2007.03.18
FastReport 2.54 При печате печатает "кракозябликами"


15-1172076223
Ламот
2007-02-21 19:43
2007.03.18
Win2k server + 1С 7.7 + MS SQL


15-1172239795
isasa
2007-02-23 17:09
2007.03.18
"Легкий"(для малого офиса) Mail Server


2-1172059154
dmdel
2007-02-21 14:59
2007.03.18
Пробелы в строковых полях





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