Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.12.2021, 03:52
Gareth Gareth вне форума
Активный
 
Регистрация: 21.03.2013
Адрес: Приднестровье
Сообщения: 202
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию 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  
Старый 17.12.2021, 13:33
Gareth Gareth вне форума
Активный
 
Регистрация: 21.03.2013
Адрес: Приднестровье
Сообщения: 202
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Gareth
Допустим я хочу разместить кнопки на scrollbox`e, каким образом я могу это сделать?
Так, вроде разобрался...
Теперь я создаю панели, на которых должны располагаться 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;
Этот код компилится нормально, панели и gauge создаются но, после закрытия формы выходит ошибка:






И мне не понятно, нужно ли создавать несколько tobjectlist`ов для разных компонентов? Если я создам все компоненты в одном объектлисте, смогу ли я потом сортировать панели, по значениям в gauge.progress?
Никогда не работал с tobjectlist`ом , куча вопросов на самом деле))

Последний раз редактировалось Gareth, 17.12.2021 в 15:20.
Ответить с цитированием
  #3  
Старый 18.12.2021, 05:44
Gareth Gareth вне форума
Активный
 
Регистрация: 21.03.2013
Адрес: Приднестровье
Сообщения: 202
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

В общем я разобрался каким образом это делается.. так же понял как обращаться к компонентам в объектлистах - Tpanel(List[0]).caption
Теперь вопрос остро стоит, каким образом можно отсортировать панели по высоте(align=altop)

есть 2 TobjectList`a, в одном хранятся TPanel, в другом TGauge.
Панель создается на скроллбоксе. Gauge создается на тольлко что созданной панели, с таким же тагом.

как можно отсортировать панели по высоте, отталкиваясь от gauge.progress ?

Начал читать за sort, такие дебри, без пояснений один точно не справлюсь.
Помогите пж.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter