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

Вниз

Создание компонента - массив кнопок с разными свойств. - Caption   Найти похожие ветки 

 
Lnstr ©   (2002-11-19 13:28) [0]

Создал компонент - массив кнопок TButton.
За основу взял TPanel.
Объявил массив кнопок и с пом. конструктора в цикле создал
Естественно - всем кнопкам присваивается одна надпись
Как это сделать через массив?

type
TTypeArray = array of TSpeedButton;
// ......
TArraySpeedButton = class(TPanel)
private
FNumber:integer; //то колич кнопок на панели
// ......
FCaptionSB: TCaption;
// ......
procedure SetNumber(const Value: integer);// для уст кол-ва
// ......
procedure SetCaptionSB(const Value: TCaption);
// ......
published
property Number:integer read FNumber write SetNumber;
constructor Create(aowner:Tcomponent);override; //создаю кн
destructor Destroy;override; //уничтожаю
// .......
property CaptionSB:TCaption read FCaptionSB write SetCaptionSB;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("ArrayControls", [TArraySpeedButton]);
end;
// .....
procedure TArraySpeedButton.SetCaptionSB(const Value: TCaption);
var i:integer;
begin
FCaptionSB := Value;
for i:=0 to FNumber-1 do begin
FArraySB[i].Caption:=FCaptionSB;
end;
end;


 
Calm ©   (2002-11-19 13:33) [1]

Вот не понял я в чем проблема.

> Объявил массив кнопок и с пом. конструктора в цикле создал

Ну а почемы бы в цикле и Caption не изменить?


 
Skier ©   (2002-11-19 13:35) [2]

>Lnstr

Советую использовать примерно такой массив (DBNavigator)

TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast,
nbInsert, nbDelete, nbEdit, nbPost, nbCancel,
nbRefresh);
Buttons: array[TNavigateBtn] of TNavButton;



> Как это сделать через массив?


Используй ф-ции Low(...) и High(...)


 
Skier ©   (2002-11-19 13:38) [3]

>Lnstr
Хотя...стоп у тебя же количество конопок может быть разным...
Тогда лучше использовать TList или его потомок...


 
[NIKEL] ©   (2002-11-19 13:38) [4]

надо обьявить свойство-массив для капшинов


 
[NIKEL] ©   (2002-11-19 13:52) [5]

примерно так
__property AnsiString Captions[int Index] ==
{read=GetCaption, write=SetCaption};

AnsiString TArr::GetCaption(int Index)
{
if(Index > (FCount - 1)) return "";

return FArraySB[Index]->Caption;
}

соответственно и c Set методом


 
Lnstr ©   (2002-11-19 17:35) [6]

Да, я со свойством-массивом Caption и пытался работать, да видно - коряво. Еще попробую.
И с TList-ом тоже не плохая идея.
В общем, спасибо за внимание.



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

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

Наверх




Память: 0.48 MB
Время: 0.03 c
6-4543
Aralekin
2002-09-30 13:47
2002.12.02
Ах этот мерзкий UDP!!!!


1-4420
AndrewVolkov
2002-11-22 22:40
2002.12.02
А как нарисовать в rxDBGrid TitleButton?


4-4683
Дмитрий Астрохов
2002-10-22 17:55
2002.12.02
Заполнение ComboBox пунктами?


1-4322
bkv
2002-11-21 17:27
2002.12.02
Мастера помогите.!!!!


3-4187
Semu
2002-11-13 11:05
2002.12.02
DBGrid = Memo ?