Главная страница
    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.004 c
15-1261400337
@!!ex
2009-12-21 15:58
2010.03.07
Как заставить приложение работать с Кирелическим набором символов


2-1262704720
ЭлЭрДжи
2010-01-05 18:18
2010.03.07
БД в Delphi (очень важная лаба, помогите пожалуйста)


1-1238695413
DimaK
2009-04-02 22:03
2010.03.07
Построение Отчета Fastreport


6-1211355931
lead-in
2008-05-21 11:45
2010.03.07
посылка сообщения в локальной сети


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