Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#7

AW: UnterForm mit Daten aus Hauptform versorgen

  Alt 8. Mai 2015, 22:23
Also ich weiß nicht ob du das meinst, aber ich hab verstanden, dass du das Haupt-Formular (z. B. Unit1) hast und ein zweites Formular (z. B. Unit2). Wenn das so ist, kannst du natürlich auch über Kreuz aufeinender zugreifen:
Delphi-Quellcode:
unit Unit1;

interface

...

implementation

uses Unit2; //hier

{$R *.dfm}
und
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, ..., Unit1;

...

implementation

{$R *.dfm}
Das klappt.

Eine andere Möglichkeit wären Messages. Du schickst eine Message an das Hauptform und bekommst etwas zurück:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

const
  MSG_TEST = WM_USER + 1;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure MsgTest(var Msg: TMessage); message MSG_TEST;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.MsgTest(var Msg: TMessage);
var
  s: String;
begin
  s := 'Hallö Welt';
  Msg.Result := Integer(PChar(s));
end;
und
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

const
  MSG_TEST = WM_USER + 1;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
  iResult: Integer;
  s: String;
begin
  iResult := SendMessage(Application.MainForm.Handle, MSG_TEST, 0, 0);
  s := PChar(iResult);
  ShowMessage(s);
end;
  Mit Zitat antworten Zitat