Procedure kontrol

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Procedure kontrol

Mesaj gönderen hido »

Selam, Form 2 de oluşturduğum procedure form 3 den nasıl kontrol edebilirim Form2.DurdurClick(Sender); denedim olmadı...

Kod: Tümünü seç

procedure DurdurClick(Sender: TObject);
begin

end;
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: Procedure kontrol

Mesaj gönderen barisatalay »

Biraz komik bir soru olacak farkındayım.
Uses kısmına erişmek istediğiniz formu tanımladınız mı ?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Procedure kontrol

Mesaj gönderen mrmarman »

Eğer Form2'deki tanımlamanız aynen bu verdiğiniz kod bloğu gibi ise; private değil public alana taşımanız kafi gelir. Çünkü başında Tform2. şeklinde formun sınıfına bağlayan bir ifade görmüyorum.
Resim
Resim ....Resim
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Procedure kontrol

Mesaj gönderen hido »

Teşekkür ederim...
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Procedure kontrol

Mesaj gönderen hido »

Yapamadım örnek bir uygulamayla yardımcı olur musunuz...

Form2 de olacak procedure

Kod: Tümünü seç

procedure SayiUretici(Sender: TObject);
var
  Uret: Real; // Uses Math Ekle
begin
  Uret := RandomRange(30, 180); // 30 Saniye ile 3 Dakika Arasında Sayı Üretir
  Form2.StatusBar1.Panels[1].Text := FloatToStr(Uret);
  Form2.StatusBar1.Panels[3].Text := FloatToStr(Uret);
end;
Form1 den tetikleyeceğim

Kod: Tümünü seç

SayiUretici(Sender);
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Procedure kontrol

Mesaj gönderen esistem »

Selam;
Form2 yapısı

Kod: Tümünü seç

unit Unit2;
interface
uses
  .....;
type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
procedure SayiUretici(x, y:integer);
    { Public declarations }
  end;
var
  Form2: TForm2;
implementation
{$R *.dfm}

procedure TForm2.SayiUretici(x, y:integer);
var
  Uret: Real; // Uses Math Ekle
begin
  Uret := RandomRange(x, y); // istediğiniz değerler arası sayı üretir.
  StatusBar1.Panels[1].Text := FloatToStr(Uret);
  StatusBar1.Panels[3].Text := FloatToStr(Uret);
end;

end.
Form1 de uses ile form2 yi çağırıp proceduru çağırırsanız sorun kalmaz.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Procedure kontrol

Mesaj gönderen brs »

esistem yazdı:Selam;
Form2 yapısı

Kod: Tümünü seç

unit Unit2;
interface
uses
  .....;
type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
procedure SayiUretici(x, y:integer);
    { Public declarations }
  end;
var
  Form2: TForm2;
implementation
{$R *.dfm}

procedure TForm2.SayiUretici(x, y:integer);
var
  Uret: Real; // Uses Math Ekle
begin
  Uret := RandomRange(x, y); // istediğiniz değerler arası sayı üretir.
  StatusBar1.Panels[1].Text := FloatToStr(Uret);
  StatusBar1.Panels[3].Text := FloatToStr(Uret);
end;

end.
Form1 de uses ile form2 yi çağırıp proceduru çağırırsanız sorun kalmaz.


Kusura bakmayın ben de anlayamadım bir yanlışlık mı var acaba...


Form 2 bulunan code

Kod: Tümünü seç

procedure SayiUretici(Sender: TObject);
var
  Uret: Real; // Uses Math Ekle
begin
  Uret := RandomRange(30, 180); // 30 Saniye ile 3 Dakika Arasında Sayı Üretir
  Form2.StatusBar1.Panels[1].Text := FloatToStr(Uret);
  Form2.StatusBar1.Panels[3].Text := FloatToStr(Uret);
end;
Form 1 den bunu nasıl tetikleyeceğiz

Kod: Tümünü seç

procedure TForm1.AraClick(Sender: TObject);
begin
SayiUretici(Sende); ?????
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Procedure kontrol

Mesaj gönderen esistem »

selam;
nesini anlayamadınız bende onu anlayamadım, proceduru kodda yazdığım gibi oluşturursanız (public kısmında) form1 den uses ile unit2 yi çağırıp, form2.sayiuretici(sender); yazarsanız herhangi bir sorun olmadan çalışacaktır kod (form2 de uses math i eklemeyi unutmayın). Fakat sonucu görmek için form2 create edilmiş olmalıdır, hatta form2 deki statusbar a değer yolladığı için form2 nin show edilmiş olması gerekir ki çalıştığını görün. Proceduru Public kısmında tanımlamazsanız form2 haricinde başka bir formdan ulaşmaya çalıştığınızda undefined identifier (tanımlanmamış tanımlayıcı) hatası alırsınız.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Procedure kontrol

Mesaj gönderen brs »

Form 1

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math, Vcl.ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StatusBar1: TStatusBar;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
procedure SayiUretici(Sender: TObject);

implementation

uses Unit2;

{$R *.dfm}

procedure SayiUretici(Sender: TObject);
var
  Uret: Real; // Uses Math Ekle
begin
  Uret := RandomRange(30, 60); // istediğiniz değerler arası sayı üretir.
  Form1.StatusBar1.Panels[1].Text := FloatToStr(Uret);
  Form1.StatusBar1.Panels[3].Text := FloatToStr(Uret);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.show;
end;

end.

Form 2

Kod: Tümünü seç

unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  SayiUretici(Sender);
end;

end.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Procedure kontrol

Mesaj gönderen esistem »

selam,

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math, Vcl.ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StatusBar1: TStatusBar;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
procedure SayiUretici(Sender: TObject);

implementation

uses Unit2;

{$R *.dfm}

procedure SayiUretici(Sender: TObject);
var
  Uret: Real; // Uses Math Ekle
begin
  Uret := RandomRange(30, 60); // istediğiniz değerler arası sayı üretir.
  Form1.StatusBar1.Panels[1].Text := FloatToStr(Uret);
  Form1.StatusBar1.Panels[3].Text := FloatToStr(Uret);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.show;
end;
end.
sizin yazdığınız kod yukarıda ki çalışmaz, bide benim yazdığım koda bakıp farklarını incelermisiniz.
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Procedure kontrol

Mesaj gönderen hido »

Selam brs arkadaşın verdiği kod da herhangi bir sıkıntı yaşamadım teşekkür ederim...
Cevapla