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

Вниз

Создание компонента - массив кнопок с разными свойств. - 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
14-4577
Sergo
2002-11-11 13:36
2002.12.02
Kylix


1-4382
ShooRoop
2002-11-22 15:31
2002.12.02
ОП


1-4301
SiaCD
2002-11-19 19:47
2002.12.02
Дата создания файла...как поменять?


6-4528
zeka
2002-10-03 13:04
2002.12.02
TIdServer


3-4218
VeLeS
2002-11-14 02:08
2002.12.02
Компонент для отображения дерева





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