create olayı ile ilgili
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
create olayı ile ilgili
merhabalar...
ben web sitem ile senkron çalışabilecek bir tür chat programı ile uğraşıyorum.
bir mesaj gönderme formum var (form4)
diyelim ki contact list imde 3 kişi var.
birinin ismine çift tıklayınca mesaj göndermek için form4 ten bir tane daha oluşturulmasını istiyorum ki başka bir kullanıcıya da mesaj göndermek için mevcut formu kapatmadan bir tane daha oluşturabileyim.
hem form oluşturma hem de oluşturduğum formu kullanma konusunda yardımcı olursnız sevinirim.
(vt için ado ve ms access kullanıyorum)
ben web sitem ile senkron çalışabilecek bir tür chat programı ile uğraşıyorum.
bir mesaj gönderme formum var (form4)
diyelim ki contact list imde 3 kişi var.
birinin ismine çift tıklayınca mesaj göndermek için form4 ten bir tane daha oluşturulmasını istiyorum ki başka bir kullanıcıya da mesaj göndermek için mevcut formu kapatmadan bir tane daha oluşturabileyim.
hem form oluşturma hem de oluşturduğum formu kullanma konusunda yardımcı olursnız sevinirim.
(vt için ado ve ms access kullanıyorum)
...[ at, avrat, delphi ]...
Selam...
- Web sitenizle senkron kısmını biraz açar mısınız ..?
- Form oluşturmak deyince ana formunuz MDI form da create edilecekler MDIChild mi olacak ..?
- Formlar arası haberleşme kolay ama WebSitesinden tetikleme için daha kısa bir süre önce yazdığım bir mesajı inceleyin...
- Ref : viewtopic.php?p=7606&highlight=#7606
- Web sitenizle senkron kısmını biraz açar mısınız ..?
- Form oluşturmak deyince ana formunuz MDI form da create edilecekler MDIChild mi olacak ..?
- Formlar arası haberleşme kolay ama WebSitesinden tetikleme için daha kısa bir süre önce yazdığım bir mesajı inceleyin...
- Ref : viewtopic.php?p=7606&highlight=#7606
-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
senkornizasyondan kastettiğim asp dosyalarım da, yazacağım program da aynı tabloları kullanacaklar, bunu yazmamın nedeni tablolar web alanında olacak bunu belirtmek istemiştim, sanırım yanlış anlaşıldı.
mdi child kullanmadım daha önce. daha kolay olacaksa child form kullanayım.
benim asıl sorunum. formu create etme ve yeni oluşturduğum forma vereceğim ismin sabit olmaması. yani ben değişken bir isim verebilmek istiyorum
mdi child kullanmadım daha önce. daha kolay olacaksa child form kullanayım.
benim asıl sorunum. formu create etme ve yeni oluşturduğum forma vereceğim ismin sabit olmaması. yani ben değişken bir isim verebilmek istiyorum
...[ at, avrat, delphi ]...
- Size form create hakkındaki çözümü sunuyorum...
- Denenmiştir.
Önce Global bir değişken tanımlıyoruz. Bu değer gördüğünüz gibi varsayılan olarak 0'landı. (alışkanlık olsun, global değişkenleri local olanlardan ayırtedebilmek için başına x gibi bir karakter koyun... Ben hep bu şekilde uygularım. Çok faydasını gördüm)
Form Create fonksiyonumuz burda... Dikkat ederseniz ilk önce değişkenimizin değerini bir arttırdık ki formumuzun ismi Unique (benzersiz) olsun.
- Tag değeri delphi tarafından bize sunulmuş bir değiken. Integer tipinde veri saklanıyor. Ben buraya şimdiki gibi index olsun diye (gelecekte bu formu kapatmak için klavuz olacak) kullanıyorum. Her formun sıra numarasını buraya da yazıyoruz.
Kullanıcı formu köşedeki close butonu ile kapatabilir ama işi biten formu ana formdan kapatmak isterseniz ihtimaline karşı ekledim. Bulup yokeden procedure... Application içinde TForm olanların Tag değişkenine bakar. Eğer aradığımız ise bingo...
Bunlar da uygulama....
Form Oluştur Butonu
Formu yoket Butonu
- Denenmiştir.


Kod: Tümünü seç
Var
xFormNumarasi : Integer=0;

- Tag değeri delphi tarafından bize sunulmuş bir değiken. Integer tipinde veri saklanıyor. Ben buraya şimdiki gibi index olsun diye (gelecekte bu formu kapatmak için klavuz olacak) kullanıyorum. Her formun sıra numarasını buraya da yazıyoruz.
Kod: Tümünü seç
procedure TForm1.YeniFormOlustur;
Var
xxx : TForm;
begin
Inc(xFormNumarasi);
xxx := TForm.Create(Self);
With xxx do
begin
Name := Format('Form_%.3d', [xFormNumarasi]);
Caption := Name;
Width := 200;
Height := 100;
Visible := True;
Left := xFormNumarasi*100;
Tag := xFormNumarasi;
end;
end;

Kod: Tümünü seç
Procedure TForm1.FormuYoket(FormNo:Integer);
Var
Sayac : Integer;
begin
Sayac := 0;
Repeat
If (Components[Sayac] is TForm)
then If TForm(Components[Sayac]).Tag = FormNo
then TForm(Components[Sayac]).Free;
Inc(Sayac);
Until (Sayac >= ComponentCount);
end;

Form Oluştur Butonu
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
YeniFormOlustur();
end;
Kod: Tümünü seç
procedure TForm1.Button2Click(Sender: TObject);
begin
FormuYoket(StrToInt(Trim(InputBox('FormYoket','FormNumarası',''))));
end;
-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
imzamı taklit etmeyiniz
Ben Form Handle larını TList içinde tutmuştum eski bir projemde. TList Pointer olduğu için oldukça kolay
Erişmek içinde cast etmeyi Inutmayın
gibi
ha birde püf noktası,
MyFormList.Delete satedece Handle ı uçurur, yani form u değil, form memoryde kalır, onun için Formu manual olarak free etmek gerek
Kolay gele

Ben Form Handle larını TList içinde tutmuştum eski bir projemde. TList Pointer olduğu için oldukça kolay
Kod: Tümünü seç
MyFormList : TList;
......
MyFormList.Add(TFalanForm.Creat(Nil));
Kod: Tümünü seç
TFalanForm(MyFormList.Item[x]).Tag
ha birde püf noktası,
MyFormList.Delete satedece Handle ı uçurur, yani form u değil, form memoryde kalır, onun için Formu manual olarak free etmek gerek
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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
yaw şakasına yazdımdı zaten 
Hemen belirtmek lazım ozaman, ben bu lafı fii tarihinde gırgır dergisinin orta sayfasında görmüştüm. Yani yiğidi öldür, yoğurdunu yeme
telif hakkı bana ait değildir, yani sözü ben uydurmadım.
Ama saolsun @mrmcop hocam da çok iyi oturtmuş walla
Kolay gele

Hemen belirtmek lazım ozaman, ben bu lafı fii tarihinde gırgır dergisinin orta sayfasında görmüştüm. Yani yiğidi öldür, yoğurdunu yeme

Ama saolsun @mrmcop hocam da çok iyi oturtmuş walla

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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!



- Delphi diyorum başka bişey demiyorum...

- Form handle'larını listede tutmak mantıklı, Create edilen formu ana formdan Free etmek istenirse Application içinde TForm'mu diye aramaya gerek kalmaz, nokta tespiti hemen yokedilebilir...
- Pointer olan bir TList'in ayrıcalığını ben anlamadım.. Aslında Global bir TStringList, Memo vs. herşeyde tutulabilirken ?
- Biraz açar mısınız ? Kaçırdığım bişi olabilir...
Önemli Ek :


Öncelikle Lütfen eski haline getir, Mustafa nın dediği gibi slogan olması hoşuma gitti 
TList e gelincede. Bu aslında, daha çokta sanırım, Delphi eski sürümlerinde dynamicarray yoktu. ve class ı bu yüzden yaptılar
TStrings yada Tmemo yada başka class larla yukarıda ki işi tabiki yaptırtabilirsiniz. Ama TList en uygunu, çünki diğerlerinde birazda Ali cengiz oyunu yapmak gerek. yani hemen aklıma gelen addObject i kullanabilirsiniz
Ama TList çok yalın ve sade bir class tır uzun koda gerek yok. Bende birazda eskiden kalma, taa dos zamanından düşük ram lerle proje yapmaya çalışırdık ve byte ın hesabını yapardık, eh işte üzerime sinmiş, hala gereksiz memory kullanmak tan kaçınıyorum.
Yukarıdaki örneği bir dynamic array lede yapabiliriz ama bunun için code yazmak gerekir ve kontrol ler yapmak gerekir. TList bu yükü alıyor. Ben bu yüzden kullanıyorum. Az önce Help ten baktım, Bir örnek code yazılmış, TList in başka bir kullanımı için. Kendi yazdığın bir class ı biriktirebiliyorsun.
Yukarıdaki örneğe göreşöyle kısa code yazabilirsin
formu dışarıdan kapatacaksanız
Bir hatırlatma, Tlist Kullıldığında Program crash olduğunda yada kapatıldığında eğer formları kapatmazsanız O formların açıldığı memory blokları bloke olarak kalır. Taki makinayı açıp kapatana kadar.
Çok Az kod yazarak ve nerdeyse hiç kotrol yapmadan işimi halletmiş oldum. Ben bu yüzden TList tercih ediyorum
Kolay gele

TList e gelincede. Bu aslında, daha çokta sanırım, Delphi eski sürümlerinde dynamicarray yoktu. ve class ı bu yüzden yaptılar

TStrings yada Tmemo yada başka class larla yukarıda ki işi tabiki yaptırtabilirsiniz. Ama TList en uygunu, çünki diğerlerinde birazda Ali cengiz oyunu yapmak gerek. yani hemen aklıma gelen addObject i kullanabilirsiniz
Ama TList çok yalın ve sade bir class tır uzun koda gerek yok. Bende birazda eskiden kalma, taa dos zamanından düşük ram lerle proje yapmaya çalışırdık ve byte ın hesabını yapardık, eh işte üzerime sinmiş, hala gereksiz memory kullanmak tan kaçınıyorum.
Yukarıdaki örneği bir dynamic array lede yapabiliriz ama bunun için code yazmak gerekir ve kontrol ler yapmak gerekir. TList bu yükü alıyor. Ben bu yüzden kullanıyorum. Az önce Help ten baktım, Bir örnek code yazılmış, TList in başka bir kullanımı için. Kendi yazdığın bir class ı biriktirebiliyorsun.
Yukarıdaki örneğe göreşöyle kısa code yazabilirsin
Kod: Tümünü seç
MyList.Add(MyForm.Create(Nil));//Form Create edildi ve Listeye eklendi
Kod: Tümünü seç
I := MyList.Add(MyForm.Create(Nil));
// Eğer Form TForm ise
TForm(MyList.Items[I]).Tag := Integer(MyList.Items[I]);
//Eğer Formun kendi yazdığınız bir elemanına erişmek isterseniz
TMyForm(MyList.Items[I]).HedeHodo(Cart, Curt :string);
Kod: Tümünü seç
var AhaBuForm : Pointer;
..............
AhaBuForm := Pointer(Self.Tag);
I := MyList.IndexOf( AhaBuForm );
if I>=0 then TForm(MyList.Items[I]).Close;
Bir hatırlatma, Tlist Kullıldığında Program crash olduğunda yada kapatıldığında eğer formları kapatmazsanız O formların açıldığı memory blokları bloke olarak kalır. Taki makinayı açıp kapatana kadar.
Çok Az kod yazarak ve nerdeyse hiç kotrol yapmadan işimi halletmiş oldum. Ben bu yüzden TList tercih ediyorum
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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!