PDA

View Full Version : قراردادن یک یا چند دکمه در هر کدام از رکوردهای DBgird



آیدا رضایی
شنبه 08 بهمن 1384, 20:44 عصر
دوستان چطور میشه در Dbgrid واسه هر رکورد یک فیلد اضافه کرد که در هرکدوم از اونها مثلا دکمه ای برای حذف اون رکورد و دیگر اعمال باشه.

shayan_delphi
شنبه 08 بهمن 1384, 21:58 عصر
سلام
از Popup Menu استفاده کنید تا با کلیک راست روی هر رکورد بتونید اعمال مورد نظر را انجام بدید

آیدا رضایی
شنبه 08 بهمن 1384, 23:11 عصر
من میخوام واسه هر رکورد یه فیلد جداگانه داشته باشم و در اون فیلد Button های من نمایش داده بشن (مثلا SpeedButton که هم عکس بگیره و کوچیک و جمع و جور باشه) و کاربر با کلیک روی اونا عمل مورد نظر رو انجام بده.

vcldeveloper
یک شنبه 09 بهمن 1384, 01:55 صبح
می تونید یه ستون اضافی به DBGrid اضافه کنید و یه Button در اون رسم کنید. در OnClick اون Button هم باید کد مربوط به تغییرات در رکورد جاری را بنویسید. فکر کنم قبلا در سایت در مورد نمایش سایر کنترل ها در DBGrid بحث شده.

آیدا رضایی
یک شنبه 09 بهمن 1384, 21:05 عصر
آقای کشاورز.
میشه لطف کنید یک مثال در این مورد برای من بزنید ؟.
ممنون میشم .

vcldeveloper
چهارشنبه 12 بهمن 1384, 11:21 صبح
سلام،
می بخشید با تاخیر جواب میدم...
برای DBGrid مورد نظر یک ستون جدید تعریف بکنید مقدار ActionColIndex در کد زیر را بر روی شماره Index اون ستون تنظیم کنید:


const
ActionColIndex = 3;
type
THackedDBGrid = class(TDBGrid);
procedure TForm1.FormCreate(Sender: TObject);
begin
Button := TButton.Create(Self);
with Button do
begin
Parent := self;
Visible := False;
Caption := 'Do Action';
TabStop := True;
OnClick := GridActionBtnClick;
end;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
GridCurrentRow,
DbCurrentRow : integer;
begin
GridCurrentRow := THackedDBGrid(Sender).Row;
DbCurrentRow := AdoTable1.RecNo;
if DataCol = ActionColIndex then
if GridCurrentRow = DbCurrentRow then
begin
with Button do
begin
Left := Rect.Left + DBGrid1.Left + 2;
Top := Rect.Top + DBGrid1.top + 2;
Height := Rect.Bottom - Rect.Top;
Width := Rect.Right - Rect.Left;
Visible := True;
end;
end;
end;
procedure TForm1.GridActionBtnClick(Sender: TObject);
begin
ShowMessage('Button is clicked');
end;