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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
15-1261101984
Kerk
2009-12-18 05:06
2010.03.07
«Лучший свободный проект России»


15-1261282914
Nic
2009-12-20 07:21
2010.03.07
Дети, не ходите работать программистами


15-1261527698
KilkennyCat
2009-12-23 03:21
2010.03.07
VBA и application.processmessage


2-1262118378
Pavel
2009-12-29 23:26
2010.03.07
Ошибка при вызове GetInetFile


15-1261517422
Юрий
2009-12-23 00:30
2010.03.07
С днем рождения ! 23 декабря 2009 среда





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