Bu satirlari nasil unit2 icine atabilirim?

Başlatan bunalmis, 27 Nisan 2010, 12:30:48

z

Asagida kirmizi renkle yazdigim satirlari unit1 icinden kaldirip unit2 icine atmak istiyorum.
Eger bu mumkun olursa yeni bir program icin form1 olusturuldugunda sadece uses kismina
unit2 nin eklenmesi yeterli olacak ve bu benim icin cok onemli.

Bu istedigim mumkunmu? Ben beceremedim.

unit Unit1

interface

uses
        windows, SysUtils, Unit2;

const
FormMsg=WM_USER+1

type
   TForm1=class(TForm)
   private
   procedure OnFormMsg(var M:Tmessage); message FormMsg;
   public
  end;

var

implementation

procedure Tform1.OnFormMsg(var M:Tmessage);
begin
end;

end.

OnFormMsg procedurunun private, public vs olmasinin onemi yok. Tum derdim Form1 mesajlarini isleyen bu proceduru unit2 icine almak.
Form1 icinde uses unit2 haricinde tanim yapmak istemiyorum.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

orhanc

Prosedürü unit2 içinde public olarak tanımlayıp kullanabilirsin.
i'm doing nothing... Giddy Up  http://www.drorhan.com

z

type
   TForm1=class(TForm)
   private
   procedure OnFormMsg(var M:Tmessage); message FormMsg;
   public
  end;

Bundan nasıl kurtulacağım?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

orhanc

onu ordan silip unit2 de tanımlayacaksınız
i'm doing nothing... Giddy Up  http://www.drorhan.com

z

procedure OnFormMsg(var M:Tmessage); message FormMsg;

buradaki message ibaresi sorun yaratıyor.

İlgilenirsen aşağıda verdiğim unit1 içindeki

procedure OnFormMsg1(var M:Tmessage); message FormMsg;
procedure OnFormMsg2(var M:Tmessage) ;message DispMsg;

tanımlamaları ile

procedure Tform1.OnFormMsg1(var M:Tmessage);
var msgstrptr:PShortstring;
begin
        msgstrptr:=ptr(M.WParam);
        form1.memo.Lines.Add(msgstrptr^);
end;

procedure Tform1.OnFormMsg2(var M:Tmessage);
begin
        B_Regs(ptr(M.WParam));
end;

procedürünü B100D_Card.pas içine taşımak. Ben beceremedim.

http://bikomak.com/B100-D/B100D_Deney.rar

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo: TMemo;
    Init_: TButton;
    procedure Init_Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure OnFormMsg1(var M:Tmessage); message FormMsg;
    procedure OnFormMsg2(var M:Tmessage) ;message DispMsg;

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
//Uses


procedure Tform1.OnFormMsg1(var M:Tmessage);
var msgstrptr:PShortstring;
begin
        msgstrptr:=ptr(M.WParam);
        form1.memo.Lines.Add(msgstrptr^);
end;

procedure Tform1.OnFormMsg2(var M:Tmessage);
begin
        B_Regs(ptr(M.WParam));
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
        B_Close();
end;

procedure TForm1.Init_Click(Sender: TObject);
begin
        B_Init();
end;

end.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

orhanc

#5
Unit1
procedure TForm1.ExtractedMethod;
var
  Mesajim: TMessage;
begin
  OnFormMsg1(Mesajim);
end;


Unit2
procedure OnFormMsg1(var M:Tmessage);


procedure OnFormMsg1(var M:Tmessage);
var
  msgstrptr:PShortstring;
begin
  msgstrptr:=ptr(M.WParam);
  form1.memo.Lines.Add(msgstrptr^);
end;


ufak bir hatırlatma kodlama standartlarını borlanda göre yap okunması daha kolay olur.
i'm doing nothing... Giddy Up  http://www.drorhan.com

z

Hala Form1 de kalıntı kod var. Anlayamadıgım uses kısmına zaten unit2 yi tanımlıyoruz. Neden istediğim olmuyor?

"ufak bir hatırlatma kodlama standartlarını borlanda göre yap okunması daha kolay olur."

Bu nasıl oluyor? Anlamadım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

orhanc

Yazmayı unutmuşum benim hatam Form1 deki proceduru silmeniz gerekiyor.

http://edn.embarcadero.com/article/10280
i'm doing nothing... Giddy Up  http://www.drorhan.com

z

procedure TForm1.ExtractedMethod;
var  Mesajim: TMessage;
begin 
OnFormMsg1(Mesajim);
end;

Bahsettiğim bu. Bu kalacak değilmi. 
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

orhanc

evet o kalacak ama unit1 dekini sileceksiniz

   procedure OnFormMsg(var M:Tmessage); message FormMsg;

procedure Tform1.OnFormMsg(var M:Tmessage);
begin
end;

bu ikisini
i'm doing nothing... Giddy Up  http://www.drorhan.com