Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
vedatkaba
Kıdemli Üye
Mesajlar: 866 Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE
Mesaj
gönderen vedatkaba » 07 Haz 2005 02:47
Herkese merhabalar herkese kolay gelsin..Biraz araştırma biraz soruşturmadan sonra böle bir şey meydana çıktı.
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBTables;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Table1: TTable;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure DBGridMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
TWheelDBGrid = class(TDBGrid)
public
property OnMouseWheel;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
TWheelDBGrid(DBGrid1).OnMouseWheel := DBGridMouseWheel;
end;
function GetNumScrollLines: Integer;
begin
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @Result, 0);
end;
procedure TForm1.DBGridMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
Direction: Shortint;
begin
Direction := 1;
if WheelDelta = 0 then
Exit
else if WheelDelta > 0 then
Direction := -1;
with TDBGrid(Sender) do
begin
if Assigned(DataSource) and Assigned(DataSource.DataSet) then
DataSource.DataSet.MoveBy(Direction * GetNumScrollLines);
Invalidate;
end;
end;
end.
Kolay gelsin arkadaşlar........
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
pro_imaj
Kıdemli Üye
Mesajlar: 1364 Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan
Mesaj
gönderen pro_imaj » 07 Haz 2005 04:41
Merhaba
Üstad makalen için çok tşk ederim.
Ama keşke birkaç satırda açıklama yazsan daha iyi olurdu ama yinede ellerine sağlık.
Çalışmalarında başarılar.
Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Ancestor
Üye
Mesajlar: 188 Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç
Mesaj
gönderen Ancestor » 07 Haz 2005 05:21
çok teşekkürler, birkaç haftadır bunu arıyordum. Elinize sağlık işe yaradı..
Ancestor
Üye
Mesajlar: 188 Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç
Mesaj
gönderen Ancestor » 07 Haz 2005 05:50
Ama aynı kodlama değilki, ikiside farklı bir şekilde yapılmış.
Birde makale yada foruma açılan başlıklar içeriğini en iyi anlatır şekilde olursa güzel olur. Birkaç haftadır bu kodları arıyordum ama varmış.. Başlığıda : dbgrid component ( srdbgrid) ....
Biraz daha içeriği anlatır şekilde yazarsak benim gibi yeni başlayanlar daha rahat aradıklarını bulurlar.
selimr
Üye
Mesajlar: 556 Kayıt: 16 Eki 2003 02:07
Mesaj
gönderen selimr » 08 Haz 2005 10:59
normal db gridde mouse orta tuşu sadece ekranda görünen kısımda hareket ediyor ve aktif kayıt değişmiyor..
bende daha önce bana lazım olduğu için böyle bir kompenent yazdım..
bunu bir kompenent olarak kurarsan özelliklerini zaten göreceksin..
vedatkaba
Kıdemli Üye
Mesajlar: 866 Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE
Mesaj
gönderen vedatkaba » 08 Haz 2005 12:06
Arkadaşlar normaldede mouse orta tuşu kayıtlar üzerinde kaydırma yapıyor.Burdaki farklılık dbgrid içindeki scrollbarı hareket etttirme.Normalinde dbgrid içinde ki görünen kayıt bittiği zaman kaydırma yapmaz scroll hareket etmez.Ama bu kodla hareket ettiğini ve istediğiniz şekilde kayıtlar içinde dolaştığınızı göreceksiniz.
Selimr kardeşim senin makaleni ve deneme şansım olmadı.Ama anladığım kadarı ile bileşen.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
selimr
Üye
Mesajlar: 556 Kayıt: 16 Eki 2003 02:07
Mesaj
gönderen selimr » 08 Haz 2005 12:21
evet bileşen..
normal gridde görünen kısım bitince kaydırma yapmaz.. görünen kısımda yaptığı kaydırmadada aktif kayda konumlanmaz..
benim bileşende görünen kısım değil tümünde bu işlem yapılıyor ve aktif kayıta konumlanabiliyor,
bunun dışında satırlarıda renklendirebiliyorsunuz..
sadettinpolat
Moderator
Mesajlar: 2131 Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:
Mesaj
gönderen sadettinpolat » 31 Ağu 2005 02:52
bu da teamb den olsun
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, DBTables;
type
TForm1 = class(TForm)
Table1: TTable;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
procedure GridMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
end;
type
TGridCracker = class(TDBGrid)
public
property OnMouseWheel;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.GridMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
Var
code: Cardinal;
begin
Handled := true;
If WheelDelta > 0 Then // you may use > 0 according to taste
code := VK_UP
Else
code := VK_DOWN;
(sender as TWincontrol).Perform( WM_KEYDOWN, code, 0 );
(sender as TWincontrol).Perform( WM_KEYUP, code, 0 );
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
TGridCracker(dbgrid1).OnMouseWheel := GridMousewheel;
end;
end.
Peter Below (TeamB)
Use the newsgroup archives :
http://www.mers.com/searchsite.html
http://www.tamaracka.com/search.htm
http://groups.google.com
http://www.prolix.be