PDA

View Full Version : dbgrid



farzad_az_shiraz
دوشنبه 10 دی 1386, 08:45 صبح
سلام من یه dbgrid دارم و می خوام وقتی روی هر فیلدش کلیک میکنم جدولم بر اساس اون فیلد مرتب بشه.ممنون میشم کد مربوطه را بهم بدید.
در ضمن یه edit هم پایین صفحه هست که وقتی جدول مثلا بر اساس نام سرت هست این edit هم بر اساس نام سرچ می کنه.
ممنون از همگی

m-khorsandi
دوشنبه 10 دی 1386, 10:52 صبح
از چه کامپوننتی برای اتصال به جدول استفاده میکنی؟

farzad_az_shiraz
دوشنبه 10 دی 1386, 14:28 عصر
سلام من از adoquery استفاده میکنم.

m-khorsandi
دوشنبه 10 دی 1386, 15:12 عصر
از ADOQuery.Sort برای سورت کردن و از رویداد OnTitleClick برای کلیک روی عنوان فیلدهات استفاده کن.

farzad_az_shiraz
دوشنبه 10 دی 1386, 16:12 عصر
ممنون میشه یه کم کاملتر بگی چون من تا حالا با adoquery.sort کار نکردم. ممنون میشم.

m-khorsandi
دوشنبه 10 دی 1386, 16:15 عصر
ADOQuery.Sort := 'FullName '

farzad_az_shiraz
دوشنبه 10 دی 1386, 16:40 عصر
سلام ممنون ولی این دستوری که شما دادید فقط میشه سرت بر اساس یه فیلد کرد در ضمن من می خوام وقتی روی هر فیلدی کلیک میکنم سرتم بر اساس اون فیلد باشه.
یعنی اینکه عنوان هر فیلد به صورت کلید در میاد و با فشردن کلید عمل سرت انجام میشه.

SYNDROME
دوشنبه 10 دی 1386, 23:33 عصر
ولی این دستوری که شما دادید فقط میشه سرت بر اساس یه فیلد کرد


ADO_Sort.Sort := 'Field , Field2 '



در ضمن من می خوام وقتی روی هر فیلدی کلیک میکنم سرتم بر اساس اون فیلد باشه.
یعنی اینکه عنوان هر فیلد به صورت کلید در میاد و با فشردن کلید عمل سرت انجام میشه.
در Ontitleمربوط به DBGrid بنویس.


ADO.Sort := Column.FieldName;

موفق باشید

Ahmad Chehreghani
سه شنبه 11 دی 1386, 01:07 صبح
سلام

tadotable(Column.Field.DataSet).sort:=Column.Field .FieldName

راستی اولش چک کنید فیلدتون Calculated نباشه چو ن پیغام خطا میشنوید.

موفق و پیروز باشید.

Amir_Safideh
سه شنبه 11 دی 1386, 11:02 صبح
اول ADODB رو در قسمت Uses مربوط به فرم اضافه کن بعد در رویداد OnTitleClick مربوط به DBGrid این کد رو وارد کن :


procedure TForm1.DBGrid1TitleClick(Column: TColumn);
{$J+}
const PreviousColumnIndex : integer = 1;
{$J-}
begin
if DBGrid1.DataSource.DataSet is TCustomADODataSet then
with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
begin
try
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
DBGrid1.Columns[PreviousColumnIndex].Color := ClWindow;
except
end;
Column.title.Font.Style :=
Column.title.Font.Style + [fsBold];
Column.Color := $00F3F3F3;
PreviousColumnIndex := Column.Index;
if (Pos(Column.Field.FieldName, Sort) = 1)
and (Pos(' DESC', Sort)= 0) then
Sort := Column.Field.FieldName + ' DESC'
else
Sort := Column.Field.FieldName + ' ASC';
end;
end;


فقط کافیه که روی عنوان فیلدت در DBGrid کلیک کنی که با هر بار کلیک میتونی حالت Sort رو از نزولی به صعودی یا برعکس تغییر بدی .
-------------------------------