Dragkind : dkDock
Drag mode : dmManual
ve şu kodla dock olayı başlıyor
If Button=mbleft Then
begin
(sender as trzlabel).BeginDrag(true);
end;
bu noktada ben programda bi işlem yapmadan önce herhangibir nesnenin dock olyında olup olmadığını kontrol edip,eğer dock görünümünde nesne varsa onu dkdock olayını sonlandırmak istiyorum...
- Kullanıcı bir nesneyi BeginDrag durumunda iken başka hangi unsur gerkçesiyle programın bunu sonlandırcak. Timer, ServerClient TCP tetikleme, Windows WM_ Mesajı vs. gibi üçüncü durum varsa bunu ifade eder misin ?
- Eğer bir tetik durumu varsa yapacağın işlem CancelDrag(); komutu vermek. Sorunun çözümü bu olmalı ?!
Hocam biraz karışık anlattım sanırım.
Form üzerinde kullandığım TrzLabel ve Tcxİmage nesneleri dockable yapılabiliyor yani fare ile form üzerinde yerleri değiştirilebiliyor.
Ben program kapanırken bu nesnelerin left ve top özelliklerini bi ini dosyasında saklıyorum.
Ancak eğer bu neslerden biri "Floatting" durumunda ise o nesnenin left ve top özelikleri 0,0 oluyor. ben bunu engellemek için 2 şey yapabilirim.
1.tüm nesnelerin Floating özelliklerini kontrol edip eğer True ise kullanıcıya uyarı ile bu durumu düzelttirmek (ama ben bunu tercih etmedim).
2.Tüm nesneleri kontrol ederek Floatıng durumunda olanları eski haline getirerek left top özelliklerinin kaydedilmesini sağlamak.(Left ve Top özelliklerini TcxProperties Store komponentine kod yazmadan yaptırıyorum)
kullandığım TcxPropertis store Komponenti floatıng durumunda olan nesnenin left ve top özellikerini 0 ,0 görüyor.O yüzden Floatıng durumundaki nesneyi eski haline getirmeliyim.(Bu arada Floatıng özelliği read only)
- Yapacağın şey basit, floating özelliği kalktığı her durumda bileşenlerin son durumlarını global değişkenlerde veya global bir liste / array vb. içeriğinde saklarsan, onclose olayında bişey kapatmaya ihtiyacın olmaz.
- Bu durumda kapanana kadar alınmış en son değerleri direkt kaydedersin.