PDA

View Full Version : مخفی کردن فیلدهای dbgrid به انتخاب کاربر



idehrayan
پنج شنبه 13 آذر 1393, 13:31 عصر
سلام
دوستان من میخام در هنگام اجرای برنامه با استفاده از یکسری چک باکس تعداد از ستونهای dbgrid رو به انتخاب کاربر مخفی یا قابل رویت کنم ایا راهی برای این کار وجود داره.

ممنون میشم اساتید راهنمایی کنن

khoshblagh
پنج شنبه 13 آذر 1393, 18:17 عصر
سلام
دوستان من میخام در هنگام اجرای برنامه با استفاده از یکسری چک باکس تعداد از ستونهای dbgrid رو به انتخاب کاربر مخفی یا قابل رویت کنم ایا راهی برای این کار وجود داره.

ممنون میشم اساتید راهنمایی کنن

با سلام به عنوان نمونه:

if bolShow=False then begin
btnShowHide.Caption:='äãÇíÔ ÑíÒ ÇØáÇÚÇÊ';
bolShow:=True;
dbgKharidFasli.Columns[3].Visible :=False;
dbgKharidFasli.Columns[4].Visible :=False;
dbgKharidFasli.Columns[8].Visible :=False;
dbgKharidFasli.Columns[21].Visible :=False;
dbgKharidFasli.Columns[22].Visible :=False;
dbgKharidFasli.Columns[23].Visible :=False;
dbgKharidFasli.Columns[24].Visible :=False;
dbgKharidFasli.Columns[27].Visible :=False;
dbgKharidFasli.Columns[30].Visible :=False;
end
else begin
btnShowHide.Caption:='ÚÏã äãÇíÔ ÑíÒ ÇØáÇÚÇÊ';
bolShow:=False;
dbgKharidFasli.Columns[3].Visible :=True;
dbgKharidFasli.Columns[4].Visible :=True;
dbgKharidFasli.Columns[8].Visible :=True;
dbgKharidFasli.Columns[21].Visible :=True;
dbgKharidFasli.Columns[22].Visible :=True;
dbgKharidFasli.Columns[23].Visible :=True;
dbgKharidFasli.Columns[24].Visible :=True;
dbgKharidFasli.Columns[27].Visible :=True;
dbgKharidFasli.Columns[30].Visible :=True;
end;

pezhvakco
پنج شنبه 13 آذر 1393, 19:26 عصر
و یا

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
DBGrid1.Columns[1].Visible := CheckBox1.Checked;
end;

YkA1363
سه شنبه 09 دی 1393, 04:19 صبح
سلام
از این کدها استفاده کردم فقط مشکل اینجاست وقتی برنامه رو می بندی باز می کنی تنظیماتی که انجام دادی به هم می ریزه ممنون می شم اگه راهنمایی کنید.:قلب:

khoshblagh
سه شنبه 09 دی 1393, 08:14 صبح
سلام
از این کدها استفاده کردم فقط مشکل اینجاست وقتی برنامه رو می بندی باز می کنی تنظیماتی که انجام دادی به هم می ریزه ممنون می شم اگه راهنمایی کنید.:قلب:
با سلام
اگر منظور شما این است که آخرین وضعیت بعد از بستن فرم در زمان باز شدن مجدد فرم بماند میتوانید آن وضعیت را در یک جدول دیتا بیس خودتان به صورت فیلدهای boolean ثبت و بازیابی نمائید.

benyaminrahimi
سه شنبه 09 دی 1393, 13:11 عصر
میتونی این پراپرتی رو تو هر فرم تو یه فایل ini موقع بستن فرم ذخیره کنی و در هنگام نمایش فرم مقادیر ذخیره شده در ini رو بازخوانی و تنظیم کنی

k,lki ;nd il fvhd ;hv fh هده براتون میذارم

procedure tpatern.ini_forms(afile: string; aobj: TComponent; act: string);
var
fini: TInifile;
i: integer;


begin


fini := TInifile.Create(afile);


if act = 'load' then
begin
(aobj as TForm).Width := fini.ReadInteger('p', 'width', (aobj as
TForm).Width);
(aobj as TForm).Height := fini.ReadInteger('P', 'height', (aobj as
TForm).Height);
(aobj as TForm).Left := fini.ReadInteger('P', 'left', (aobj as
TForm).Left);


end;


if act = 'save' then
begin
fini.WriteInteger('p', 'width', (aobj as TForm).Width);
fini.WriteInteger('P', 'height', (aobj as TForm).Height);
fini.WriteInteger('P', 'left', (aobj as TForm).Left);
end;


fini.Free;


end;



البته گرید های حرفه ای تر نظیر cx grid یا ehlib این امکان رو دارند ..
127018

khoshblagh
سه شنبه 09 دی 1393, 23:56 عصر
با سلام خدمت دوست گرامی
همانطور که فرمودید ehilb این خاصیت را دارد. ولی زمان بسته شدن فرم و باز شدن مجدد ، ستونها به صورت کامل نمایش داده میشود. آیا میشود وضعیت ستونها گرید را بدون ثبت در فایل ini و یا دیتا بیس بر اساس وضعیت بستن فرم دوباره بازگشایی کرد. یعنی خود ehilb خاصیتی جهت ذخیره آخرین وضعیت ستونها ندارد؟ متشکرم

pezhvakco
چهارشنبه 10 دی 1393, 10:05 صبح
همانطور که فرمودید ehilb این خاصیت را دارد



SaveGridLayout = save the column order, width, visual, sorting flags, sort index or row height to the registry

SaveGridLayoutIni = save the column order, width, visual, sorting flags, sort index or row height to the ini file

RestoreGridLayoutIni = Restore the column order, width, visual, sorting flags, sort index or row height from the ini file


DBGRIDEh1. SaveGridLayoutIni (ExtractFilePath (ParamStr (0)) + ' ConfigDBGRID.ini ', ' DBGRID1 ', True);
DBGRIDEh1. RestoreGridLayoutIni (ExtractFilePath (ParamStr (0)) + ' ConfigDBGRID.ini ', ' DBGRID1 ', [grpColIndexEh, grpColWidthsEh]);


بر اساس وضعیت بستن فرم دوباره بازگشایی کرد.
نفهمیدم بر چه اساس می خواهید .

http://www.programdevelop.com/3544084/

idehrayan
چهارشنبه 10 دی 1393, 21:56 عصر
سلام
اگه مقدار عرض هر ستون رو ذخیره و دوباره بازیابی کنیم میتونیم به خواسته مورد نظر برسیم
;(procedure TForm8.BitBtn1Click(Sender: TObject
var
;myiniFile : TINIFile
Begin
;('myiniFile:=TINIFile.Create(GetCurrentDir+'\conf ig.ini
;(myiniFile.WriteString('DBG1','DBG1',DBGrid1.Colu mns[0].Width
;(myiniFile.WriteString('DBG2','DBG2',DBGrid1.Colu mns[1].Width
;(myiniFile.WriteString('DBG3','DBG3',DBGrid1.Colu mns[2].Width
.
.
.
;end