(05-03-2019, Saat: 15:39)mustafaozpinar Adlı Kullanıcıdan Alıntı: İki unit'in birbirini Interface kısmında Uses ile kullanmasını sağlayamazsınız. Buna circular cross ref. hatası verir. Bunun yerine birinde diğerini Interface'de uses'e koyar, diğerini ise Implementation'da uses'e koyarsınız, çalışır.
Organizayon şu şekilde olacaktır.
Kod: (Select All)
Unit Unit1;
Interface
uses Unit2;
TMyClass1 = class
public
abc : TMyClass2;
end;
Implementation
...
end.Eğer ikisi de birbirine Interface kısmında ihtiyaç duyuyorsa tasarımınızı gözden geçirin ve ikisinin de birbirine görmesini gerektiren kısımları ayrı bir Unit'e alıp diğer unit'lerden bunu kullanın derim.Kod: (Select All)
Unit Unit2;
Interface
Uses .... ;
TMyClass2 = class
public
procedure xyz;
end;
Implementation
Uses Unit1;
procedure xyz;
var mc1 : TMyClass1;
begin
mc1 := TMyClass1.Create;
...
end;
....
end.
Bu öneriniz bile ehveni şer bence. İki unit'in mümkünse ne interface'inden ne implementation'ından bir birini çağırmaması çok daha sağlıklı olacaktır.
(05-03-2019, Saat: 15:15)salih Adlı Kullanıcıdan Alıntı:(04-03-2019, Saat: 15:24)edo Adlı Kullanıcıdan Alıntı: Yaptığınız işlem ne yazık ki doğru değil. İki ekranın bir birine bağlanması, referans vermesi (cross reference) sorunlu bir işlemdir. Bu sorunu nasıl çözebileceğinizi düşünseniz daha doğru olur
Formu göstermeden Runtime'da create edip kullanmak doğru olur mu? Eğer doğru değilse bu ihtiyacı karşılamanın genel bir yolu var mıdır? Yani başka formdaki Componentleri kullanmanın bir standardı yok mudur?
Ne yapmaya çalıştığınızı daha net olarak yazarsanız her şeyin bir çözümü illaki vardır Ayrıca mümkün mertebe metod'lara bileşen (component) değil veri ya da sınıf (class) geçin.