Точно так же, как если бы элементы управления находились в одной и той же форме. Просто префикс управления Edit с объектом кадра, которому принадлежит это, например:
uses
Frame1Unit, Frame2Unit;
procedure TForm1.FormCreate(Sender: TObject);
begin
Frame1 := TFrame1.Create(Self);
Frame1.Parent := ...;
...
Frame2 := TFrame2.Create(Self);
Frame2.Parent := ...;
...
end;
uses
Frame2Unit;
procedure TFrame1.Button1Click(Sender: TObject);
begin
Frame2.Edit1.Text := '...';
end;
Лучше дизайн будет инкапсулировать логику так Frame1 и frame2 не знают друг о друге. Есть Frame1 выставить событие, которое он срабатывает при нажатии на кнопку, а затем родительская форма может назначить обработчик этого события и присвоить текст на frame2, например:
uses
Frame1Unit, Frame2Unit;
procedure TForm1.FormCreate(Sender: TObject);
begin
Frame1 := TFrame1.Create(Self);
Frame1.Parent := ...;
Frame1.OnNewText := Frame1Text;
...
Frame2 := TFrame2.Create(Self);
Frame2.Parent := ...;
...
end;
procedure TForm1.Frame1Text(Sender: TObject; const NewText: string);
begin
Frame2.EditText := NewText;
end;
type
TFrame1TextEvent = procedure(Sender: TObject; const NewText; string) of object;
TFrame1 = class(TFrame)
Button1: TButton;
procedure Button1Click(Sender: TObject);
public
OnNewText: TFrame1TextEvent;
end;
procedure TFrame1.Button1Click(Sender: TObject);
begin
if Assigned(OnNewText) then
OnNewText(Self, '...');
end;
type
TFrame2 = class(TFrame)
Edit1: TEdit;
private
function GetEditText: string;
procedure SetEditText(const Value: string);
public
property EditText: string read GetEditText write SetEditText;
end;
function TFrame2.GetEditText: string;
begin
Result := Edit1.Text;
end;
procedure TFrame2.SetEditText(const Value: string);
begin
Edit1.Text := Value;
end;
Рамки предназначены для автономного использования. Это их родитель, предназначенный для такого взаимодействия. Не то чтобы это невозможно, но не по дизайну. Имейте в виду, если вы собираетесь использовать рамку только в одном месте, это не имеет смысла. Рамки предназначены для повторного использования одного и того же набора элементов управления несколько раз. –
Рамы @JerryDodge имеют много преимуществ, кроме повторного использования. Фреймы могут содержать сложный код, который вы не хотите включать в родительскую форму (разделение), отлично подходит для обмена и т. Д. –
@JohnEasley Правда, но я всегда использую встроенные формы для этого. Гораздо более гибкий. Например, фреймы не имеют события OnCreate/OnDestroy. –