Cannot assign TFont to a TFont
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Cannot assign TFont to a TFont
selamu aleykum.
arkadaslar hepinize kolay gelsin.
bi konuda rahatsiz etmek istiyorum.
bir MDI proje gelistirmeye calisiyorum.
MDI cocuklar bir dll de bariniyor ve yine DLL üzerinde olusturuluyor.
Dll'de olusturulan form'a VCL bilesen attigimda, Cannot assign TFont to a TFont seklinde hata mesaji aliyorum.
Bir kac gün google'in kapasitesini zorladim. karsilastigim sonuc su.
1) BPL dosyalarini paylasmam gerekiyormus. (bundan kacinmaya calisiyorum, neden derseniz, tamamen duygusal)
2) DLL ve Application olusturulurken her biri farkli ControlAtom kullandiklari icin, her iki dosya bellekte farkli bir adreste bariniyorlarmis. bu nedenle iki farkli applikasyon olarak görülüyor ve birinci applikasyondan ikinci applikasyona assign olayini kullanamiyormus.
ikinci secenege alternatif olarak bir care sunmuslar. Controls.pas dosyasinin icinde oynama yapip, applikasyon icin olusturulan atom'un pointer bilgisini alip, dll dosyasinin atomunu applikasyondan gelen atom ile degistiriyorum.
internette verilen bilgiye göre calismasi gerekiyor, fakat kodlari tamamen kopyalamis olmama ragmen bu hatayi almaya devam ediyorum.
aranizda, dll den MDIChild olusturup, icerisinde örnegin cxGrid veya benzeri VCL nesnesi kullanipta bu hatasi almamis arkadaslar var mi?
fikir önerebilirler mi?
simdi den tesekkür ederim.
selam ve dua ile...
arkadaslar hepinize kolay gelsin.
bi konuda rahatsiz etmek istiyorum.
bir MDI proje gelistirmeye calisiyorum.
MDI cocuklar bir dll de bariniyor ve yine DLL üzerinde olusturuluyor.
Dll'de olusturulan form'a VCL bilesen attigimda, Cannot assign TFont to a TFont seklinde hata mesaji aliyorum.
Bir kac gün google'in kapasitesini zorladim. karsilastigim sonuc su.
1) BPL dosyalarini paylasmam gerekiyormus. (bundan kacinmaya calisiyorum, neden derseniz, tamamen duygusal)
2) DLL ve Application olusturulurken her biri farkli ControlAtom kullandiklari icin, her iki dosya bellekte farkli bir adreste bariniyorlarmis. bu nedenle iki farkli applikasyon olarak görülüyor ve birinci applikasyondan ikinci applikasyona assign olayini kullanamiyormus.
ikinci secenege alternatif olarak bir care sunmuslar. Controls.pas dosyasinin icinde oynama yapip, applikasyon icin olusturulan atom'un pointer bilgisini alip, dll dosyasinin atomunu applikasyondan gelen atom ile degistiriyorum.
internette verilen bilgiye göre calismasi gerekiyor, fakat kodlari tamamen kopyalamis olmama ragmen bu hatayi almaya devam ediyorum.
aranizda, dll den MDIChild olusturup, icerisinde örnegin cxGrid veya benzeri VCL nesnesi kullanipta bu hatasi almamis arkadaslar var mi?
fikir önerebilirler mi?
simdi den tesekkür ederim.
selam ve dua ile...
kıdemsiz üye
Re: Cannot assign TFont to a TFont
DLL'den MDI child form oluştururken, DLL'de form create etmeden önce uygulamanızın ve ana formun (MDI form) handle bilgilerini DLL'e parametre olarak göndermelisiniz. DLL içinde; form create'te parametre olarak gelen Application.Handle'ı ve MDI Child formun ParentWindow'unu belirtmek için de parametre olarak gelen ana formun handle'ını kullanmalısınız.
Bu şekilde yaptığınızda sorunsuz çalışması lazım.
Bu şekilde yaptığınızda sorunsuz çalışması lazım.
There's no place like 127.0.0.1
Re: Cannot assign TFont to a TFont
abicim cevabin icin tesekkür ederim.
ben formu bahsettigin sekilde olusturuyorum. form olusturmakta sorun yok.
hersey cok güzel calisiyor.
ta ki, üzerinde bir grid atincaya kadar.
sorunum formu olusturmakta degil, olusturdugum formun icinde vcl bilesenlerini kullanmakta.
ben formu bahsettigin sekilde olusturuyorum. form olusturmakta sorun yok.
hersey cok güzel calisiyor.
ta ki, üzerinde bir grid atincaya kadar.
sorunum formu olusturmakta degil, olusturdugum formun icinde vcl bilesenlerini kullanmakta.
kıdemsiz üye
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Cannot assign TFont to a TFont
Kodlar arası versiyon uyuşmazlığı olabilir. Sizin veya .dll içerisindeki VCL içerisinden yapılan en küçük bir değişiklik sorun çıkaracaktır. Hatta farklı delphi versiyonlarında derleme oluyorsa zaten hiç o şekilde kullanmaya niyetlenmeyin bile
.

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Cannot assign TFont to a TFont
abicim cevabin icin tesekkür ederim.
dll'yi de, applikasyonuda ayni programda, ayni bilgisayarda, ayni bilesenler ile compile ediyorum.
yani versiyonlar veyahut programlar arasinda hic bir fark yok.
yukarida bahsettigim gibi, dll ve applikasyonun iki farkli bellek adresinde tutulmasindan dolayi, programlar arasi assign gecisi yapilamiyormus.
aslinda font'tan kaynaklanan bir durum degil bu, cünkü font ile hic bir islem yapmiyorum. kodlar bos. yalnizca bos bir formun üzerine grid atiyorum, hata vermeye basliyor.
google'da baktim bir cok kisinin basina gelmis bu olay.
fakat malesef her hangi bir cözüm bulunamamis.
microsoft bir cok formu dll lerde tutuyor ve gerektiginde dll den yükleyerek formu kullaniyor.
bu formlarin üzerlerinde yine vcl bilesenleri mevcut.
yani bu isin olmamasi icin hic bir neden yok.
dll'yi de, applikasyonuda ayni programda, ayni bilgisayarda, ayni bilesenler ile compile ediyorum.
yani versiyonlar veyahut programlar arasinda hic bir fark yok.
yukarida bahsettigim gibi, dll ve applikasyonun iki farkli bellek adresinde tutulmasindan dolayi, programlar arasi assign gecisi yapilamiyormus.
aslinda font'tan kaynaklanan bir durum degil bu, cünkü font ile hic bir islem yapmiyorum. kodlar bos. yalnizca bos bir formun üzerine grid atiyorum, hata vermeye basliyor.
google'da baktim bir cok kisinin basina gelmis bu olay.
fakat malesef her hangi bir cözüm bulunamamis.
microsoft bir cok formu dll lerde tutuyor ve gerektiginde dll den yükleyerek formu kullaniyor.
bu formlarin üzerlerinde yine vcl bilesenleri mevcut.
yani bu isin olmamasi icin hic bir neden yok.
kıdemsiz üye
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
Re: Cannot assign TFont to a TFont
Sadece cxGrid atınca mı oluyor? Basit bir Label ya da Edit attığında da oluyor mu aynı şey? Kesin emin olmamakla birlikte bu bir Parent sorunu olmalı şeklinde değerlendiriyorum.
Re: Cannot assign TFont to a TFont
abi edit ve label bilesenleri attigimda sorun yok.
cxgrid attigimda eger ki, kolonun genisligi kolon basligindan dar ise, yani kolon basliginin yarisi görülüyor ise bu hatayi veriyor.
kolonlari genis tuttugumda hata yok.
birde bu hatayi ancak kolonun üzerine fare ile gelirsem veriyor.
fare ile kolona gelmezsen hic hata yok.
cikamadim isin icinden.
formda cxgrid kullanmak zorundayim.
cxgrid attigimda eger ki, kolonun genisligi kolon basligindan dar ise, yani kolon basliginin yarisi görülüyor ise bu hatayi veriyor.
kolonlari genis tuttugumda hata yok.
birde bu hatayi ancak kolonun üzerine fare ile gelirsem veriyor.
fare ile kolona gelmezsen hic hata yok.
cikamadim isin icinden.
formda cxgrid kullanmak zorundayim.
kıdemsiz üye
Re: Cannot assign TFont to a TFont
Delphi kaynak kodunu bu şekilde değiştirip yeniden derle sorunun düzelmesi gerekiyor.
In this you have to edit graphics.pas found in \source\vcl.
First find the code below
procedure TCanvas.SetFont(Value: TFont);
begin
FFont.Assign(Value);
end;
and add a try..except statement like so
procedure TCanvas.SetFont(Value: TFont);
begin
try
FFont.Assign(Value);
except
on Exception do;
end;
end;
then recompile.
Remember to backup the original graphics.pas
Re: Cannot assign TFont to a TFont
malesef abicim.
bahsettigin kod'u internetten bulmustum.
denedim ama sonuc alamadim.
bahsettigin kod'u internetten bulmustum.
denedim ama sonuc alamadim.
kıdemsiz üye