Главная страница
    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.005 c
2-1261998265
ZXZ_RUS
2009-12-28 14:04
2010.03.07
Добавление компанента по нажатию на баттон!


2-1262677121
Андрей Пл
2010-01-05 10:38
2010.03.07
Остановить выполнение пророги в задонном месте до опред. события?


2-1261744100
Who_is_you?
2009-12-25 15:28
2010.03.07
Процедура прерывания. В Delphi 7 pointer ?


15-1261467759
zorik
2009-12-22 10:42
2010.03.07
dll в компоненте. За и против?


15-1257258721
Romkin
2009-11-03 17:32
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский