DELPHI - как я могу вставить tlabeledit в динамическую вкладку в TpageControl

мне нужен этот ini-файл, который я упомянул в своем динамическом листе ttab, который я создал динамически! как вы видите в файле 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;

это мой ини файл

[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

не знаю как быть!? Есть идеи ?

Спасибо


person maxfido    schedule 03.04.2021    source источник
comment
Я совершенно смущен тем, что вы хотите сделать именно. Возможно из-за перевода с немецкого на английский. Не могли бы вы попробовать отредактировать now i need to back to ini file и then pu each position in tabsheet ? Может, проиллюстрировать картинкой? Иначе сложно понять, в чем ваш вопрос.   -  person MyICQ    schedule 03.04.2021
comment
Добро пожаловать в StackOverflow! Я не понимаю, при чем здесь XML. Также я не понимаю, что вы хотите делать с данными, которые вы показываете. Может стоит попросить с упрощенным набором данных, показать набор данных и показать нужный вам визуальный эффект. Избегайте использования немецкого слова где бы то ни было, используйте английское, чтобы мы поняли.   -  person fpiette    schedule 03.04.2021
comment
забудьте о части xml, пожалуйста! Мне нужен этот ini-файл, о котором я упоминал выше, на моей вкладке, которую я создал динамически! как вы видите в ini-файле, каждая его часть начинается с 001-002-003, а затем пускает те, которые начинаются с 001 на первой вкладке, те, которые начинаются с 002 на второй вкладке, и те, которые начинаются с 003 на третьей вкладке в моем управлении страницей. так понятно !   -  person maxfido    schedule 03.04.2021
comment
Что мешает вам собрать воедино имена ключей для методов чтения ini? У вас уже есть значение счетчика.   -  person Delphi Coder    schedule 03.04.2021
comment
Пожалуйста, перестаньте пытаться объяснить в комментариях и вместо этого отредактируйте свой вопрос. Если вы хотите, чтобы мы забыли об XML-компоненте, исключите его. Я прочитал ваш вопрос и ваш комментарий и до сих пор понятия не имею, о чем вы спрашиваете, поэтому вам действительно нужно поработать над улучшением своего вопроса, если вы хотите, чтобы мы помогли.   -  person Ken White    schedule 03.04.2021
comment
Ключ 001BT-130 встречается три раза — вы уверены в этом? Также: связано ли это с #45 и #49, которые имеют такие же различные опечатки и ошибки?   -  person AmigoJack    schedule 04.04.2021
comment
@AmigoJack Похоже на ошибку копирования и вставки   -  person Delphi Coder    schedule 04.04.2021
comment
Вы не показываете файл INI. Вы показываете текст. INI-файл имеет разделы. Пожалуйста, перечитайте все комментарии и сделайте именно то, что просят. Только так можно получить правильный ответ. Если вы этого не сделаете, скорее всего, ваш вопрос просто закрыт.   -  person fpiette    schedule 04.04.2021


Ответы (1)


У вас есть все данные в разделе [POS] в файле INI, который вы показываете, пока ваш код содержит раздел [InvData]. Исправьте это.

В вашем PageControl недостаточно создать TabSheet, вы также должны создать новый экземпляр фрейма, который будет размещаться на каждой странице. Все кадры имеют одинаковый класс и размещают редактирование, флажки и т. д. для размещения данных.

Затем вы должны прочитать данные, кроме count, внутри цикла for, чтобы создать элемент управления страницей. Чтобы прочитать данные, вы должны объединить переменную цикла с фиксированной частью для построения ключа. Что-то вроде этого:

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

В моем примере Edit1 — это одно поле фрейма.

person fpiette    schedule 04.04.2021