![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | 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, такие дебри, без пояснений один точно не справлюсь. Помогите пж.  |