Einzelnen Beitrag anzeigen

Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Record an 2tes Formular übergeben

  Alt 11. Dez 2010, 20:27
Willkommen in der
Was dir fehlt ist Delphi-Referenz durchsuchenModalResult

Um mal die Komplett-lern-lösung zu geben:

Form1:
Delphi-Quellcode:
unit Unit1;

interface

uses
  SysUtils, Classes, Controls, Forms, uConst, Grids, Unit2;

type
  TForm1 = class(TForm)
    strngrd1: TStringGrid;
    procedure strngrd1DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    personen: array[1..9] of TPerson;
    procedure StringGridInit;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  //Felder mit beispielwerten füllen
  for i := 1 to 9 do
  begin
    personen[i].id := i;
    personen[i].vorname := 'Willi ' + IntToStr(i);
    personen[i].nachname := 'Mustermann';
    personen[i].geburtstag := StrToDate('31.12.1999');
  end;

  StringGridInit;
end;

procedure TForm1.StringGridInit;
var
  i: Integer;
begin
  with strngrd1 do
  begin
    RowCount := length(personen) + 1;
    Cells[0, 0] := 'ID';
    Cells[1, 0] := 'Vorname';
    Cells[2, 0] := 'Name';
    Cells[3, 0] := 'Geburtsdatum';
  end;

  for i := 1 to length(Personen) do
    with strngrd1 do
    begin
      Cells[0, i] := IntToStr(personen[i].id);
      Cells[1, i] := personen[i].vorname;
      Cells[2, i] := personen[i].nachname;
      Cells[3, i] := DateToStr(personen[i].geburtstag);
    end
end;

procedure TForm1.strngrd1DblClick(Sender: TObject);
var
  frm2: TForm2;
begin
  frm2 := TForm2.Create(Self);
  frm2.edt1.text := personen[strngrd1.Row].vorname;
  frm2.edt2.text := personen[strngrd1.Row].nachname;
  frm2.edt3.text := DateToStr(personen[strngrd1.Row].geburtstag);
  case frm2.ShowModal of
    mrOk:
    begin
      personen[strngrd1.Row].vorname := frm2.edt1.text;
      personen[strngrd1.Row].nachname := frm2.edt2.text;
      personen[strngrd1.Row].geburtstag := StrToDate(frm2.edt3.text);

      with strngrd1 do
      begin
        Cells[1, strngrd1.Row] := personen[strngrd1.Row].vorname;
        Cells[2, strngrd1.Row] := personen[strngrd1.Row].nachname;
        Cells[3, strngrd1.Row] := DateToStr(personen[strngrd1.Row].geburtstag);
      end;
    end
  end;
  frm2.Free;
end;

end.

Form2:
Delphi-Quellcode:
unit Unit2;

interface

uses
  Classes, Controls, Forms,
  StdCtrls;

type
  TForm2 = class(TForm)
    btnCancel: TButton;
    btnSave: TButton;
    edt1: TEdit;
    edt2: TEdit;
    edt3: TEdit;
    procedure btnCancelClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.btnCancelClick(Sender: TObject);
begin
  ModalResult := mrCancel;
end;

procedure TForm2.btnSaveClick(Sender: TObject);
begin
  ModalResult := mrOk;
end;

end.

uConst: (Gemeinsme Dinge um uses-Konflikten vorzubeugen)
Delphi-Quellcode:
unit uConst;

interface

type
  TPerson = record
    id: integer;
    vorname: string[20];
    nachname: string[30];
    geburtstag: TDateTime;
  end;

implementation

end.
  Mit Zitat antworten Zitat