Handle Numarası Vermek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Handle Numarası Vermek

Mesaj gönderen mcihad »

S.A arkadaşlar delphide yazdığım yeni bileşenlere handle numarasını nasıl verebilirim TGraphicControl sınıfından türetilen nesnelerin handle numarası olmuyorda
Şimdiden Teşekkürler
Bize iyilik yaraşır.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

AS.

Öncelikle doğru foruma taşıdım. Her grubun altında ne tür mesajlar atılabileceği yazıyor.

Handle sadece TwinControl sınıfında oluyor ve bu unique (tekil) bir sayı. Ne yapmak istediğini yazarsan daha detaylı bilgi verilebilir ama kafana göre bir numara verebilirsin. Grafik nesnelere handle vererek ulaşmayı düşünüyorsan, bildiğim kadarıyla bu mümkün değil.

Kolay gelsin.
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Mesaj gönderen mcihad »

Öncelikle özür dilerim

sonuçta ikiside TControl sınıfından geliyor Ama TWinControl Sınıfında Handle Numarası var TGraphicControl Sınıfında yok demekki vermek mümkün Controls Unitini inceledim ama handle numarasını nasıl verdiklerini anlamadım

tam olarak demek istediğim şu Buton nesnesinin handle numarası var ama Image nesnesinin handle numarası yok ben TImage nesnesinden yeni bir sınıf türetmek istiyorum ve bu sınıfın handle numarasıda olsun istiyorum nasıl olacak bu
Anlatabildim mi :wink:
Bize iyilik yaraşır.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Handle windows tarafından veriliyor. Bu unique numara sayesinde windows ve dolayısıyla biz pencereli kontrollere ulaşabiliyoruz.

TGraphicControl sınıfında zaten bu numaraya ihtiyacın yok. Niçin bir image nesnesinde Handle istiyorsun? Bunu açıklarsan biraz daha net anlaşılacak olay.

Kolay gelsin.
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Mesaj gönderen mcihad »

Öğrenmek istiyorum Admin abi bilgi yani
daha önce Image nesnesini WinAPI ile taşımak istemiştim
perform yada postmessage komutları Image Nesnesi için çalışmıyor Çünkü Handle numarası yoktur
Soruma cevap alabilirsem sevinirim
Bize iyilik yaraşır.
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Mesaj gönderen mcihad »

Cevap yok mu :cry:
Bize iyilik yaraşır.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

gozume carpan su oldu
TWinControl sınıfı CreateParams ve CreateHandle diye iki virtual metoda sahip
bunlar sayesinde pencere tipini windows a tanıtıp gecerli bir handle numarası alır
tabi is bu kadar basit olmamalı bence
bir windows programı yapı olarak WNDCLASS veri tipinin windowsa register edilmesi ile calısır. CreateWindow ile WNDCLASS ta belisttiginiz class ismine gore bir pencere yarattıgınızda windows ta size bir handle no verir(CreateWindow fonksiyonu donusu)
olay kısaca bu sekilde gelismekte
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

bu konular biraz detaylı ancak dilim döndüğünce yazmaya çalışıyım. Daha detaylı bilgiyi Delphi Help'te ve Ray konopka'nın Developing Custom Delphi Components isimli kitabında bulabilirsin.

* TGraphicControl : Kullanıcının etkileşimde bulunmadığı componentler için kullanılıyor : Label gibi. Handle olmadığı için daha az kaynak tüketiyor. Kullanıcı eğer etkileşimde bulunmayacaksa bunun tercih edilmesini tavsiye ediyorlar.

* TWinControl : Kullanıcının etkileşimde bulunduğu ekranda gözüken componentler için kullanılıyor. TEdit gibi.

buna göre :

* eğer handle'ı olan bir bileşen yapmak istiyorsan TWinControl veya daha alt bir sınıftan devralman gerekiyor. Bu durumda birçok şeyi kendin yapmak zorunda kalabilirsin. Delphi'de bu şekilde bir örnek var : TLabel ve TStaticText. TLabel : grafik bir component ve handle'ı yok, TstaticText'in handle'ı var. Bunların kodlarına bakmanda faydalı olabilir.

Son olarak : VCL kaynak kodu elinde varsa mutlaka incele. Bu konuda en büyük kaynaklardan biri bu kaynak kod :)

Kolay gelsin.
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Mesaj gönderen mcihad »

Soruma cevap alamadım yani :(
Bize iyilik yaraşır.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

sorunun cevabı : handle istiyorsan TWinControl sınıfından veya çoçuklarından bir sınıf gözüne kestirip sıfırdan yazacaksın componenti.

TImage'den veya TGraphicControl'daki herhangi bir sınıftan component türetip handle ekleyemezsin.

Kolay gelsin.
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Mesaj gönderen warder »

mcihad yazdı:Soruma cevap alamadım yani :(
Aslında çok net ve doyurucu cevaplar almışsınız. Ancak ısrar ettiğiniz konu programcının elinde olan birşey değil. Handle windows işletim sistemi tarafından atanan bir değer. Bu cevabı da zaten ilk mesajda almışsınız. Eğer bunda ısrar edecekseniz o zaman windows işletim sisteminin handle atadığı bileşenler kullanacak veya onlardan yararlanacaksınız. Bütün cevaplar bunu içeriyor zaten.
Bende ısrarınızı anlamadım. :?:
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Cevapla