があなたのchatformにパブリックメソッドを追加します。
type
TMyForm = class(TForm)
private
FUserName: string;
public
constructor Create(AOwner: TComponent;
const UserName: string);
end;
constructor TMyForm.Create(AOwner: TComponent;
const UserName: string);
begin
inherited Create(AOwner);
FUserName := UserName;
end;
は、このようなフォームを作成します。
with TChatForm.Create(Application) do
begin
PassUserName(FUsername);
Show;
end;
procedure TChatForm.PassUserName(const aUsername: string);
begin
Caption := 'You can now chat: '+ aUsername;
end;
これは、あなたは、単に新しいものを追加することによって、既存のパブリックメソッドを変更せずに、あなたのチャットフォームに欲しいものは何でも渡すことができます。懸念に対処するために使用しない
例「と」またはFUsername:
frmChat := TChatForm.Create(Application);
frmChat.Nickname := aUsername;
frmChat.Show;
TChatForm = class(TForm)
private
FUsername : string;
procedure SetNickName(const Value: string);
function GetNickName: string;
public
property NickName: string read GetNickName write SetNickName;
end;
procedure TChatForm.SetNickName(const Value: string);
begin
FUsername := Value;
end;
function TChatForm.GetNickName: string;
begin
Result := FUsername;
end;
私は手順をFormCreate設定する必要がありますけれども、どのように、あなたの方法それを解決しようとしていますか?これをFormCreate(送信者:TObject; constユーザー名:文字列)プロシージャに設定します。私がイベントにプロシージャをリンクしようとすると、非互換性を返すOnCreate – Eduard
'OnCreate'イベントを一切設定しないでください。答えのコードと全く同じ 'コンストラクタ 'を使います。 –
+1 IMHO OPの質問に基づくより良いアプローチです。 – ComputerSaysNo