Delphi Firemonkey создает TExpanders и TLabels во время выполнения - PullRequest
0 голосов
/ 07 декабря 2018

Использование Rad Studio 10.3

Я создаю TExpanders во время выполнения на основе запроса FireDAC.Однако я сталкиваюсь с проблемой, устанавливающей родительский элемент метки для только что созданного расширителя.

Я использую следующее для создания компонентов

procedure TfrmMain.FormCreate(Sender: TObject);
var
  i: integer;
begin
  // Populate previous saved conversions stringgrid
  FDQuery1.SQL.Clear;
  FDQuery1.Close;
  FDQuery1.SQL.Add('SELECT convert from conversions');
  FDQuery1.Open;
  i := 1;
  while not FDQuery1.Eof do
  begin
    // Create Expanders here to display database query to user
    exp := TExpander.Create(Self);
    exp.Parent := layoutDBDisplay;
    exp.Align := TAlignLayout.Top;
    exp.Name := 'dbExp' + i.ToString;  
    exp.Height := 100;
    exp.TextSettings.Font.Size := 14;
    exp.TextSettings.Font.Style := [TFontStyle.fsBold];

    // Create TLabel inside of above expander
    lab := TLabel.Create(Self);
    lab.Parent := TExpander;
    lab.Align := TAlignLayout.Top;
    lab.Name := 'dbResLabel' + i.ToString;
    inc(i);
    FDQuery1.Next;
  end;
  FDQuery1.Close;

end;

Проблема заключается вэта строка

lab.Parent := expName;

Очевидно, что вышеприведенное не скомпилируется из-за следующего

[dcc32 Error] frmConverter.pas(266): E2010 Incompatible types: 'TFmxObject' and 'class of TExpander'  

Есть ли простое решение для этого?

1 Ответ

0 голосов
/ 07 декабря 2018

Ваша линия

lab.Parent := TExpander;

должна быть

lab.Parent := Exp;
...