برنامه نویس

به وبلاگ خودتان خوش آمدید.

برنامه نویس

به وبلاگ خودتان خوش آمدید.

skin در دلفی xe2

از قابلیتهای  Delphi XE2 پوسته میباشد یعنی شما بدون نصب کامپوننتهای skin مثل vcl skin , alpha control , busines skin و ... به راحتی میتونین به برنامتون skin بدین برای این امر به ادرس در منو بروید Project/oprion و در پنجره جدید Application/Appearance را انتخاب کنید. حالا لیستی از skin پیش فرض که به همراه دلفی نصب میشود داریم برای اعمال skin مورد نظر کافی است تیک skin مورد نظر را زده تا در کمبوباکس پایین Default Style  اسکین مورد نظر شما اضافه شود سپس کمبو باکس را روی skin مورد نظر خود قرار دهید و روی دکمه ok کلیک کنید حالا با اجرا برنامه skin شما اعمال خواهد شد . به همین راحتی .

شما میتوانید استایلهای دیگری را نیز از اینترنت دانلود و استفاده کنید برای این کار بعد از دانلود فایلهای .vsf را در ادرس پوشه Style به ادرس زیر کپی کنید
C:\Users\Public\Documents\RAD Studio\9.0\Styles
تا به لیست استایلها اضافه شود
شما میتوانید استایلها را به سلیقه خود تغییر و مورد استفاده قرار دهید به همراه مجموعه دلفی یک Vcl Style Designer نصب میشود که از منو
Tools/Vcl Style Designer میتوانید از ان استفاده نموده و استایل مورد نظر خود را تغییر دهید

برای تغییر skin در زمان اجرا هم اول یونیهای Vcl.Themes,Vcl.Styles رو uses میکنید و از کد زیر استفاده کنید



procedure TForm1.btn1Click(Sender: TObject);
begin
  if TStyleManager.IsValidStyle(getCurrentdir + '\Auric.vsf') then
    TStyleManager.SetStyle(TStyleManager.LoadFromFile(getCurrentdir + '\Auric.vsf'));
end;



یا از کدهای زیر برای پر کردن یک کامبوباکس و ست کردن استایل با انتخاب هر کدام از انها استفاده کنید 


procedure TForm1.ComboBox1Change(Sender: TObject);

begin

 TStyleManager.TrySetStyle(ComboBox1.Items[ComboBox1.ItemIndex]);

end;


procedure TForm1.FormShow(Sender: TObject);

var

  s: String;

begin

  ComboBox1.Items.BeginUpdate;

  try

    ComboBox1.Items.Clear;

    for s in TStyleManager.StyleNames do

    begin

      memo1.Lines.Add(s);

      ComboBox1.Items.Add(s);

    end;

    ComboBox1.Sorted := True;

    // Select the style that's currently in use in the combobox

    ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(TStyleManager.ActiveStyle.Name);

  finally

    ComboBox1.Items.EndUpdate;

  end;


end;

استفاده از trayicon در دلفی

میخواهم برنامه ای بنویسم که با هر رویداد جدید قرار است ما را با خبر کند یکی از روش ها استفاده از trayicon است.

1- برای این کار یک tray icon  بر روی فرم میگذاریم و تایمر ان را تنظیم میکنیم 

2- در رویداد onanimate  دستوراتی را مینویسیم که قرار است چک کند رویداد جدید وجود دارد یا خیر و در انتها کد زیر برای باز شدن بالون استفاده میشود .

TrayIcon1.ShowBalloonHint ;

3- در کد پروژه که از قسمت project-> view source باز میشود در خط اول کد  زیر را قرار میدهیم 

Application.MainFormOnTaskbar := False; 

4- از application event استفاده میکنیم و کد زیر را اضافه میکنیم


procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
  Hide;

end;

5- و در اخر کد زیر را در trayicon اضافه میکنیم 



procedure TForm1.TrayIcon1Click(Sender: TObject);
begin
  if not Visible then
    begin
      Show;
      Application.Restore;
      Application.BringToFront;
    end;
end;

فارسی شدن کیبرد برای تایپ فارسی در برنامه

کد زیر را در فرم اصلی قرار دهید


procedure TMain.FormCreate(Sender: TObject);
begin
LoadKeyboardLayout('00000429', KLF_ACTIVATE);
end;

کد استفاده Enter به جای Tab در دلفی


خاصیت KeyPreview از فرم رو به True تغییر بدین و فقط کد زیر رو تو رویداد KeyPress از فرم بذارین


procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key= #13 then begin
    keybd_event(VK_TAB,1,0,0);
    keybd_event(VK_TAB,1,KEYEVENTF_KEYUP,0);
    Key:= #0;
  end;
end;
یا از این کد هم میتونید استفاده کنید.
در رویداد onkeypress :

if (key=#13) then
begin
Key := #0;
Perform (CM_DialogKey, VK_TAB, 0);
end;


رنگبندی رکوردهای dbgrid در دلفی

کد زیر از دو رنگ در نمایش رکوردهای زوج و فرد استفاده میکند .

 procedure TGridForm.DBGridDrawColumnCell(
   Sender: TObject;
   const Rect: TRect;
   DataCol: Integer;
   Column: TColumn;
   State: TGridDrawState) ;
 var
   grid : TDBGrid;
   row : integer;
 begin
   grid := sender as TDBGrid;
 
   row := grid.DataSource.DataSet.RecNo;
 
   if Odd(row) then
     grid.Canvas.Brush.Color := clSilver
   else
     grid.Canvas.Brush.Color := clDkGray;
 
   grid.DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
 
 end; (* DBGrid OnDrawColumnCell *)