التعامل مع DBGrid بإستخدام زر الماوس الاوسط
#11
شكرا لك أخي kachwahed على التعديل لكن الكود لا يعمل مع tedit بهذا الشكل.
بالتوفيق
الرد
#12
وجدت كود ولكن لا يجدي نفعا
PHP كود :
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. 

ماهو الحل علمنا اني استعمل مكون sdbgrid و الذي يحتوي على الحدث
PHP كود :
procedure TStockFrm.sDBGrid1MouseWheel(Sender: TObject; Shift: TShiftState;
  
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin

end
; 

كيف استفيد من هذا الحدث (دهبت الى help ولم اجد عنه شيئا) ؟
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#13
إقتباس :ماهو الحل علمنا اني استعمل مكون sdbgrid و الذي يحتوي على الحدث
أي إصدار، وأي نسخة دلفي تستخدم؟ لأجرب عندي...
إن أمكن، إفتح مشروع جديد وضع ما يجب فيه، ثم أرفقه لنعمل عليه كمثال
الرد
#14
السلام عليكم

قمت بتتبع الحدث MouseWheel الخاص بالـ DBGrid فوجدت أنه يتم تنفيذ الكود الموجود في الحدث قبل تحريك السجل Next / Prior)
ربما لأنه حدث ONMouseWheel و ليس AFTERMouseWheel ؟ ـ

لتحقيق غرضك إستعمل الحدث AfterScroll للـ DataSet المستعمل
مثال
كود :
procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet); begin ... end;
بالتوفيق
الرد
#15
الله اكبر
بارك الله فيك وفي والديك
نجحت الفكرة حلت المشكلة
سلامي وحبي لك أستادي عبد الجليل
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم