![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Нашёл тут на форуме пример небольшой.. по его основе набросал код
мне не понятно, как разместить кнопку на панели, или на чем нибудь другом.. Код:
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, такие дебри, без пояснений один точно не справлюсь. Помогите пж. |