0

Firemonkey を使用して、次の TDisplayItem オブジェクトが動的に読み込まれる TPanel を含む TVertScrollBox を作成しました。

問題は、TDisplayItem のサイズが適切に設定されていないため、さまざまなコンポーネントのテキストが重なって表示されるなどです。

コンポーネントパーツのサイズを取得し、そのサイズのコンテナーを作成することなどにより、スクロールボックスの表示領域にあるアイテムでこれを修正できます。さまざまなアライメントとワープのオプションがありますが、役に立ちません。

うまくいけば、私はこれの重要な要素を見逃しており、Firemonkey の制限を発見していません!

乾杯、

マーティン。

Constructor TDisplayItem.Create(owner : TComponent);
begin
  inherited Create(owner);
  Align := TAlignLayout.alTop;
  pnlLabels := TPanel.Create(nil);
  pnlLabels.Align := TAlignLayout.alTop;
  pnlLabels.Height := 50;
  pnlLabels.Parent := self;

  lblICAO := TLabel.Create(nil);
  lblICAO.Parent := pnlLabels;
  with lblICAO do
  begin
    text := 'ICAO';
    Height := 30;
    Position.X := 10;
    align := TAlignLayout.alTop;
    TextAlign := TTextAlign.taCenter;
    Font.Size := 18;
    FontColor :=  $FF00D000 ;
    Visible := False;
    StyledSettings := [TStyledSetting.ssFamily];//, TStyledSetting.ssFontColor];
  end;

  lblFrom := TLabel.Create(nil);
  lblFrom.Parent := pnlLabels;
  with lblFrom do
  begin
    text := 'From : ';
    Height := 30;
    Position.X := 10;
    Position.y := 2;
    width := 150;
    FontColor :=  $FFFF0000 ;
    StyledSettings := [TStyledSetting.ssFamily];//, TStyledSetting.ssFontColor];
  end;

  lblTo := TLabel.Create(nil);
      lblTo.Parent := pnlLabels;
  with lblTo do
  begin
    text := 'To : ';
    Height := 30;
    Position.X := 170;
    Position.y := 2;
    width := 150;
    FontColor :=  $FFFF0000 ;
    StyledSettings := [TStyledSetting.ssFamily];//, TStyledSetting.ssFontColor];
  end;



 lblStatus := TLabel.Create(nil);
  lblStatus.Parent := pnlLabels;
  with lblStatus do
  begin
    text := 'Status : ';
    Height := 30;
    Position.X := 330;
    Position.y := 2;
    width := 100;
    Font.Size := 10;
    FontColor :=  $FFFF0000 ;
    StyledSettings := [TStyledSetting.ssFamily];//, TStyledSetting.ssFontColor];
  end;

  lblNonGeog  := TLabel.Create(nil);
  with lblNonGeog do
  begin
    text := 'Non-Geog : ';
    Height := 30;
    Position.X := 440;
    Position.y := 2;
    width := 150;
    Font.Size := 10;
    FontColor :=  $FFFF0000 ;
    StyledSettings := [TStyledSetting.ssFamily];//, TStyledSetting.ssFontColor];
  end;
  lblNonGeog.Parent := pnlLabels;

  memItem := TLabel.Create(nil);
  memItem.Parent := self;
  with memItemE do
  begin
    Align := TAlignLayout.alTop;
    DisableFocusEffect := False;
    AutoSize := True;
    WordWrap := True;
  end;
4

1 に答える 1

0

OK、ついに解決しました。私はそれが描画の問題だと思って正しい行にいました-ラベルの1つのテキストが変更されたとき、label.dopaintが必要でした。これにより、ラベルが表示領域にない場合でも、ラベルの高さが更新されました。次に、子コンポーネントの高さを合計することで、パラエント TPanel の高さを正しく設定できます。

于 2013-04-17T10:31:02.857 に答える