TPageControl Hk.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
aliplane
Üye
Mesajlar: 30
Kayıt: 06 Eki 2008 03:32

TPageControl Hk.

Mesaj gönderen aliplane »

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?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: TPageControl Hk.

Mesaj gönderen SimaWB »

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
omurolmez
Üye
Mesajlar: 187
Kayıt: 31 Eki 2012 11:41

Re: TPageControl Hk.

Mesaj gönderen omurolmez »

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,

Kod: Tümünü seç

procedure OnWheelMessage(var Message :TMessage); message WM_MOUSEWHEEL;
biçiminde işlev tanımı ile elde edebiliriz (#define WM_MOUSEWHEEL 0x020A).
İş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;
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:

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;
http://msdn.microsoft.com/en-us/library ... s.85).aspx
Ömür Ölmez
aliplane
Üye
Mesajlar: 30
Kayıt: 06 Eki 2008 03:32

Re: TPageControl Hk.

Mesaj gönderen aliplane »

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?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: TPageControl Hk.

Mesaj gönderen SimaWB »

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?
Elinizde hazır böyle bir tasarım varken bunu denemeniz çok kolay aslında. Deneyip kontrol edin, hangisi hareket ediyor görün.
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
aliplane
Üye
Mesajlar: 30
Kayıt: 06 Eki 2008 03:32

Re: TPageControl Hk.

Mesaj gönderen aliplane »

Tamamdır teşekkürler.
Cevapla