簡體   English   中英

DELPHI - 如何將 tlabeledit 插入 TpageControl 中的動態選項卡表

[英]DELPHI -how can i insert tlabeledit to dynamic tabsheet in TpageControl

我需要這個 ini 文件,我在動態創建它的動態 ttabsheet 中提到它,正如你看到的 ini 文件,它有三個部分,每個部分以 001-002-003 開頭,然后讓那些以 001 開頭的部分在第一個標簽表中. 那些在第二個標簽頁中以 002 開頭,在我的頁面控件中的第三個標簽頁中以 003 開頭。

  procedure TDlg_XRechnung.INIDatei_einlesen;
var NeueSeite : TTabSheet;
  i,l: Integer;
begin
  try
    INIDatei                := TIniFile.Create(INIDateiname);
    Version                 := INIDatei.ReadInteger('INI','Version', 1);
    DebugMode               := INIDatei.ReadInteger('INI','DebugMode', 0);
    PDFDatei                := INIDatei.ReadString('PDF','PDFName', '');
    XRechnungDatei          := INIDatei.ReadString('PDF','XInvoice', '');
    Edit_LeitwegeID.Text    := INIDatei.ReadString('InvData','BT-10', '');
    Edit_Bestellnummer.Text := INIDatei.ReadString('InvData','BT-13', '');
    Edit_Projektreferenz.Text := INIDatei.ReadString('InvData','BT-11', '');
    Edit_Vertragsnummer.Text := INIDatei.ReadString('InvData','BT-12', '');
    Edit_Rechnungsnummer.Text := INIDatei.ReadString('InvData','BT-1', '');
    Edit_Rechnungsdatum.Date := INIDatei.ReadDate('InvData','BT-2', now);
    Edit_Leistungsdatum.Date := INIDatei.ReadDate('InvData','BT-9', now);
    Edit_Bemerkung.Text := INIDatei.ReadString('InvData','BT-22', '');
    Edit_Rechnungsersteller_Name.Text := INIDatei.ReadString('InvErst','BT-27', '');
    Edit_Rechnungsersteller_UST_ID.Text := INIDatei.ReadString('InvErst','BT-31', '');
    Edit_Rechnungsersteller_Adresse.Text := INIDatei.ReadString('InvErst','BT-35', '') + INIDatei.ReadString('InvErst','BT-36', '');
    Edit_Rechnungsersteller_PLZ.Text := INIDatei.ReadString('InvErst','BT-38', '');
    Edit_Rechnungsersteller_Ort.Text := INIDatei.ReadString('InvErst','BT-37', '');
    Edit_Rechnungsersteller_Land.Text := INIDatei.ReadString('InvErst','BT-40', '');
    Edit_Rechnungsempfänger_Name.Text := INIDatei.ReadString('InvEmp','BT-44','');
    Edit_Rechnungsempfänger_Adresse.Text := INIDatei.ReadString('InvEmp','BT-50', '') + INIDatei.ReadString('InvEmp','BT-51', '');
    Edit_Rechnungsempfänger_PLZ.Text := INIDatei.ReadString('InvEmp','BT-53', '');
    Edit_Rechnungsempfänger_Ort.Text := INIDatei.ReadString('InvEmp','BT-52', '');
    Edit_Rechnungsempfänger_Land.Text := INIDatei.ReadString('InvEmp','BT-55', '');

    AnzahlPositinen := INIDatei.ReadInteger('POS','AnzPos', 1);
    for i := 1 to AnzahlPositinen do
    begin
      NeueSeite := TTabSheet.Create(PC_Positionen);
      NeueSeite.PageControl := PC_Positionen;
      NeueSeite.Caption := 'Position ' + IntToStr(i);




    end;

  finally
    INIDatei.Free;
  end;
end;

這是我的ini文件

[POS] 
AnzPos=3 
 
;xxx ist die Zähl-Nr der Positionen mit Vornull 
001BT-155=643 
001BT-153=EID32 REI90-XC1-AN5C Bereich D  
001BT-129=219,85
001BT-130=M2 
001BT-152=19 
001BT-146=43,50 
001BT-154=EID 32/120 Spannbetondeckenplatte; d = 32 cmg 
001BT-131=9563,48 
001BT-132=11380,54 

002BT-155=299 
002BT-153=Auflagerstreifen 10X70X10 
002BT-129=7 
001BT-130=MTR
002BT-152=19
002BT-146=42,5 
002BT-154=Hartgummiauflagerstreifen 10 x 70 mm auf 10 m Roll 
002BT-131=297,5 
002BT-132=354,03 

003BT-155=40 
003BT-153=Stahlwechsel, grundiert (F0 
003BT-129=411.04 
001BT-130=CMT
003BT-152=19 
003BT-146=3,8 
003BT-154=Stahlwechsel, grundiert (Flachstahl) Netto- nicht rabattierfähig. 
003BT-131=1561.95
003BT-132=1858,72

我不知道該怎么辦?? 任何想法 ?

謝謝

您在顯示的 INI 文件中的 [POS] 部分中擁有所有數據,而您的代碼顯示部分 [InvData]。 修復它。

在您的 PageControl 中,僅創建 TabSheet 是不夠的,您還必須創建一個新的框架實例以托管到每個頁面中。 所有框架都是相同的 class 和主機編輯,復選框等到主機數據。

然后,您必須在 for 循環中讀取除計數之外的數據以創建頁面控件。 要讀取數據,您必須將循環變量與固定部分結合起來構建密鑰。 像這樣的東西:

Edit1.Text := IniFile.ReadString('POS', Format('%03.3dBT-154', [I]), 'Some default value');

在我的示例中,Edit1 是幀的一個字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM