Строка файла в TEdit

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
Dark Ichigo
новенький
Сообщения: 44
Зарегистрирован: 12.03.2009 18:06:51
Контактная информация:

Строка файла в TEdit

Сообщение Dark Ichigo »

Столкнулся с непобедимой трудностью.

Есть главная форма (окно программы) и две субформы.

В первой:

Код: Выделить всё

procedure TForm3.FormCreate(Sender: TObject);
var
  F: TextFile;
  vCompany: string;
  B: string;
  C: string;
  D: string;
begin
  AssignFile (F, 'config.txt');
  Reset(F);
  Readln(F, vCompany);
  Readln(F, B);
  Readln(F, C);
  Readln(F, D);
  company.Text:=vCompany;
  code.Text:=B;
  schet.Text:=C;
  ostatok.Text:=D;
  CloseFile(F);
end; 


В итоге получается форма, где каждому TEdit соответствует строка из файла config.txt. Все строки подгружаются при создании формы.

Во второй форме, которую я вызываю независимо от первой, мне нужно заполнить ещё один TEdit той же строкой vCompany из файла config.txt. Делаю ту же процедуру FormCreate для этой формы, но TEdit не заполняется вообще никак...
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

Я бы использовал общие переменные для всех модулей. Тогда бы один раз загрузил данные в них из файла и пользуйся во всех модулях.
Первый модуль (главная форма):

Код: Выделить всё

unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    ostatok: TEdit;
    schet: TEdit;
    code: TEdit;
    company: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  vCompany: string;
  B: string;
  C: string;
  D: string;

implementation

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var F: TextFile;
begin
  AssignFile (F, 'config.txt');
  Reset(F);
  Readln(F, vCompany);
  Readln(F, B);
  Readln(F, C);
  Readln(F, D);
  company.Text:=vCompany;
  code.Text:=B;
  schet.Text:=C;
  ostatok.Text:=D;
  CloseFile(F);
end;

initialization
  {$I unit1.lrs}

end.

Второй модуль (форма вызываемая во время использования программы) (Использую метод OnShow, т.к. vCompany может изменяться во время выпольнения):

Код: Выделить всё

unit Unit2; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls;

type

  { TForm2 }

  TForm2 = class(TForm)
    company: TEdit;
    procedure FormShow(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{ TForm2 }

procedure TForm2.FormShow(Sender: TObject);
begin
  company.Text:= unit1.vCompany;
end;

initialization
  {$I unit2.lrs}

end.

Хотя в принципе и в Вашем примере ошибок не должно быть.
Аватара пользователя
Dark Ichigo
новенький
Сообщения: 44
Зарегистрирован: 12.03.2009 18:06:51
Контактная информация:

Сообщение Dark Ichigo »

классно! большое спасибо! буду пробовать.
Ответить