Извините, если это повторяющийся вопрос, но я нигде не нашел решения.
Я хочу сделать поиск для поиска указанного c тега на моем компоненте TTabControl со многими вкладками, но Я понятия не имею, как это сделать. Мой TTabControl с именем TabControl1 получает свои табемы во время выполнения по запросу. Он должен быть рассчитан на поддержку от 1 до 100+ вкладок, если клиент этого хочет. Таким образом, у каждой вкладки есть описание, которое является ее именем и индексом в моей таблице категорий, каждый раз, когда я создаю TTabItem, я назначаю ему тег, который является индексом вкладки в моей sql таблице
SQL::
DROP TABLE IF EXISTS Category;
CREATE TABLE Category (
CAT_ID integer primary key
, CAT_Descr Varchar(200)
);
Delphi::
FDQ.Close;
FDQ.Open('SELECT * FROM Category');
while not FDQ.Eof do
begin
TabControl1.Add().Tag := FDQ.FieldByName('CAT_ID').AsInteger;
FDQ.Next;
end;
В целях тестирования у меня есть 5 элементов в базе данных: ([1, tab1], [2, tab2], [3, tab3], [4, tab4], [5, tab5])
Поэтому, когда я запускаю код, он создает 5 вкладок с тегом от 1 до 5 на них, отлично, тег работает. Но теперь мне нужно заполнить эти вкладки элементами, созданными во время выполнения, также из запроса, и теперь это та часть, где произойдет for in, но именно здесь я не знаю, как правильно сделать это на вкладках
procedure TfListing.createtabs;
var
dummytoolbar: TToolBar;
dummylabel: TLabel;
dummylistbox: TListBox;
tabitem: TTabItem;
dummylistitem: TListBoxItem;
begin
// listboxitemlabel
// listboxitemdetaillabel
for DM.FDQ.FieldByName('CAT_ID').AsInteger in TabControl1.Tabs[].Tag do <<== this is the line with the issue
begin
try
dummytoolbar := TToolBar.Create(tabitem);
dummytoolbar.Parent := tabitem;
dummytoolbar.Align := TAlignLayout.Top;
dummylabel := TLabel.Create(dummytoolbar);
dummylabel.Parent := dummytoolbar;
dummylabel.Align := TAlignLayout.Contents;
dummylabel.StyleLookup := 'toollabel';
dummylabel.Text := DM.FDQ.FieldByName('CAT_Descr').ToString;
dummylabel.TextAlign := TTextAlign.Center;
dummylistbox := TListBox.Create(tabitem);
dummylistbox.Parent := tabitem;
dummylistbox.Align := TAlignLayout.Client;
dummylistitem := TListBoxItem.Create(dummylistbox);
dummylistitem.Parent := dummylistbox;
dummylistitem.Height := 44;
dummylabel := TLabel.Create(dummylistitem);
dummylabel.Parent := dummylistitem;
dummylabel.Align := TAlignLayout.MostLeft;
dummylabel.StyleLookup := 'listboxitemdetaillabel';
dummylabel.Text := dm.FDQ.FieldByName('PRO_Stock').AsString;
dummylabel := TLabel.Create(dummylistitem);
dummylabel.Parent := dummylistitem;
dummylabel.Align := TAlignLayout.Client;
dummylabel.StyleLookup := 'listboxitemlabel';
dummylabel.Text := dm.FDQ.FieldByName('PRO_Name').AsString;
finally
dummytoolbar.DisposeOf;
dummylabel.DisposeOf;
dummylistbox.DisposeOf;
dummylistitem.DisposeOf;
end;
end;
end;
Как мне заставить это работать?