Auto- create forms & Available forms

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

herkese teşekkür ederim. kod daki hatayı düzeltince çalışmaya başladı.

baya fark ediyormuş prg baya hızlandı

freeman acaba senin kodu verilen kodun altına mı yazıcaz? :oops:

muhabbetiniz bol olsun
sevgilerle
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

pas dosyasının en sonundaki "end." den önce yazılıyor genelde

Kod: Tümünü seç

.....
Initialization
  Form1 := nil;
end.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar;

Herkeze Hayırlı gün ve çalışma dileği ile aslında bu gün pazar tatil ama yinede çalışanlar vardır heral.

Verilen kod ile çalışmama uyguladım ve oldu fakaaaaaat qreportlarda bu iş olmadı

Kod: Tümünü seç

if sorguyaz=nil then
sorguyaz:=TSorguyaz.create(self):
   sorguyaz.sorgu.open;
   sorguyaz.quickrep1.preview;
   sorguyaz.sorgu.close;

sorguyaz.showmodal;
freeandnil(sorguyaz);
end;
burada open previw ve close kodu zaten vardı ben verilen kodun arasına önceki kodu koymuş oldum. olay sorunsuz çalıştı ve sayfa açıldı fakat işim bitip de reportu kapatınca tamami ile kapanacağına tasarım haline döndü. sebebi büyük ihtimal kodu yanlış düzenledim ama yazdırılacak belge ve diğer işler olunca report lardaki değişiklikleri geri aldım.

acaba sorun nerede.

sorguyaz.quicrep1.showmodal; mi demeli yoksa tamami ile değişik bişimi.

saygılarla
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Kod: Tümünü seç

if sorguyaz=nil then 
sorguyaz:=TSorguyaz.create(self): 
   sorguyaz.sorgu.open; 
   sorguyaz.quickrep1.preview; 
   sorguyaz.sorgu.close; 

sorguyaz.showmodal; 
freeandnil(sorguyaz); 
end;
QR kullanmadım ama muhtemelen tespitin yerinde, yani

Kod: Tümünü seç

sorguyaz.showmodal;
a gerek yok. Önerim Preview formunu gerektiği zaman create et free lemeye gelincede formun close event inde yap.

Kod: Tümünü seç

if not Assigned(sorguyaz)then sorguyaz:=TSorguyaz.create(self): 
   if sorguyaz.sorgu.Active then sorguyaz.sorgu.Close;// Bu satır dataset i refresh lemek için
   sorguyaz.sorgu.open; 
   sorguyaz.quickrep1.preview; 

// bu satılar form close event ine yaz
//   sorguyaz.sorgu.close; 
//   freeandnil(sorguyaz);

initialization
   sorguyaz := nil;
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Teşekkürler Freeman35 dediklerini uyguladım ve şu an sorunsuz çalışıyor.
initialization
sorguyaz:=nil; komutunu da reporttan çıktı almak için düğmenin bulunduğu formun (raporlara ulaştığım düğmelerin bulunduğu form) en alt end. dan öncesine ekledim yani

end;

initialization
sorguyaz:=nil;

end.

sevgi ve saygılarla
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

MIDI FORM

Mesaj gönderen safak »

MIDIChilFormları gerektikçe yaratıp siliyorum.
Fakat Yaratılmış ve görünmekte olan bir MIDIChild form üzerindeki bir MEMO (yada edit, label,..) bileşenine, başka bir formdan değer atamak isteyince runtime hata oluşuyor. Nasıl yapabilirim? (mi yim).
Teşekkürler,
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Atamayı yaptığınız Event bölümü hangisi OnShow kısmında yapmayı denedinizmi ?

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

Cevabınız için teşekkürler. Önerinizi henüz denemedim.

Ekranda bir çok midichild açık. Kullanıcı bunların üzerindeki bilgi değişimini canlı olarak izliyor. Eğer her childform kendi hesaplamalarını yaparsa ve kendi üzerindeki bileşenlere değer atarsa sorun yok.
Fakat child formlardan birini hesaplama ve haberleşme merkezi olarak seçip burada oluşan sonucu diğer chilformların bileşenlerinde göstermeye çalışınca hata oluşuyor.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Eğer devamlı veri alış verişinde bulunan değişkenler ile uğraşıyorsanız size önerim bir unit içerisinde işlev gören Global Değişkenler tanımlamanız olacaktır. Buradan hem istediğiniz zaman verilere ulaşım sağlayabilirsiniz hemde değişkenlerdeki değerleri işleyebilirsiniz.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

Cvabınıza ve ilginize teşekkür ederim.

Tabii bu da bir çözüm. Ama orijinal sorunun cavabının bulunamadığı durumda. Burda da başka bir sıkıntı var. Real-Time izlenen MidChildler, hesaplamaları yapan formun kendilerine direkt değer ataması yerine global değişkenlere atanan değerleri kullanacaklar. MidiChildler global değişkenin değerinin değiştiğinden nasıl haberdar olacaklar ? Timer kaynak tüketeceği için bir sinyal yayma mekanizması kurmak lazım . Ya da global değişlen her midichild threadları tarafından düzenli aralıklarla kontrol edilmeli. Tabii bunlarda olabilir. Ama orijinal durumun çözümünü bulabilsek daha kestirme bir yol olur.

İyi Çalışmlar,
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

safak yazdı: Ekranda bir çok midichild açık.
mdichild formlar ile çok fazla bir alakam olmadı ama formların fazlalığından dolayı yanlışlıkla create edilmemiş bir formun nesnelerine ulaşmaya çalışıyor olabilir misiniz?. insan bazen farkına varmıyor. (tabi run timede aldığınız hata access violation ise)
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

Durumu daha basit bir örnekle canlandırmak istiyorum. Lütfen tekrarım için kusura bakmayınız.

Öyle bir program yapalım ki;
-bir midichild from üzerinde timer'e baglı olarak label.caption tarafından saat gösterilesin.
- kullanıcı tarafından açılan ve kapanabilen diğer midichild formlar üzerindeki label.captionlar ilk (ve çalışmasını sürdüren) form tarafından değiştrilsin.

Teşekkürlerimle,
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

şöyle yapabilirsin nasırım,
MainForm a bir procdure yada function yaz adı diyelim Apply_ALL(param.....), Ayrıca her formun içinede TriggerEvent(param.....) diye bir procedure yada function yaz.

Timer ı Mainforma koy ve bunun event ında bu Apply_ALL u çağır.

Apply_ALL all un içeriği şöyle olabilir

Kod: Tümünü seç

if Assigned(Form1)then Form1.TriggerEvent(param.....);
if Assigned(Form2)then Form2.TriggerEvent(param.....);
if Assigned(Form3)then Form3.TriggerEvent(param.....);
böyle halledebilirsin, burada püf nokta Formların kullanımı bittikten sonra nill olması gerekir, buna dikkat ederseniz mesele kalmaz

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

Herhalde temel bir yerde atlıyorum. Durumu yazıca belki sizler farkedeceksiniz.

MidiChild larıı tarayıp özelliklerini öğrenip değiştirebiliyorum.

Kod: Tümünü seç

procedure TFormMain.Button7Click(Sender: TObject);
var
  i: integer;
begin
  For i := 0 to (MDIChildCount-1) Do
    if (MDIChildren[i].Caption = 'News') then MDIChildren[i].Caption := 'Haberler' ;
end;
MidiChildların içersindeki bir proceduru çalıştırabiliyorum.

Kod: Tümünü seç

procedure TFormMain.Button7Click(Sender: TObject);
var
  i: integer;
begin
  For i := 0 to (MDIChildCount-1) Do
    if (MDIChildren[i].Name = 'FormNews') then FormNews.Hellode ;
end;
Fakat MidiChildFormun ürinde bulunan bir componente (Örnegin Memo1) atama yapmaya kaltığımda Access violation hatası geliyor. (Bir önceki kodda Hellode proceduru içerisinde atama yapsam da aynı sonuç alınıyor)

Kod: Tümünü seç

FormNews.Memo1.Lines.Add('delphi kullanmak ne güzel') ;
Çünkü:
if Assigned(FormNews) true gelmiyor.

Görüşlerinizi rica ediyorum
Teşekkürler,
Cevapla