TPageControl içinde birden fazla tab kullanıyorum.
Mouse ile aktif tab üzerindeyken mouse tekerini çevirdiğimde diğer tablara geçmek istiyorum.
Nasıl yapabilirim?
TPageControl Hk.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: TPageControl Hk.
Formun OnMouseWheelDown ve OnMouseWheelUp olaylarını kontrol ederek yapabilirsin. Bu olayların içinde Cursor hangi bileşen üzerinde kontrol ederek istediğini yaparsın. Örneğin OnMouseWheelDown olayında aşağıdaki gibi birşey yapabilirsin. Tabi aynı işlemi OnMouseWheelUp için de yapman gerekecek
Kod: Tümünü seç
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
var
Control: TControl;
begin
Control := FindVCLWindow(MousePos);
if Assigned(Control) then
begin
//burada Control.Name 'i kullanarak hangi bileşen üzerinde mouse var kontrol edersin.
//Daha sonra PageControl'ün bir sonraki sayfasını gösterebilirsin.
end;
Handled := True;
end;
There's no place like 127.0.0.1
Re: TPageControl Hk.
Merhaba,
Bu işi iki farklı yol ile çözebiliriz :
A. Eğer bir kaç tane PageControl nesnemiz varsa ve fazla uğraşmak istemiyorsak; form üzerinde kodlama yaparak,
B. Eğer bir çok PageControl nesnemiz varsa; fare tekerleğini anlayabilen yeni bir PageControl bileşeni oluşturarak.
A için, PageControl ün bulunduğu formda OnMouseWheelDown ve OnMouseWheelUp olaylarını kullanabiliriz (Delphi 6 ve üstü)(1*).
B için ise, daha sonra müsait bir zamanda yazarım. Ama vaktimiz yoksa, kaynaklar şunlardır:
http://delphi.about.com/od/delphitips20 ... ssages.htm
________________________________________________
(1*): Geliştirme ortamımızda Wheel mesajları yoksa, biçiminde işlev tanımı ile elde edebiliriz (#define WM_MOUSEWHEEL 0x020A).
İşlev gövdesini şöyle kodlarsak, tekerleği kendimizden uzağa doğru çevirdiğimizde form başlığımız 120 değerini ve tekerleği kendimize çevirdiğimizde -120 değerini alır. İşte şimdi işlevi şu şekilde değiştirebiliriz:
http://msdn.microsoft.com/en-us/library ... s.85).aspx
Bu işi iki farklı yol ile çözebiliriz :
A. Eğer bir kaç tane PageControl nesnemiz varsa ve fazla uğraşmak istemiyorsak; form üzerinde kodlama yaparak,
B. Eğer bir çok PageControl nesnemiz varsa; fare tekerleğini anlayabilen yeni bir PageControl bileşeni oluşturarak.
A için, PageControl ün bulunduğu formda OnMouseWheelDown ve OnMouseWheelUp olaylarını kullanabiliriz (Delphi 6 ve üstü)(1*).
B için ise, daha sonra müsait bir zamanda yazarım. Ama vaktimiz yoksa, kaynaklar şunlardır:
http://delphi.about.com/od/delphitips20 ... ssages.htm
________________________________________________
(1*): Geliştirme ortamımızda Wheel mesajları yoksa,
Kod: Tümünü seç
procedure OnWheelMessage(var Message :TMessage); message WM_MOUSEWHEEL;
İşlev gövdesini şöyle kodlarsak,
Kod: Tümünü seç
procedure TForm1.OnWheelMessage(var Message :TMessage);
begin
Caption :=Caption+Format(' %d', [ ShortInt(Message.WParam and $FFFF0000 shr 16) ]);
end;
Kod: Tümünü seç
procedure TForm1.OnWheelMessage(var Message :TMessage);
begin
if ShortInt(Message.WParam and $FFFF0000 shr 16) = 120 then begin
with PageControl1 do
if ActivePageIndex<PageCount-1 then
ActivePageIndex :=ActivePageIndex+1
else
ActivePageIndex :=0;
end else begin
with PageControl1 do
if ActivePageIndex>0 then
ActivePageIndex :=ActivePageIndex-1
else
ActivePageIndex :=PageCount-1;
end;
end;
Ömür Ölmez
Re: TPageControl Hk.
Ekranımda 1 pagecontrol var içinde 6 tab var.
Ancak taların içinde grid bileşeni mevcut.
Gridde iken tekerleği çevirdiğimde tablar mı hareket eder yoksa gridde 2. 3. satırlara doğrumu ilerler?
Ancak taların içinde grid bileşeni mevcut.
Gridde iken tekerleği çevirdiğimde tablar mı hareket eder yoksa gridde 2. 3. satırlara doğrumu ilerler?
Re: TPageControl Hk.
Elinizde hazır böyle bir tasarım varken bunu denemeniz çok kolay aslında. Deneyip kontrol edin, hangisi hareket ediyor görün.aliplane yazdı:Ekranımda 1 pagecontrol var içinde 6 tab var.
Ancak taların içinde grid bileşeni mevcut.
Gridde iken tekerleği çevirdiğimde tablar mı hareket eder yoksa gridde 2. 3. satırlara doğrumu ilerler?
Sadece gridler üzerindeyken fare tekerleğinin kullanılmasıyla tab'lar arası geçiş yapacaksanız Grid'lerin OnMouseWheelUp ve OnMouseWheelDown olaylarına yukarıda anlatılanlardan yola çıkarak kod yazdığınızda amacınıza kolayca ulaşabilirsiniz.
There's no place like 127.0.0.1
Re: TPageControl Hk.
Tamamdır teşekkürler.