s.a.
anladığım kadarı ile birden fazla recete formu var.
her formda da h001, h002 gibi fonksiyonlar var ve bizim kullanacağımız fonksiyon çağrıldığı formdan bu değerleri almak durumunda.
belki şöyle bir yapı ilgini çeker.
birtane base form oluştur. base formunda hesapla fonksiyonunu protected olarak oluştur.
(private,public,protected
fonksiyonda kullanacağın h001 h002 h003 içinde ikitane metod oluştur biri private biri protected
protected olanları "virtual;abstract;" olarak tanımla. private olanlardada protected olan metodları çağır.
daha sonra her formda protected olan metodları override et. ve base formdan gelen hesapla fonksiyonunu çağır.
kabaca şöyle olacak.
Kod: Tümünü seç
Type
TBaseForm:TForm
private
function h001:string;
function h001:string;
protected
function geth001:string;virtual;abstract;
function geth002:string;virtual;abstract;
function hesapla(formul:string):string;
End;
........
function TbaseForm.h001:string
begin
result:=geth001;
end;
function TbaseForm.h002:string
begin
result:=geth002;
end;
function hesapla(formul:string):string;
Begin
.....
// burda h001 ve h002 fonksiyonları geth00X fonksiyonunu çağırıyorlar. o fonksiyonlarda hangi recete formunu kullanacaksak o formda yazılacaklar ve her form kendi h00X fonksiyonunu kullanacak.
end;
end;
base formumuzun yapısı kabaca bu şekilde olacak. (kodları web de yazdım sintaks hatası olabilir)
Recete formlarınıda base formdan türeteceğiz ve geth00X metodlarını override edeceğiz.
Kod: Tümünü seç
Type
TF_Recete=class(TBaseForm)
......
protected
function geth001:string;override;
function geth002:string;override;
......
end;
........
function TF_Recete.geth001:string;
begin
//burda ilgili formun h001 i hespalama kısmı
end;
function TF_Recete.geth002:string;
begin
//burda ilgili formun h002 i hespalama kısmı
end;
procedure TF_Recete.btnHesaplaClick(sender:TObject);
var
sonuc:string;
Begin //hesapla metodu baseformda protected olarak tanımlı.
sonuc:=hesapla('if(h001>10,h002,0) * h003');
showmessage(sonuc);
End;
kolay gelsin.