Procedure

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Procedure

Mesaj gönderen husonet »

Kod: Tümünü seç

procedure CheckText(Sender:TEdit; var Key:Char);
begin
     If not (Key in ['0'..'9','.',#8, #13]) then
         Key := #0;

     If Key = '.' then
     begin
        If Pos('.', Sender.Text) > 0 then
           Key := #0;
     end;
end;
Arkadaşlar bunu Formum içinde kullanabiliyorum ama ben bunu bütün formlarımın içinde kullanmak istiyorum. Bundan dolayı FormlariProcedurleri diye bir unit dosyası açtım proceduremi burada yazdım ama hata alıyorum.

Edit objesi kullandığım için problem oluyor olabilirmi şayet oluyorsa ne yapmalıyım. Edit objesi etkilemiyorsa ne yapmalıyım.


İyi günler.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

unitinin başına

Kod: Tümünü seç

uses StdCtrls; 
yazarsan hata vermez sanırım.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Neden Class'ı gönderiyorsun ki? Direk Text i string olarak gönder.Gönderdiğin kodda class ın hiç bir şeyini kullanmamışsın.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Unit1 in de uses kısmına Unit 2 yi ekledim Sayın Naile Hanım'ın uyardığı noktada ilavelerimi yaptım.

Proseduremi Form1 deki Edit1 in KeyPress Eventinde Çağırıyorum ve hata alıyorum.

Kod: Tümünü seç

       CheckText(TEdit, Edit1.Text)
Acaba doğru bir şekildemi çağırıyorum.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Kod: Tümünü seç

CheckText(edit_name,key)
bu şekilde çağırman lazım. Ama TEdit olmadan da kullanabilirsin freeman35 ın dediği gibi yani sadece

Kod: Tümünü seç

procedure CheckText(var Key:Char); 
begin 
     If not (Key in ['0'..'9','.',#8, #13]) then 
         Key := #0; 

     If Key = '.' then 
     begin 
        If Pos('.', Sender.Text) > 0 then 
           Key := #0; 
     end; 
end;
çağırırken de

Kod: Tümünü seç

CheckText(key)
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Sadece Edit Nesnelerinde kullanmak için. Belki şu an lazım olmamış olabilir ama ileride mutlaka karşılaşacağım için Class kullandım.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Ben sana Class ı hiç kullanmadığın için söylemiştim. Zaten şimdilik TEdit için tapıcam demişsin, oraya başka class göndermezsinki. Mutlaka gönderecem diyosan TObject de hertürlü class ı gönderirsin ama bu seferde o procedure içinde her gelen class a göre işlem yapman gerekir, Yani Tedit in Text i vardır ama CheckBox ın Text property si yoktur va hata alırsın
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

freeman35 Doğru söylüyorsun ama benimki bilgi açısından. Bu arada yapmış olduğum ugulamanın kodlarınıda vermek istiyorum belki başkalarınada lazım olur. Arkadaşlar yardımlarınız için hepinize teşekkür ederim.

Kod: Tümünü seç

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
Uses Unit2;
{$R *.dfm}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
    EditKontrol(Form1.Edit1, Key);
end;

end.

Bu da unit2

Kod: Tümünü seç

unit Unit2;
interface
Uses
    StdCtrls;

    Procedure EditKontrol(Sender:TEdit; Var Key:Char);
implementation
Procedure EditKontrol(Sender:TEdit; Var Key:Char);
Begin
    if not (Key in ['0'..'9', '.', #8, #13]) Then
        Key := #0;
    if Key = '.' Then
    Begin
        if Pos('.', Sender.Text) > 0 Then
            Key := #0;
    End;
End;

end.
Cevapla