|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
TObjectList научите пользоваться
Нашёл тут на форуме пример небольшой.. по его основе набросал код
мне не понятно, как разместить кнопку на панели, или на чем нибудь другом.. Код:
private Flist: TObjectList; procedure b_click(Sender: TObject); { Private declarations } public { Public declarations } end; var Form1: TForm1; xTag: Integer; implementation {$R *.dfm} procedure TForm1.b_click(Sender: TObject); begin xTag := (Sender as TsSpeedButton).Tag; ShowMessage(IntToStr(xTag)); end; procedure TForm1.FormCreate(Sender: TObject); begin Flist := TObjectList.Create(True); end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(Flist); end; procedure TForm1.sSpeedButton1Click(Sender: TObject); var b: TsSpeedButton; begin b := TsSpeedButton.Create(nil); b.Parent := Self; // пытаюсь указать TPanel;, ругается Incompatible types: 'TWinControl' and 'class of TPanel' b.Caption := 'aaaa'; b.Height := 20; b.Align := alTop; b.OnClick := b_click; b.Tag := Flist.Add(b); end; Допустим я хочу разместить кнопки на scrollbox`e, каким образом я могу это сделать? Заранее спасибо. |
#2
|
|||
|
|||
Цитата:
Теперь я создаю панели, на которых должны располагаться Gauge. Код:
private List_p: TObjectList; List_g: TObjectList; procedure p_click(Sender: TObject); { Private declarations } public { Public declarations } end; var Form1: TForm1; xTag: Integer; implementation {$R *.dfm} procedure TForm1.p_click(Sender: TObject); begin xTag := (Sender as TsPanel).Tag; ShowMessage(IntToStr(xTag)); end; procedure TForm1.FormCreate(Sender: TObject); begin List_p := TObjectList.Create(True); List_g := TObjectList.Create(True); end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(List_p); FreeAndNil(List_g); end; procedure TForm1.sSpeedButton1Click(Sender: TObject); var p: TsPanel; g: TsArcGauge; begin p := TsPanel.Create(sScrollBox1); p.Parent := sScrollBox1; p.Caption := 'aaaa'; p.Height := 50; p.Align := alTop; p.OnClick := p_click; p.Tag := List_p.Add(p); {------------------------} g := TsArcGauge.Create(p); g.Parent := p; g.Align := alLeft; g.Width := 50; g.Tag := List_g.Add(g); end; И мне не понятно, нужно ли создавать несколько tobjectlist`ов для разных компонентов? Если я создам все компоненты в одном объектлисте, смогу ли я потом сортировать панели, по значениям в gauge.progress? Никогда не работал с tobjectlist`ом , куча вопросов на самом деле)) Последний раз редактировалось Gareth, 17.12.2021 в 15:20. |
#3
|
|||
|
|||
В общем я разобрался каким образом это делается.. так же понял как обращаться к компонентам в объектлистах - Tpanel(List[0]).caption
Теперь вопрос остро стоит, каким образом можно отсортировать панели по высоте(align=altop) есть 2 TobjectList`a, в одном хранятся TPanel, в другом TGauge. Панель создается на скроллбоксе. Gauge создается на тольлко что созданной панели, с таким же тагом. как можно отсортировать панели по высоте, отталкиваясь от gauge.progress ? Начал читать за sort, такие дебри, без пояснений один точно не справлюсь. Помогите пж. |