projenin çalıştırıldığında oluşturulan bir nesneye hükmetmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
tecnic
Üye
Mesajlar: 29
Kayıt: 14 Tem 2005 01:47

projenin çalıştırıldığında oluşturulan bir nesneye hükmetmek

Mesaj gönderen tecnic »

merhaba arkadaşlar önceki konu başlığında yeni bir tabsheet oluşturmayı sormuştum bununla birlikte bir sorun daha ortaya çıktı oda şu şekilde ben o tabsheet içerisinde bir tanede richedit oluşturuyorum ve bu richeditte bir değişiklik olduğnu nasıl gözleyebilirim
richediti ve tabsheet'i bu şekilde oluşturyorum

[code]
procedure TForm1.deneme1Click(Sender: TObject);
var YeniTabsheet: TTabSheet;
metin: TRichEdit;
begin
YeniTabsheet := TTabSheet.Create(Self);
metin:= TRichEdit.Create(self);
with metin do
begin
name:='RichEdit'+inttostr(sayfa+1);
parent:= YeniTabsheet;
metin.Align := alclient;
end;
with YeniTabsheet do
begin
Name := 'ad'+inttostr(sayfa);
Parent := PageControl1;
PageControl := PageControl1;
Caption := 'Sayfa '+IntToStr(sayfa+1);
end;
sayfa:=sayfa+1;// global bi değişken olan sayfa ile nesnelerin sonundaki rakamları kontrol ediyorum
end;[/code][/quote]
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

RichEdit i oluşturduktan sonra, daha önce yazmış olduğun aşağıdakine benzer bir procedur u atayabilirsin.

Kod: Tümünü seç

procedure TForm1.RichEdit1Change(Sender: TObject);
begin
  // 
end;

  metin:= TRichEdit.Create(self);
  with metin do
  begin
    name:='RichEdit'+inttostr(sayfa+1);
    parent:= YeniTabsheet;
    metin.Align := alclient;
    OnChange := RichEdit1Change;
  end; 
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
tecnic
Üye
Mesajlar: 29
Kayıt: 14 Tem 2005 01:47

Mesaj gönderen tecnic »

sevgili hocam bu procedure'ü yani richedit'in change olayını kullanmak için bir adet richedit eklemeden ulaşamıyorum tam olarak anlattığınız konuya o halde ben değişken olarak tuttuğum ve kendim create ettiğim bir nesneye çalışma esnasında nasıl ulaşabilirm yani örnek olarak metin:trichedit olarak tanımladığım bir metin nesnesi create ettikten sonra bu nesnenin on change olayına nasıl erişebilirim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Daha önce yazmış olduğun procedure u nesneni oluşturduktan sonra, nesnenin ilgili olay/event ına atayacaksın :wink:

Verdiğim örneği denedin mi :?:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
tecnic
Üye
Mesajlar: 29
Kayıt: 14 Tem 2005 01:47

Mesaj gönderen tecnic »

ewet bu örnği denedim yanlış yaptığım bi yer var belkide metin'in on change olayına ilgili kodu yazıyorum fakat

procedure TForm1.RichEdit1Change(Sender: TObject);
begin
//
end;

bu procedure kullanıldığında richedit1change diye bir değişkenin tanımlı olmadığı hatasını alıyorum procedure tanımlarkende alamdığım bir hata veriyo
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

procedure RichEdit1Change(Sender: TObject); i TForm class ının altında da tanımlamıştın değil mi?
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
tecnic
Üye
Mesajlar: 29
Kayıt: 14 Tem 2005 01:47

Mesaj gönderen tecnic »

diğer procedure tanımlamalrını altında yani type başlığı altında tanımladım private public olan yerde değil yani benim sormak istediğim formda bir richedit yokken bu procedure çalışabilirmi
tecnic
Üye
Mesajlar: 29
Kayıt: 14 Tem 2005 01:47

Mesaj gönderen tecnic »

tam olarak istediğim şu diyelimki şimdi bir adet pagecontrol üzerinde birkaçtane tabsheet ve bu tabsheetlerin heribiri için bir adet richedit oluşturuyorum ve bu tabsheet üzerindeki richeditlerden hangisi değişirse o an bir procedure'ün devreye girip richedit üzerinde bazı değişiklikler yapmasını istiyorum
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Böyle bir RichEdit1Change yada adı her ne ise procedure nın yazılması tasarım aşamasında form üzerinde herhangi bir RichEdit1 bileşeninin olmasını gerektirmez. Çalışma anında/run-time de oluşturduğun nesneler için böyle bir procedur u ilgili olay/event a atayıp kullanabilirsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
tecnic
Üye
Mesajlar: 29
Kayıt: 14 Tem 2005 01:47

Mesaj gönderen tecnic »

tamam dediğinizi anladım fkat onchangeTE richedit1change procedure'ünü çağırdım zaman

Incompatible types: 'method pointer and regular procedure' diye bi hata alıyorum procedure tanımlamasını hiçbiryerde yapmadan bu şekilde bir hata alıyorum type'ın altında
procedure RichEdit1Change(Sender: TObject); şeklinde bir tanımlama yaptığımda ise

Unsatisfied forward or external declaration: 'TForm1.RichEdit1Change' şeklinde bir hata alıyorum procedure tanımlamalsını diğer procdure tanımlamalarının olduğu yerde yapıyorum
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

private ın içinde yaptığın

Kod: Tümünü seç

procedure RichEdit1Change(Sender: TObject);
tanımlamadan sonra;

Kod: Tümünü seç

procedure TForm1.RichEdit1Change(Sender: TObject);
begin
//... kodlar
end;
bu şekilde de procedure u yazmalısın. TForm1 yerine formun adı ne ise. Yani diğer procedure lerin nasıl başlıyor ise öyle yazmalısın..
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
tecnic
Üye
Mesajlar: 29
Kayıt: 14 Tem 2005 01:47

Mesaj gönderen tecnic »

yardımlarınız için çok teşekkür ediyroum
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Sorun çözüldü mü?
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 »

sap olun hocam ben çözdüm....
Siz hayal edin...Biz yapalım TuannaSoft...
Cevapla