openDialog Delphi/Lazarus

0

Che otwierać plik, po czym jego zawartość była wpisywana w okienka Edit, ale nie mogę tego rozpracować pomimo uzywania głowy i google. Pomocy :(
Wkleje to co mam, chociaż wiem że tam pewnie wszystko jest źle ;)

 procedure TForm1.BitBtn4Click(Sender: TObject);
var
 openDialog : TOpenDialog;
 i:integer;
 TF : TextFile;
 a:string;
begin
  opendialog1.Execute;
  openDialog1.InitialDir := 'Pliki/';
  opendialog1.Options:=[ofFileMustExist];
  ShowMessage('Plik otwarty');
  a:=opendialog1.FileName;
  AssignFile(TF,a);
  Reset(TF);
  Readln(TF,a);
  form1.Edit1.Text:=a;
  Readln(TF,a);
  form1.Edit2.Text:=a; 

Na końcu mam dużo

Readln(TF,a);
form1.Edit2.Text:=a

editów jest więcej (i labeli) więc nie da się tego zapętlić, a

Readln(TF, form1.Edit2.Text)

nie działa, można to jakoś inaczej/zgrabniej napisać?

0

FindComponent ?

PS: Jak myślisz, co się stanie, jeżeli ktoś naciśnie Anuluj na OpenDialog ?

0

Program się zawiesił.

0
if (OpenDialog1.Execute) Then
Begin
 (* Tutaj operacje na pliku *)
End Else
 MessageBox(0, 'Zamknąłeś OpenDialog ! Operacja przerwana.', '', MB_IconError);
1

Nazywasz wszystkie EDITY (te ktore mają być wypełniane tekstem z pliku) jednakowo tylko z kolejnym numerem na końcu np. Edit1, Edit2, Edit3 itd. i coś w stylu:

var
  f: TextFile;
  ctrl: TControl;
  i: Integer;
  linia: string;
begin
  OpenDialog1.InitialDir := 'Pliki/';
  OpenDialog1.Options:=[ofFileMustExist];
  if OpenDialog1.Execute then
  begin
    AssignFile(f, OpenDialog1.FileName);
    Reset(f);
    i:=1;
    ctrl:= FindChildControl('Edit1'); //Zakladam ze edity bezposrednio na formie
    while (not EOF(f)) and (ctrl <> nil) do //koniec pliku lub zabrakło editów czyli za długi plik
    begin
      Readln(f,linia);
      TEdit(ctrl).Text:= linia;
      Inc(i);
      ctrl:= FindChildControl('Edit' + IntToStr(i));
    end;
    CloseFile(f);
  end;
end;
0

wszystko ładnie, ale od Edit10 nie działa, działa tylko do 9, a mam w sumie do 15

0

No ja też nie widzę, ale nie działa. Może przeszkadza to, że te Edity od 10 są w GroupBox? Ale używałem ich (Editów) w innych sprawach i działało.

0

Tak na pewno przeszkadza wszystkie muszą mieć tego samego rodzica np. forme czy panel inaczej nie da się szukać za pomocą FindChildControl ale chyba można po FindComponent spróbuj zmienić te funkcje.

0

Dzięki bardzo, wszystko pięknie działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1