Merhaba,
Benim anladığım kadarıyla, dialog içindeki edit'e bir şey girilmemiş ise Evet (Kaydet) butonuna tıklanırsa dialog kapanmasın istiyorsun. Eğer ihtiyacın buysa, aradığın çözüm şu şekilde olabilir. Pointer kavramları konusunda bilgin nasıl bilmiyorum ama karışık gelirse diye açıklamaya çalıştım. Kodu kendim yazdım ve test ettim başarılı bir şekilde çalışıyor. Bir sorun olursa örnek projeyi atabilirim.
Kodu aldıktan sonra fomunun private bölümüne aşağıdaki procedure tanımını eklemeyi unutma
- Yine siz AEdit.Text'i bir global string bir değişkene alın ki diyalog kapandığında girilen değer için top out'a çımasın değil mi Veri girişini kullanırken lazım olur..
DÜZELTME : Her mesajı kendi projemmiş gibi düşünüyorum sanırım.. Global değişkene gerek yok, Message Dialog özelleştirme deyince bağımsız bir procedure olarak düşündüm. @brs direkt button içinde kullanmaya devam ediyorsa zaten veri girişini de oradan kullanacak gibi görünüyor ki o zaman global değişkene gerek kalmıyor... AEdit.TExt'in bizatihi kendisini kullanıp en sonunda free edecektir.
Selam, mrmarman ve xxxjedixxx ilginize teşekkür ederim,
Yapmak istediğim şey edit boş ise ve birden fazla kayıt yapmak istediğinde kullanıcı dialog her seferinde yeniden açmaması için kapanmasını engellemekti...
xxxjedixxx arkadaşım tekrar teşekkür ederim.
Fakat edit içine giriş yapılsada dialog penceresinin kapanmasını nasıl engellerim yani birden fazla kayıt girişi olma ihtimali için
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
O kadar açıklama yazdım ama dikkat etmemişsiniz. Önceki yazdığım koddaki DlgButtonClick prosedürüne bakarsanız, açıklamalarda sorduğunuz detayı yakalarsınız.
procedure TForm1.DlgButtonClick(Sender: TObject);
begin
if Trim(TEdit(Ptr(TButton(Sender).Tag)).Text) <> '' then // Butonun tag'ine sakladığımız edit'in adresinden Ptr fonksiyonu ile Edit'e ulaşıyoruz.
TForm(TButton(Sender).Parent).ModalResult := mrYes; // Edit dolu ise modalresult'ı mrYes yaparak dialogun kapanmasını sağlıyoruz.
end;
...
TForm(TButton(Sender).Parent).ModalResult := mrYes; // Bu satırı kaldırırsan diyalog kapanmaz.
Yani kayıt yaptırdığın kodları bu DlgButtonClick prosedürüne taşırsan işin görülecektir. Kayıt işin bitince modalresult değerini mryes yaparsın kapanır.
procedure TForm1.DlgButtonClick(Sender: TObject);
var Str: string;
begin
Str := Trim(TEdit(Ptr(TButton(Sender).Tag)).Text); // Edit'e yazılan text
if Str = '' then Exit;
...
KayıtYap;
...
if HerseyKaydedildi then
TForm(TButton(Sender).Parent).ModalResult := mrYes;
end;
...