آيا می دانيد

 

آيا می دانيد توابع تبديل فرمت ذيل در دلفی وجود دارند که وقوع خطا را نيز نمايش می دهند. يعنی همه اين توابع در صورتی که در هنگام تبديل خطايی رخ دهد مقدار False را به عنوان خروجی بر می گردانند.

تبديل رشته به منطقی با خروجی منطقی

 function TryStrToBool(const S: string, out Value: Boolean): Boolean;

 رشته به تاريخ

 function TryStrToDate(const S: string, out Value: TDateTime): Boolean;

 رشته به عدد اعشاری

 function TryStrToFloat(const S: string, out Value: Extended): Boolean;

 رشته به عدد صحيح ۲ بايتی

 function TryStrToInt(const S: string, out Value: Integer): Boolean;

 رشته به عدد صحيح ۴ بايتی

 function TryStrToInt64(const S: string, out Value: Int64): Boolean;

 رشته به ساعت

 function TryStrToTime(const S: string, out Value: TDateTime): Boolean;

------------------------------------------------------------------------------------------

فيلتر کردن رکوردها

 

طريقه انتخاب مجموعه ای از رکوردها در DBGrid  (فيلتر کردن رکوردهای انتحاب شده)

 var
  x: Integer;
  BMList: array of TVarRec;
begin
  SetLength(BMList, dbgrid1.SelectedRows.Count);
  for X:=0 to dbgrid1.SelectedRows.Count - 1 do
  begin
    BMList[x].VType := vtPointer;
    BMList[x].VPointer := Pointer(dbgrid1.SelectedRows[x]);
    DataModule1.ADOTable1.GotoBookMark(BMList[x].VPointer);
  end;
  DataModule1.ADOTable1.FilterOnBookmarks(BMList);
end;

 

البته قبل از اجرای کد بايد خاصيت MultiSelect  مربوط به DBGrid ‌را TRue کرده باشيد

------------------------------------------------------------------------------------------

چگونگی تغير رنگ رکوردهای

 

در اين جلسه چگونگی تغير رنگ رکوردهای(سطرها) يک DBGrid را توضيح می دهم (مطابق شکل ذيل)

کد ذيل را در رويداد (event) با نام OnDrawColumnCell  مربوط به DBGrid  نوشته شود.

procedure TFForush.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
DBGrid1.Canvas.Font.Color:=clBlack;
if((DBGrid1.DataSource.DataSet.RecNo mod 2)=0)Then
 DBGrid1.Canvas.Brush.Color:=clInfoBK;
if(gdSelected in State)Then
 DBGrid1.Canvas.Brush.Color:=clBlue;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
//برای ستون رديف

if(DataCol=0)Then
begin
 DBGrid1.Canvas.Brush.Color:=clBlack;
 DBGrid1.Canvas.Font.Color:=clYellow;
 DBGrid1.DefaultDrawColumnCell(Rect,0,Column,State);
end;
end;

به همين سادگی !!!(بهتر است dgRowSelect  نيز True  باشد)

------------------------------------------------------------------------------------------

طریقه لیست کردن فایلها و فولدرهای موجود در مسیر خاص و نمایش آنها در یک لیست:

procedure FindAll (const Path: String;
                          Attr: Integer;
                          List: TStrings) ;
var
   Res: TSearchRec;
   EOFound: Boolean;
begin
   EOFound:= False;
   if FindFirst(Path, Attr, Res) < 0 then
     exit
   else
     while not EOFound do begin
       List.Add(Res.Name) ;
       EOFound:= FindNext(Res) <> 0;
     end;
   FindClose(Res) ;
end;

حال رویه بالا را مثلا برای مسیر ویندوز فراخوانی میکنیم.

FindAll('C:\Windows\*.*',faAnyFile,ListBox1.Items)



------------------------------------------------------------------------------------------


حرکت بين اشياء

حرکت بين اشياء روی فرم با استفاده از کليدهای جهتی رو به بالا و رو به پايين و اينتر(arrow key and enter) .البته بايد ابتدا خصوصيت KeyPreview  مربوط به فرم را true کنيد سپس کد زير را به رويداد OnKeyDown  فرم اضافه کنيد:

 

 procedure TForm1.FormKeyDown( Sender : TObject;  var Key: Word;

     Shift : TShiftState  ) ;
var
   Direction : Integer;
begin
   Direction := -1;
   case Key of
     VK_DOWN, VK_RETURN : Direction := 0; {حرکت به پايين}
     VK_UP : Direction := 1; {حرکت به بالا}
   end;
   if Direction <> -1 then
   begin
     Perform(WM_NEXTDLGCTL, Direction, 0) ;
     Key := 0;
   end;
end;



منبع : http://delphi-link.blogfa.com