首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Delphi 動態創建 GridPanel:變量需提升為字段避免釋放

     編輯:程式設計疑難解答

問題

過程內部聲明 `grdpnl: TGridPanel` 等局部變量,過程結束後被自動釋放,界面不顯示。

修正:提升為窗體字段

type
  TForm12 = class(TForm)
    // ...
  private
    grdpnl: TGridPanel;
    lbl: TLabel;
    img: TImage;
  public
    // ...
  end;

procedure TForm12.FormCreate(Sender: TObject);
begin
  grdpnl := TGridPanel.Create(Self);
  grdpnl.Parent := pnl1;
  grdpnl.Align := alTop;
  // ... 設置列/行集合
  // 創建 Label
  lbl := TLabel.Create(grdpnl);
  lbl.Parent := grdpnl;
  lbl.Align := alClient; // 或設置 Column/Row
  lbl.Caption := '張自力';
  // ...
end;

procedure TForm12.FormDestroy(Sender: TObject);
begin
  grdpnl.Free;
  lbl.Free;
  img.Free;
end;

關鍵點

  • 動態創建的控件**必須由持有者(窗體/面板)管理生命週期**,聲明為字段並在 `OnDestroy` 釋放。
  • 子控件 `Parent` 設置正確後,釋放父控件會自動釋放子控件,但顯式 `Free` 更清晰。
  • `TGridPanel` 的列/行集合屬性 `ColumnCollection`/`RowCollection` 需在創建後添加項目並設置 `SizeStyle`/`Value`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved