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

Вниз

Добавить компонент в класс. Получилось.   Найти похожие ветки 

 
oleg1963 ©   (2009-12-29 11:05) [0]

Здравствуйте уважаемые Мастера. Несколько дней назад я допрашивал Вас на предмет создания своего класса из нескольких компонентов.

Сбылась очередная мечта идиота и вот что у меня получилось:

unit Bevel;

interface

uses
 SysUtils, Classes, Controls, ExtCtrls, StdCtrls;

type
 TBevel1 = class(TBevel)
 public
    ElemBevel : TBevel;
    ChBox     : TCheckBox;
    constructor Create(AOwner:TComponent);override;
    destructor Destroy;override;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("Samples", [TBevel1]);
end;

{ TBevel1 }

constructor TBevel1.Create(AOwner: TComponent);
begin
   inherited;
   ElemBevel:=TBevel.Create(AOwner);
   ChBox:=TCheckBox.Create(AOwner);
end;

destructor TBevel1.Destroy;
begin
    ChBox.Free;
    ElemBevel.Free;
    inherited;
end;

end.

//-------------------------------------------------
var
 Form1: TForm1;
 Bevel : array [1..6] of TBevel1;

procedure TForm1.FormCreate(Sender: TObject);
var
 BLeft,BTop : word;  {BevelLeft и BevelTop}
 i : byte;

begin
    BLeft:=150;
    BTop:=35;
    for i:=1 to 6 do
      begin
        Bevel[i]:=TBevel1.Create(Owner);
        with Bevel[i] do
          begin
            Parent:=(Panel5);
            Left:=BLeft;
            Top:=BTop;
            Width:=300;
            Height:=20;
            Visible:=True;
            Shape:=bsFrame;
            Style:=bsRaised;
            with ChBox do
              begin
                Parent:=(Panel5);
                Left:=BLeft+Bevel[i].Width+10;
                Top:=BTop;
                Width:=97;
                ChBox.Height:=17;
                Bevel[i].ChBox.Visible:=True;
              end;
          end;
          BTop:=BTop+30;
      end;
end;


В результате я имею прямой доступ к любому свойству любого элемента класса  (во нагородил-то). Понятно, что контейнер на TBevel не дело, а какой выгоднее применить не знаю.  Хотелось бы услышать Ваши комментарии


 
brother ©   (2009-12-29 11:28) [1]

если ты про:
> Bevel : array [1..6] of TBevel1;

и тебя это устраивает - оставь так...


 
Ega23 ©   (2009-12-29 11:32) [2]

Если твой
TBevel1 = class(TBevel)
будет как-то развиваться, то я бы всё-таки не стал поля ElemBevel и ChBox в public выносить, а скрыл бы в привате. Ну и, соответственно, 2 свойства в public и Getter и Setter к ним.


 
Ганя   (2009-12-29 19:25) [3]

В качестве контейнера лучше использовать потомка от TWinControl
Вложенные экземпляры лучше прятать в private
Глобальные переменные - в данном случае - зло
нечто типа:

TMyContainer= class(TWinControl)
private
 FBevels: array[1..6] of TBevel;
 FCheckBoxes: array[1..6] of TCheckBox;
public
  constructor Create(AOwner: TComponent); override; {Внутри создаем элементы массива с параметром Owner = Self, при таком подходе разрушать в деструкторе элементы массива необязательно, они разрушатся вместе с овнером}
Это если компонент - который предполагается использовать многократно, в разных приложениях. Если многократного использования не предполагается, то городить компонент тут ни к чему, целесообразнее использовать фрейм



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

Текущий архив: 2010.03.07;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.005 c
11-1213003972
Kent
2008-06-09 13:32
2010.03.07
Как сохранить данные в dfm


4-1229864623
Максим
2008-12-21 16:03
2010.03.07
взаимодействие с проводником windows


2-1262761116
Igor2100
2010-01-06 09:58
2010.03.07
Потоки+dll


2-1262678486
Eh
2010-01-05 11:01
2010.03.07
Меню как в Access


2-1262182249
11223344
2009-12-30 17:10
2010.03.07
классы





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