![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание компонента - массив кнопок с разными свойств. - Caption [D6, Win2k]
Lnstr © (2002-11-19 13:28:00)Создал компонент - массив кнопок 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;
Lnstr (2002-11-19 17:35:00) [1]Да, я со свойством-массивом Caption и пытался работать, да видно - коряво. Еще попробую.
И с TList-ом тоже не плохая идея.
В общем, спасибо за внимание.
[NIKEL] (2002-11-19 13:52:00) [2]примерно так
__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 методом
Skier (2002-11-19 13:38:00) [3]>Lnstr
Хотя...стоп у тебя же количество конопок может быть разным...
Тогда лучше использовать TList или его потомок...
[NIKEL] (2002-11-19 13:38:00) [4]надо обьявить свойство-массив для капшинов
Skier (2002-11-19 13:35:00) [5]>Lnstr
Советую использовать примерно такой массив (DBNavigator)
TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast,
nbInsert, nbDelete, nbEdit, nbPost, nbCancel,
nbRefresh);
Buttons: array[TNavigateBtn] of TNavButton;
> Как это сделать через массив?
Используй ф-ции Low(...) и High(...)
Calm (2002-11-19 13:33:00) [6]Вот не понял я в чем проблема.
> Объявил массив кнопок и с пом. конструктора в цикле создал
Ну а почемы бы в цикле и Caption не изменить?