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
我不知道怎么办!?有什么想法吗?
谢谢
您在代码精确部分 [InvData] 中显示的 INI 文件的 [POS] 部分中包含所有数据。解决这个问题。
在您的 PageControl 中,仅创建 TabSheet 是不够的,您还必须创建一个新的框架实例以承载到每个页面中。所有帧都是相同的 class 并且主机编辑、复选框等主机数据。
然后你必须在你的for循环中读取除计数之外的数据来创建页面控件。要读取数据,您必须将循环变量与固定部分结合起来构建密钥。像这样:
Edit1.Text := IniFile.ReadString('POS', Format('%03.3dBT-154', [I]), 'Some default value');
在我的示例中,Edit1 是帧的一个字段。
我需要这个 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
我不知道怎么办!?有什么想法吗?
谢谢
您在代码精确部分 [InvData] 中显示的 INI 文件的 [POS] 部分中包含所有数据。解决这个问题。
在您的 PageControl 中,仅创建 TabSheet 是不够的,您还必须创建一个新的框架实例以承载到每个页面中。所有帧都是相同的 class 并且主机编辑、复选框等主机数据。
然后你必须在你的for循环中读取除计数之外的数据来创建页面控件。要读取数据,您必须将循环变量与固定部分结合起来构建密钥。像这样:
Edit1.Text := IniFile.ReadString('POS', Format('%03.3dBT-154', [I]), 'Some default value');
在我的示例中,Edit1 是帧的一个字段。