delphi4arab منتديات دلفي للعرب
التعامل مع DBGrid بإستخدام زر الماوس الاوسط - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : التعامل مع DBGrid بإستخدام زر الماوس الاوسط (/showthread.php?tid=3028)

الصفحات: 1 2


التعامل مع DBGrid بإستخدام زر الماوس الاوسط - وليد - 24-04-2011

شكرا لك أخي kachwahed على التعديل لكن الكود لا يعمل مع tedit بهذا الشكل.
بالتوفيق


التعامل مع DBGrid بإستخدام زر الماوس الاوسط - abdelmalek - 25-04-2011

وجدت كود ولكن لا يجدي نفعا
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 ولم اجد عنه شيئا) ؟


التعامل مع DBGrid بإستخدام زر الماوس الاوسط - kachwahed - 25-04-2011

إقتباس :ماهو الحل علمنا اني استعمل مكون sdbgrid و الذي يحتوي على الحدث
أي إصدار، وأي نسخة دلفي تستخدم؟ لأجرب عندي...
إن أمكن، إفتح مشروع جديد وضع ما يجب فيه، ثم أرفقه لنعمل عليه كمثال



التعامل مع DBGrid بإستخدام زر الماوس الاوسط - Lam.Abdeldjalil - 25-04-2011

السلام عليكم

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

لتحقيق غرضك إستعمل الحدث AfterScroll للـ DataSet المستعمل
مثال
كود :
procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet); begin ... end;
بالتوفيق


التعامل مع DBGrid بإستخدام زر الماوس الاوسط - abdelmalek - 25-04-2011

الله اكبر
بارك الله فيك وفي والديك
نجحت الفكرة حلت المشكلة
سلامي وحبي لك أستادي عبد الجليل