Creatメソッドを上手に使いこなすには。

解決


ちらつき防止隊員  2006-03-13 08:38:57  No: 20485

こんにちは。
いまいちCreatの使い方がわかりません。

Type 
   TMyPanel = class(Tpanel)
   MyImage =Timage;
   private
     property
・・・・・
   end;

   TMainForm = class(Tform)
・・・・

   end;

var
mainform:Tmainform;
Mypanel:TMypanel

procedure mainform.creat(....)
begin
   MyPanel:=TMypanel.creat(mainform);

なんて書くとエラーやら、なんやらで思うように動きません。
こちらとしてはmainformにMyPanelを表示させたいのですが、何をやってもエラーで、エラーが消えたと思えば、やはり表示されません。
いったいどうすれば表示できるよになるのでしょうか。

それから、Class TMypanelのPublishedにTimage型の変数を宣言しているのはパネルの上にMyImageを置きたいからです。

当然のことながら、mainformに直接TPanelとTImageをおけばそれで解決なのですが、コードをより美しく、またわかりやすく、するためにこんなことをしています。
また、オリジナルのPropertyもTMyPanelのほうに付け加えたいですし…。
そんなこんなで、どうにも僕には力量不足です。


Mr.XRAY  URL  2006-03-13 09:18:32  No: 20486

>上手に使いこなすには。

も何も...
上のコードでは間違いなくエラーがでるでしょう.
(1) まず,TPanelを使用するにはusesにExtCtrlsが必要です.
(2) Mypanel:TMypanel は最後に「;」がありません.
(3) procedure mainform.creat(....) は procedure Tmainformでしょう.
(4) MyPanel:=TMypanel.creat(mainform); はcreatではなく,createで,
    最後に「e」がありません.


みなしご  2006-03-13 09:59:01  No: 20487

孤児はドコに行けばいいの? 親を探さなきゃ…

type
  TMyImage = class(TImage)
  private
  public
  end;

  TMyPanel = class(TPanel)
  private
   FMyImage: TMyImage;
  published
   property Images: TMyImage read FMyImage write FMyImage;
  public
   constructor Create(AOwner: TComponent); override;
   destructor  Destroy; override;
  end;

  TMainForm = class(TForm)
   ........
  private
   { Private 宣言 }
  public
   { Public 宣言 }
  end;

var
  MainForm: TMainForm;
  MyPanel : TMyPanel;

implementation

{$R *.dfm}

constructor TMyPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FMyImage := TMyImage.Create(Self);
  FMyImage.Parent := Self;           // 養子縁組
end;

destructor TMyPanel.Destroy;
begin
  FMyImage := nil;
  inherited destroy;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  MyPanel := TMyPanel.Create(Self);
  MyPanel.Parent := MainForm;        // 養子縁組
  MyPanel.Images.Picture.LoadFromFile('test.bmp');
end;


ちらつき防止隊員  2006-03-17 08:27:26  No: 20488

すいませんねぇ、コピペじゃないんで手書きはつらいです。
みなしごさんありがとうございます。
コードが参考になりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加