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

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

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

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

Сообщение Dark Ichigo » 19.05.2009 18:47:43

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

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

В первой:

Код: Выделить всё
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 не заполняется вообще никак...
Аватара пользователя
Dark Ichigo
новенький
 
Сообщения: 44
Зарегистрирован: 12.03.2009 19:06:51

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

Сообщение VirtUX » 20.05.2009 09:27:46

Я бы использовал общие переменные для всех модулей. Тогда бы один раз загрузил данные в них из файла и пользуйся во всех модулях.
Первый модуль (главная форма):
Код: Выделить всё
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.

Хотя в принципе и в Вашем примере ошибок не должно быть.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

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

Сообщение Dark Ichigo » 20.05.2009 14:00:12

классно! большое спасибо! буду пробовать.
Аватара пользователя
Dark Ichigo
новенький
 
Сообщения: 44
Зарегистрирован: 12.03.2009 19:06:51


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 30

Рейтинг@Mail.ru