Create Edilen Formlarda Farklı işlemler yapmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Omers
Üye
Mesajlar: 14
Kayıt: 21 Eki 2006 05:51
Konum: Bursa

Re: Create Edilen Formlarda Farklı işlemler yapmak

Mesaj gönderen Omers »

Her form için sabit işlem oluşturabildiniz mi?

oluşturduysanız,

şöyle bir if eklerseniz sorun çözülür..

Kod: Tümünü seç

if (form caption = "koşul")
     begin
         koşul için işlemler
     end
else
if (form caption == "koşul2")
    begin 
         koşul 2 için işlemler
    end
bu en basit yöntemlerden.. ama bu yöntemle devam ederseniz, formdaki işlemler arttıkça, muhtemelen kodlar arap saçına dönecek. her form için ayrı dosya oluşturmanı tavsiye eder. ve sadece form create ederken bu dosyalardan gerekeni yüklemen daha profesyonelce olur..

library A, library B..
eğer form caption = A, yükle library A
eğer form caption = B, yükle library B
MY Yolcusu...
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: Create Edilen Formlarda Farklı işlemler yapmak

Mesaj gönderen qamyoncu »

Kodlama yaparken ABC DEF olarak değil de

Kod: Tümünü seç

(Sender as TForm).Panel1.Visible:=True;
gibi yazarsanız belki olur.

Msn gibi bişey yapacak olsam Form2 örnek alacağım nokta olurdu.

Kod: Tümünü seç

var
Pencereler: array[1..50] of TForm;
begin
Pencereler[1]:=TForm.Create(Self);
Pencereler[1].OnCreate:=Form2.OnCreate;
..
..
derdim.
Dikkat edilecek nokta Form2.OnCreate event'indeki formu betimleyen nesneler (Sender as TForm) olmalı. :)
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Create Edilen Formlarda Farklı işlemler yapmak

Mesaj gönderen csunguray »

Bunda kolay ne var:

He formun KisiKodu diye bir degiskeni olur. Böylece bu formu kimin için açtığınızı bilirsiniz.

Kod: Tümünü seç

type
  TFormKonusma = class(TForm)
    Falan Filan Falan
  private
    { Private declarations }
  public
    { Public declarations }
    KisiKodu:Integer;
  end;
Diğer formdan pencereyi create ederken:

Kod: Tümünü seç

with TFormKonusma.Create(Self) do
begin
  KisiKodu := FalanFilan;
  Show;
end;
Yeni bir TFormKonusma create ettik. Sonra onun KisiKodu değişkenini bizim Ali'yle ilişkilendirdik. Sonra da formu görünür yaptık.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: Create Edilen Formlarda Farklı işlemler yapmak

Mesaj gönderen qamyoncu »

Önce onları Create etmen gerekir.
Create ederken Parent'ini Hangi Form üzerinde Create ediyorsan o Form yaparsan, Formların Componentlerine ulaşarak hangisinin Memo olduğunu anlayabilirsin.

Kod: Tümünü seç

var
Pencere1: TForm;
MMemo: TMemo;
begin
Pencere1:=TForm.Create(Self);
Pencere1.OnCreate:=Form2.OnCreate;
MMemo: TMemo.Create(Pencere1);
MMemo.Parent:=Pencere1;
MMemo.OnChange:=Form2.Memo1.OnChange; //Form2'yi örnek alarak yaratırım demiştim üstteki mesajımda, Form2nin içine bir de memo nesnesi koyduğumuzu varsayalım.
Tam emin değilim fakat burada Pencece1.Componenets[0] ve ya [1] MMemo nesnesine ulaştırır bizi. Tabi Memo gibi kullanmak için

Kod: Tümünü seç

(Pencere1.Components[0] as TMemo).Lines.Add('Kolay Gelsin.');
aynı zamanda minik bir for döngüsü ile de, hangi sırayla Create edildiğini bilmiyorsan nesnelerin, o nesneye ulaşabilirsin.
( Bu minik for döngüsünün benzerini(Form bulmak için olanını) de aşağıda CSunguray vermiş, teşekkürler.) :)
En son qamyoncu tarafından 13 Tem 2010 10:45 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Create Edilen Formlarda Farklı işlemler yapmak

Mesaj gönderen csunguray »

Bir kaç şekilde olabilir. Ama bana kalırsa kişilerin iletişim işlerini formun kendi içinde yap.

veya kişiye ait konuşma penceresini bulmak için.

Ana formda

Kod: Tümünü seç

function TFormAnaPencere.KisiPenceresiBul(BizimKod: Integer): TFormKonusma;
var 
  Sayac: Integer;
begin
  Result := nil;
  for Sayac := 0 to ComponentCount -1 do
  begin
    if Components[Sayac] is TFormKonusma do
    begin
      with Components[Sayac] as TFormKonusma do
      begin
        if KisiKodu = BizimKod then
        begin
          Result := Components[Sayac] as TFormKonusma;
          Break;
        end;
      end;
    end;
  end;
end;
Kullanımı:

Kod: Tümünü seç

procedure TFormAnaPencere.MesajEkle(BizimKod: Integer; Mesaj: String);
var
  Penceremiz: TFormKonusma;
begin
  Penceremiz := KisiPenceresiBul(BizimKod);
  if Penceremiz = nil then
  begin
    Penceremiz := TFormKonusma.Create(Self);
    Penceremiz.KisiKodu := BizimKod;
  en;
  Penceremiz.Show;
  Penceremiz.MemoMesajlar.Lines.Add(Mesaj);
end;
Böylece programın yarısı bitmiş oldu. Diğer yarısını da nasıl yazacaksın bilmiyorum.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Cevapla