DELPHI-如何在tpageControl中将tlabeledit插入动态选项卡 [英] DELPHI -how can i insert tlabeledit to dynamic tabsheet in TpageControl

查看:80
本文介绍了DELPHI-如何在tpageControl中将tlabeledit插入动态选项卡的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要拥有这个ini文件,我在动态创建的动态ttabsheet中提到了它!如您所见ini文件,在我的页面控件中,它分为三部分,每部分以001-002-003开头,然后让第一个选项卡中的部分以001开头,第二个选项卡中的部分以002开头,第三选项卡中的内容以003开头.

i need to have this ini file which i mentioned it in my dynamic ttabsheet which i created it dynamically ! as you see ini file , it has three parts each start with 001-002-003 and then let those which start with 001 in first tabsheet , those start with 002 in second tabsheet and those start with 003 in thired tabsheet in my page control .

  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

我不知道该怎么办!?有什么主意吗?

i dont know how to do !? any idea ?

谢谢

推荐答案

代码显示[InvData]部分时,您显示的INI文件的[POS]部分中包含所有数据.解决这个问题.

You have every data in the [POS] section in the INI file you show while your code expact section [InvData]. Fix that.

在您的PageControl中,创建TabSheet是不够的,还必须创建一个新的框架实例以托管到每个页面中.所有框架都属于同一类,并带有主机编辑,复选框等以托管数据.

In your PageControl, it is not enough to create TabSheet, you must also create a new frame instance to be hosted into each page. All frames are the same class and host edit, checkbox and so on to host data.

然后,您必须在for循环内部读取除count以外的数据,以创建页面控件.要读取数据,必须将loop变量与固定部分组合以构建密钥.像这样:

Then you must read the data, except count, inside you for-loop to create the page control. To read the data, you must combine the loop variable with fixed part to build the key. Something like this:

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

在我的示例中,Edit1是框架的一个字段.

In my example, Edit1 is one field of the frame.

这篇关于DELPHI-如何在tpageControl中将tlabeledit插入动态选项卡的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆