2017-08-15 10 views
-5

私はフォームクラスTfrmWelcomeを持っており、フォームの主要部分(frmWelcome.MainPanelSourceEditor)でボタンをクリックすると、 メモに動的にメモを追加できます。デルファイを使用してクラス内でダイナミックメモを作成する方法

いくつかのコードで失敗した試みは以下のとおりです。エラー "宣言されていない識別子WelcomeMemo"が表示されます。どのように私はこれをコンパイルして動作させることができますか?

type 
    WelcomeMemo : TMemo; 
    end; 

implementation 

procedure SetHelpWelcome; 
begin 
    WelcomeMemo : TMemo.Create(frmWelcome); 
    with TMemo(FindComponent('WelcomeMemo')) do 
    begin 
    Parent := frmWelcome.MainPanelSourceEditor; 
+3

_ "このコード行が何であるかはわかりません。私はそれがうまくいくかどうかを確認するためにそこに置きます。" – Victoria

+5

このコードは完全なナンセンスです。それについて何も何の意味もありません。それを投げ捨て、いくつかのチュートリアルから始めましょう。 –

+0

あなたのコード*は何をしようとしていますか? FWIW、あなたが私たちに示した非常に小さなコードは、有効な構文でさえありません。コードを書いて、あなたが書いたことが分からなくても、あなたのトラックでやめてから、続行する前にDelphiでコードを書く方法を学ぶ必要があります。 –

答えて

7

何をやろうとしていることは、それを行うためのより良い(しかし、まだ非常に良いではない)方法は、次のようになり、実行時にfrmWelcomeにメモを追加する場合:

procedure SetHelpWelcome; 
var 
    WelcomeMemo : TMemo; 
begin 
    WelcomeMemo := TMemo.Create(frmWelcome); 
    WelcomeMemo.Parent := frmWelcome.MainPanelSourceEditor; 
    // set any other properties of WelcomeMemo here. 
end; 

これにより、with(特に初心者の場合は絶対に使用しないでください)と完全に回避できるFindComponentは、ローカル変数WelcomeMemoへの割り当てによって最初に見つけ出す必要のないものを見つけることができなくなります。

しかし、それはあなたがしたいことをやっているのはかなりやっかいな方法です。 WelcomeMemoをフォームのメンバーとして持ち、フォームを作成して初期化するためのフォームのメソッドを定義する方が良いでしょう。作成するボタンのハンドラのOnClickハンドラからメソッドを呼び出すことができます。 (未テスト)

別に何か他のものから
TfrmWelcome = Class(TForm) 
private 
    fWelcomeMemo : TMemo; 
    procedure SetUpWelcomeMemo; 
[...] 
end; 

procedure TfrmWelcome.SetUpWelcomeMemo; 
begin 
    if fWelcomeMemo <> Nil then exit; // to avoid creating it more than once 
    fWelcomeMemo := TMemo.Create(Self); 
    fWelcomeMemo.Parent := Self.MainPanelSourceEditor; 
    // set any other properties of WelcomeMemo here. 
end; 

のようなもの、これは、それはあなたが実際に欠けている場合ではないかもしれないので起こるのを待っている事故で、特定のTfrmWelcomeインスタンスfrmWelcomeに設定されているメモの所有者を回避と連携。

しかし、@ J ..と同じように、試してみるとあなたのように聞こえるようにするのは、初心者のチュートリアルを見る必要があります。

+0

ありがとう、皆さん。 @ジェリードッジ私はあなたに感謝いたします – MissMassey

+1

@MissMasseyええと、歓迎ですか? –

+0

@MissMassey:Btw、この回答がお手伝いしましたら、左上隅のチェックアイコンをクリックしてお気軽にご同意ください。 – MartynA

関連する問題