Formlar Arasında Nasıl İletişim Kurulur

click fraud protection

Kalıcı formlar, kalıcı olmayan görüntüler sergilediğimizde sahip olamayacağımız belirli özellikler sunar. En yaygın olarak, süreçlerini ana formda olabilecek herhangi bir şeyden izole etmek için modal olarak bir form göstereceğiz. Bu işlemler tamamlandığında, kullanıcının kalıcı formu kapatmak için Kaydet veya İptal düğmesine basıp basmadığını bilmek isteyebilirsiniz. Bunu yapmak için bazı ilginç kodlar yazabilirsiniz, ancak bunun zor olması gerekmez. Delphi kullanıcının formdan nasıl çıktığını söylemek için okuyabileceğimiz ModalResult özelliğiyle kalıcı formlar sağlar.

Aşağıdaki kod bir sonuç döndürür, ancak çağıran yordam bunu yoksayar:

var
F: TForm2; başla
F: = TForm2.Create (sıfır); F.ShowModal; F.Release; ...

Yukarıda gösterilen örnek sadece formu gösterir, kullanıcının onunla bir şey yapmasına izin verir, sonra serbest bırakır. Formun nasıl sonlandırıldığını denetlemek için ShowModal yönteminin birkaç ModalResult değerinden birini döndüren bir işlev olması gerçeğinden yararlanmamız gerekir. Hattı değiştir

instagram viewer

F.ShowModal

için

Eğer F.ShowModal = mrOk sonra

Almak istediğimiz her şeyi ayarlamak için mod biçiminde bir koda ihtiyacımız var. ModalResult'u elde etmenin birden fazla yolu vardır, çünkü TForm, ModalResult özelliğine sahip tek bileşen değildir - TButton'da da bir tane vardır.

Önce TButton'un ModalResult'una bakalım. Yeni bir proje başlatın ve ek bir form ekleyin (Delphi IDE Ana menüsü: Dosya -> Yeni -> Form). Bu yeni formun 'Form2' adı olacaktır. Sonra ana forma (Form1) bir TButton (Ad: 'Button1') ekleyin, yeni düğmeyi çift tıklatın ve aşağıdaki kodu girin:

prosedür TForm1.Button1Click (Gönderen: TObject); var f: TForm2; başla
f: = TForm2.Create (sıfır); DeneyinEğer f. ShowModal = mrOk sonra
Altyazı: = 'Evet'
Başka
Altyazı: = 'Hayır'; en sonunda
f. Serbest bırakmak; son; son;

Şimdi ek formu seçin. Biri 'Kaydet' etiketli iki TButton verin (Ad: 'btnSave'; Altyazı: 'Kaydet') ve diğer 'İptal' (Ad: 'btnCancel'; Altyazı: 'İptal'). Kaydet düğmesini seçin ve Nesne Denetçisini getirmek için F4 tuşuna basın, ModalResult özelliğini buluncaya kadar yukarı / aşağı kaydırın ve mrOk olarak ayarlayın. Forma geri dönün ve İptal düğmesini seçin, F4 tuşuna basın, ModalResult özelliğini seçin ve mrCancel.

Bu kadar basit. Şimdi projeyi çalıştırmak için F9 tuşuna basın. (Ortam ayarlarınıza bağlı olarak, Delphi dosyaları kaydetmenizi isteyebilir.) Ana form göründüğünde, alt formu göstermek için daha önce eklediğiniz Button1 tuşuna basın. Alt form göründüğünde, Kaydet düğmesine basın ve form kapanır, ana formun başlığına "Evet" yazdığına dikkat edin. Alt formu tekrar getirmek için ana formun düğmesine basın, ancak bu kez İptal düğmesine (veya altyazı alanındaki Sistem menüsü Öğeyi kapat veya [x] düğmesine) basın. Ana formun başlığı "Hayır" yazacaktır.

Bu nasıl çalışıyor? TButton için Click etkinliğine (StdCtrls.pas'tan) göz atmak için:

prosedür TButton. Tıklayın; var Form: TCustomForm; başla
Form: = GetParentForm (Kendini); Eğer Form oluşturma sonra
Form. ModalResult: = ModalResult; miras Tıklayın; son;

Ne olduğu Sahip (bu durumda ikincil form) TButton, ModalResult değerini TButton'un ModalResult değerine göre alır. TButton ayarlamazsanız. ModalResult ise, değer mrNone'dur (varsayılan olarak). TButton başka bir kontrole yerleştirilse bile, ana form hala sonucunu ayarlamak için kullanılır. Son satır, üst sınıfından devralınan Click olayını çağırır.

Forms ModalResult ile neler olup bittiğini anlamak için.. \ DelphiN \ Source (burada N sürüm numarasını temsil eder) içinde bulabilmeniz gereken Forms.pas kodunu gözden geçirmeye değer.

TForm'un ShowModal işlevinde, form gösterildikten hemen sonra, ModalResult değişkeninin sıfırdan büyük bir değer olup olmadığını denetlemeye devam eden Tekrarla-Başlatma döngüsü başlar. Bu durumda, son kod formu kapatır.

ModalResult'u yukarıda açıklandığı gibi tasarım zamanında ayarlayabilirsiniz, ancak formun ModalResult özelliğini çalışma zamanında doğrudan kodda da ayarlayabilirsiniz.

instagram story viewer