Kendi uyarı penceremde...

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 uyarı penceremde...

Mesaj gönderen ulu coder »

S.A.
Kendi uyarı penceremi yaptım fakat bir sorun var;

uyarı göstermek için şunu kullanıyorum:

Kod: Tümünü seç

frmMsgBox.Ok('Başlık', 'Yazı', ResimTuru);
MsgBox unit'indeki kod'un sorun yaratan kısmı:

Kod: Tümünü seç

function TfrmMsgBox.Ok(Caption, Msg: String;
  Picture: TIconType): TModalResult;
begin

  //.....

  frmMsgBox.ShowModal;
  Result := frmMsgBox.ModalResult;
end; //Ok
Burda ShowModal kullandığım için bir uyarı penceresi kapatılmadan başka uyarı penceresi açılırsa doğal olarak sorun çıkıyor.

Ne yapmamı tavsiye edersiniz?
ikut

Re: Kendi uyarı penceremde...

Mesaj gönderen ikut »

ulu coder yazdı:S.A.
Kendi uyarı penceremi yaptım fakat bir sorun var;

uyarı göstermek için şunu kullanıyorum:

Kod: Tümünü seç

frmMsgBox.Ok('Başlık', 'Yazı', ResimTuru);
MsgBox unit'indeki kod'un sorun yaratan kısmı:

Kod: Tümünü seç

function TfrmMsgBox.Ok(Caption, Msg: String;
  Picture: TIconType): TModalResult;
begin

  //.....

  frmMsgBox.ShowModal;
  Result := frmMsgBox.ModalResult;
end; //Ok
Burda ShowModal kullandığım için bir uyarı penceresi kapatılmadan başka uyarı penceresi açılırsa doğal olarak sorun çıkıyor.

Ne yapmamı tavsiye edersiniz?
Bence hiç kasma dialogs unitini türkçeleştir. ben öyle yaptım.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Re: Kendi uyarı penceremde...

Mesaj gönderen ulu coder »

ikut yazdı:Bence hiç kasma dialogs unitini türkçeleştir. ben öyle yaptım.
Ben de bununla uğraşmak istemezdim ama öyle istiyorlar...
Sanırım SuiPack kullanacakları için kendi tasarımım olmasını istediler.
'Create' ile olur mu acaba? FormCreate olayını bilmiyorum.

Projeyi bitirmem için 24 saatten daha az vaktim var :cry:
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
showmodal dediğine göre mesaj formunu kapatmadan başka bir form açılamaması lazım.
................
mesaj formunu dinamik olarak oluştursan nasıl olur peki.

Kod: Tümünü seç

var
mesajformu:tmesajformu;
Begin
  createet;
  ayarla;
  göster;
  freeandnil;
end;
gibisinden....

bide sorun oluyor demişsin ama nasıl bir sorun onu tam anlayamadım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

aslangeri hocam,
Uyarı formu ShowModal olarak açılıyor.
Yeni uyarı gelince o da ShowModal açılmak istiyor.
Fakat form zaten ShowModal olarak açık olduğu için;
tam hatırlamıyorum ama sanırım 'Visible form modal olarak açılamaz' gibi bir hata veriyor.

Hata vermesi mantıklı yani. Yöntemimi değiştirmeliyim.
Sanırım önerdiğin yöntem işe yarayacak.
Projeyi teslim ettim ama düzeltilir herhalde.

Teşekkürler...
iqprog

Re: Kendi uyarı penceremde...

Mesaj gönderen iqprog »

function TfrmMsgBox.Ok(Caption, Msg: String;
Picture: TIconType): TModalResult;
begin
.............
frmMsgBox := TfrmMsgBox.Create(Application);
................
Result := frmMsgBox.ShowModal;
FreeAndNil(frmMsgBox);
end;
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

iqprog hocam bu şekilde yapınca bir uyarı kapanmadan diğer uyarı gelince hata vermeyeceğine emin misiniz? aslangeri hocamın yönteminde yeni bir form tanımlandığı için sorun çıkartmamalı ama sizin yönteminizde 'frmMsgBox' create edildiği halde tekrar create edilecek ve tekrar 'modal' gösterilmeye çalışılacak...
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 »

şimdi iki tür mesaj penceresi olabilir.

1. mutlaka bir cevap alınması gereken (showmodal), ki bu ekranda sadece bir tane olur genelde.

2. mesaj amaçlı, bilgi amaçlı pencereler. birden fazla olabilir. mantıklısı on-top pencerelerdir.

mutlaka cevap alınması gerken formların, showmodal olmaması gereken durumlarda söz konusu olabilir. mesela bir network uygulaması olsun, clientlardan bir işi yapmak için mesaj geldiğini ve serverda bunu mesaj olarak göstermek gerekiyor. ama onlarca client (teorik olarak) mesaj gönderir ve her mesajı showmodal yaparsan sana yaşam alanı kalmaz.

yani her mesaja hemen cevap verme zorunluluğun olmayabilir. bunun için on-top pencerelerde cevap vermek mantıklı olur.

showmodal mesajları ben genelde, illa bu mesaja cevap ver öyle geç gibilerinden kullanırım. ki çoğumuzda bu sebeple kullanırız.

sen en iyisi bir değişkene bağlı olamadan direk formu create et, arkadan bir daha gelirse bile bir sorun olmaz.

şöyle.

Kod: Tümünü seç

with TfrmMsgBox.Create(Application) do
   begin
      .
      .
      Result := ShowModal;
      Free;
   end;
Senin soruna göre, ekranda bir showmodal pencere varken arkadan bir başka showmodal pencere isteği gelebilir diyorsan yukarıdaki işini görür.
iqprog

Mesaj gönderen iqprog »

ulu coder yazdı:iqprog hocam bu şekilde yapınca bir uyarı kapanmadan diğer uyarı gelince hata vermeyeceğine emin misiniz? aslangeri hocamın yönteminde yeni bir form tanımlandığı için sorun çıkartmamalı ama sizin yönteminizde 'frmMsgBox' create edildiği halde tekrar create edilecek ve tekrar 'modal' gösterilmeye çalışılacak...
yazdığım kodu denemen buraya cevap yazmandan daha kısa sürerdi.
Cevapla