delphi4arab منتديات دلفي للعرب

نسخة كاملة : التعامل مع DBGrid بإستخدام زر الماوس الاوسط
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
شكرا لك أخي kachwahed على التعديل لكن الكود لا يعمل مع tedit بهذا الشكل.
بالتوفيق
وجدت كود ولكن لا يجدي نفعا
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 ولم اجد عنه شيئا) ؟
إقتباس :ماهو الحل علمنا اني استعمل مكون sdbgrid و الذي يحتوي على الحدث
أي إصدار، وأي نسخة دلفي تستخدم؟ لأجرب عندي...
إن أمكن، إفتح مشروع جديد وضع ما يجب فيه، ثم أرفقه لنعمل عليه كمثال
السلام عليكم

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

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