edit içini unit içinden boşaltma silme sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

edit içini unit içinden boşaltma silme sorunu

Mesaj gönderen forumsad »

form kodları

Kod: Tümünü seç

implementation
uses Unit2;
{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
begin
yaz(Edit1.Text);
end;
unit kodları

Kod: Tümünü seç

unit Unit2;

interface
procedure yaz(g:string);
implementation
uses Unit1, SysUtils;

procedure yaz(g:string);
begin

if StrToInt(g)>10 then Form1.Edit1.Clear; //Form1.Edit1.Text:='';

end;
edit içine 10 dan büyük değer girildiğinde editi unit içinden temizlemesini istiyorum ama hata alıyorum değer integer değil gibi bir hata
sebebi ne olabilir acaba saygılarımla
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: edit içini unit içinden boşaltma silme sorunu

Mesaj gönderen ihalilcoban »

Kod: Tümünü seç

if StrToInt(g)>10 then Form1.Edit1.Clear;
bu kısım hatalı. yerine;

Kod: Tümünü seç

if Length(g)>10 then Form1.Edit1.Clear;
şeklinde kullanırsan çalışır.
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

Re: edit içini unit içinden boşaltma silme sorunu

Mesaj gönderen forumsad »

HOCAM uzunluğu 10 karakterden fazla ise temizle değil integer olarak 10 dan büyükse temizle yapması lazım
saygılarımla
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: edit içini unit içinden boşaltma silme sorunu

Mesaj gönderen ertank »

forumsad yazdı:form kodları

Kod: Tümünü seç

implementation
uses Unit2;
{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
begin
yaz(Edit1.Text);
end;
unit kodları

Kod: Tümünü seç

unit Unit2;

interface
procedure yaz(g:string);
implementation
uses Unit1, SysUtils;

procedure yaz(g:string);
begin

if StrToInt(g)>10 then Form1.Edit1.Clear; //Form1.Edit1.Text:='';

end;
edit içine 10 dan büyük değer girildiğinde editi unit içinden temizlemesini istiyorum ama hata alıyorum değer integer değil gibi bir hata
sebebi ne olabilir acaba saygılarımla
Merhaba,

Sorunuzda kullandığınız Delphi sürümünü bildirmemişsiniz. Ben son sürümlerden birisi olduğunu varsayarak "uses" kısımlarını düzenledim. Gerekli olur ise siz eski sürümlere göre yeniden düzenleyebilirsiniz.

Gönderdiğiniz kod örneğinde mantık hatası mevcut. Siz Yaz() prosedürü içine string değer göndererek Form1 içindeki bir Edit nesnesinin içini boşaltmasını istiyorsunuz. Bunun yerine nesnenin kendisini gönderip direk prosedür içinde değiştirmeniz mümkün. Bu şekilde yaptığınız zaman yardımcı kullandığınız unit Form1 için referansta bulunmasına gerek kalmaz ve genel kullanılabilir bir prosedür olur.

Örnek kod aşağıdadır.

Kod: Tümünü seç

unit Unit2;

interface

uses
  SysUtils,
  Vcl.StdCtrls;

procedure Yaz(const Edit: TCustomEdit);

implementation

procedure Yaz(const Edit: TCustomEdit);
var
  TempString: string;
  Value: Integer;
begin
  TempString := Trim(Edit.Text);

  if not TryStrToInt(TempString, Value) then
  begin
    Edit.Text := EmptyStr;
    Exit();
  end;

  if Value > 10 then Edit.Text := EmptyStr;
end;

end.
Yukarıdaki prosedür içinde özellikle TCustomEdit şeklinde tanımlama yapıldı. Birçok Edit bileşeni TCustomEdit üzerinden türetilerek yapılır. Böylece, misal DevExpress bileşeni TcxEdit kullanarakta prosedürü çağırabilirsiniz. Yaz(TCustomEdit(TcxTextEdit1));

Prosedür içinde özellikle Edit.Clear() kullanılmadı. Zira bu özellik tüm Edit bileşenlerinde olmayabiliyor.

Kullanımı ise aşağıdaki gibi olacaktır.

Kod: Tümünü seç

unit Unit1;

interface

uses
  Winapi.Windows,
  Winapi.Messages,
  System.SysUtils,
  System.Variants,
  System.Classes,
  Vcl.Graphics,
  Vcl.Controls,
  Vcl.Forms,
  Vcl.Dialogs,
  Vcl.StdCtrls;

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

var
  Form1: TForm1;

implementation

uses
  Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Yaz(Edit1);
end;

end.
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

Re: edit içini unit içinden boşaltma silme sorunu

Mesaj gönderen forumsad »

delphi7 kullanıyorum hocam
teşekkürler cevabınız için saygılar sunarım.
Cevapla