Kendi MessageBox'ımı yapsam butonu nasıl bulurum?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Kendi MessageBox'ımı yapsam butonu nasıl bulurum?

Mesaj gönderen ulu coder »

S.A.
Kendi mesajkutumu yapsam güzel olacak.
Mesajı göstermeyi, butonları vs. hallederim. Fakat basılan butonu mesajı oluşturan forma nasıl gönderirim bilmiyorum?
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Bir unit yap, içinde formuda olsun bu unitin..

mesaj kutusunu tasarla..

sonra unite şöyle bişi ekle..

Kod: Tümünü seç

procedure MesajGoster(msg : string);

implementation

procedure MesajGoster(msg : string);
begin
   with TMsgForm.create(Application) do 
      begin
         ShowModal;
         Free;
      end;
end;
Ve nasılki, ShowMessage'yi kullanmak için dialogs diyorsun USES kısmında, artık kullanmak istediğin formların USES kısmına yazmış olduğun unitinadını yaz..

Tabi bu yazacağın Uniti belli bir klasöre koy ve bu klasörü library path'e eklemeyi unutma..

Dilersen dialog mesaj kutusuda yapabilirsin..

Kod: Tümünü seç

Function TikkatNeYapiim(msg : string) : TModalResult;

implementation

Function TikkatNeYapiim(msg : string) : TModalResult;
begin
   with TMsgForm.create(Application) do 
      begin
         Result := ShowModal;
         Free;
      end;
end;
işte böyle böyle geliştirirsin.. kralını yaparsın..

kolay gelsin...
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Hocam anlayamadım.
Diyelim ki mesajkutusunda iki buton var.
Hangisine basıldığını ana forma nasıl belirtecem?
Misal MessageBox'da şöyle yapıyoruz;

Kod: Tümünü seç

cevap:=Application.MessageBox('Kayıt silinsin mi?','Sil',MB_YESNO);
  if cevap=idyes Then begin
    //if then for filan
  end;
Burda cevap'a idyes, idno vs. değerleri yükleniyor.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Murat hocam çok teşekkürler.
ShowModal'dan yola çıkarak şöyle bi şey yaptım.
Başkası yapmak isterse yardımı olur belki;

Kod: Tümünü seç

var
  Form19: TForm19;
  sonuc : byte;

implementation

{$R *.dfm}

function TForm19.MesajGoster(b1, b2: string): byte;
begin
Button1.Caption:=b1;
Button2.Caption:=b2;
Form19.ShowModal;
Result:=sonuc;

end;

procedure TForm19.Button1Click(Sender: TObject);
begin
sonuc:=1;
Close;
end;

procedure TForm19.Button2Click(Sender: TObject);
begin
Sonuc:=2;
Close;
end;

end.
Kullanımı; uses'a Unit19'ı ekledikten sonra

Kod: Tümünü seç

sonuc:= Form19.MesajGoster('Evet','Hayır');
Tabi çok geliştirilmesi lazım bunun...
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

ModalResult olayını araştır biraz..

Kolay gele..
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

ModalResult'u araştırdım.
Bu kodlardan pek farkını göremedim.

Neden onu kullanmalıyım?
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

formun üstüne iki yane button koy.
biri CANCEL biride OK olsun..

CANCEL buttonunun MODALRESULT'unu mrCancel diğerini mrOK diye ayarlıyaiblirsin.

Yada buttonların onclick olayında CANCEL buttonu için..

Kod: Tümünü seç

CancelButton....onclick
begin
   ModalResult := mrCancel;
end;
bu şekilde de kullanabilirsin...

tabi illaki TModalResult olması şart değil, yaptığın gibi integer bir değerde kullanabilirsin. Ama standard olması açısından bir başkasınında bunu kullanacağını düşünerekten yazman iyidir...

kolay gelsin..
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

ModalResult kullanmak zorundasın yoksa mesaj formun ekrandayken diğer işlemler devam eder yada diğer formların arkasına kalıp karambole gelebilir.. Mesajda amaç programı o an için durdurmaksa ModalResult olmalı.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

ulu coder yazdı:ModalResult'u araştırdım.
Bu kodlardan pek farkını göremedim.

Neden onu kullanmalıyım?

evet farklı ...düşünsene bir ton messagebox formun olduğunda her defesında

sonuc değer yükleyerek bunu yaparsın ama kod kalitesi bozulur bence...

messagebox formun sana rapamtre göndermeli bence bu hususta yönlen düşünsene bunu bir defa yaparsın ve hep kullanırısın....
Siz hayal edin...Biz yapalım TuannaSoft...
Cevapla