تیرماه 87 - کدهای آماده دلفی افزایش بازدید - افزایش بازدید و ترافیک سایت شما
سفارش تبلیغ
صبا ویژن
ملایم باش ؛ زیرا هرکه ملایم باشد، همواره ازدوستی کسانش برخوردار می شود . [امام علی علیه السلام]
کدهای آماده دلفی

به دست آوردن کلیه برنامه های نصب شده در ویندوز:

Registry; uses

procedure TForm1.Button1Click(Sender: T);

const CLAVE =

"\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";

var

reg : TRegistry;

Lista : TStringList;

Lista2 : TStringList;

i,n : integer;

begin

{Creamos cosas temporales}

{Create temporal things}

reg := TRegistry.Create;

Lista := TStringList.Create;

Lista2 := TStringList.Create;

{Cargamos todas las subkeys}

{Load all the subkeys}

with Reg do

begin

RootKey := HKEY_LOCAL_MACHINE;

OpenKey(CLAVE,false);

GetKeyNames(Lista);

end;

{Cargamos todos los Nombres de valores}

{Load all the Value Names}

for i := 0 to Lista.Count -1 do

begin

reg.OpenKey(CLAVE + "\" +Lista.Strings[i],false);

reg.GetValueNames(Lista2);

{Mostraremos s?lo los que tengan "DisplayName"}

{We will show only if there is "DisplayName"}

n:=Lista2.IndexOf("DisplayName");

if (n <> -1) and (Lista2.IndexOf("UninstallString")<>-1) then

begin

{DisplayName+UnInstallString}

Memo1.Lines.Append ( reg.ReadString(Lista2.Strings[n])+"-"+

reg.ReadString(Lista2.Strings[Lista2.IndexOf("UninstallString")]) );

end;

end;

{Liberamos temporales}

{Free temporals}

Lista.Free;

Lista2.Free;

reg.CloseKey;

reg.Destroy;

end;



محمد مقصودلو ::: شنبه 87/4/29::: ساعت 1:22 عصر

این تابع برای گرفتن نام سیستم  بکار می رود

function GetComputerName : String;

var

pcComputer : PChar;dwCSize : DWORD;

begin

if Windows.GetComputerName( pcComputer, dwCSize ) then

Result := pcComputer;finally

FreeMem( pcComputer );end;

end;

dwCSize := MAX_COMPUTERNAME_LENGTH + 1;GetMem( pcComputer, dwCSize );try


محمد مقصودلو ::: شنبه 87/4/29::: ساعت 1:22 عصر

از این تابع برای گرفتن نام کاربری شخصی که به سیستم لاگین شده است اسفاده می شود:

function GetUserName : String;

var

pcUser : PChar;dwUSize : DWORD;

begin

FreeMem( pcUser );
finally
Result := pcUser
if Windows.GetUserName( pcUser, dwUSize ) then
dwUSize := 21;GetMem( pcUser, dwUSize );try


محمد مقصودلو ::: شنبه 87/4/29::: ساعت 1:21 عصر

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

-Add "ShellApi and ShlObj" in the uses of your form

procedure TForm1.Button1Click(Sender: T);
var
   PIDL:PItemIDList;
   Info:TShellExecuteInfo;
   pInfo:PShellExecuteInfo;
   WaitCode:DWord;
begin
   {Obtenemos PIDL de la carpeta virtual}
   {get PIDL of the virtual folder}
   SHGetSpecialFolderLocation(Handle,
                              CSIDL_CONTROLS,
                              PIDL);
   {Puntero a Info}
   {Pointer to Info}
   pInfo:=@Info;
   {Rellenamos Info}
   {Fill info}
   with Info do
   begin
    cbSize:=SizeOf(Info);
    fMask:=SEE_MASK_NOCLOSEPROCESS+
           SEE_MASK_IDLIST;
    wnd:=Handle;
    lpVerb:=nil;
    lpFile:=nil;
    {Parametros al ejecutable}
    {Executable parameters}
    lpParameters:=nil;
    lpDirectory:=nil;
    nShow:=SW_ShowNormal;
    hInstApp:=0;
    lpIDList:=PIDL;
   end;
   {Ejecutamos}
   {Execute}
   ShellExecuteEx(pInfo);
   {Esperamos que termine}
   {Wait to finish}
   repeat
    WaitCode := WaitForSingle(Info.hProcess,500);
    Application.ProcessMessages;
   until (WaitCode <> WAIT_TIMEOUT);
end;



محمد مقصودلو ::: شنبه 87/4/29::: ساعت 1:19 عصر

از این برنامه برای اجرا کردن یک برنامه تحت Dos و برگرداندن خروجی آن به فرم شما و نمایش آن در یک Memo است.

  procedure RunDosInMemo(Que:String;EnMemo:TMemo);
  const
     CUANTOBUFFER = 2000;
  var
    Seguridades         : TSecurityAttributes;
    PaLeer,PaEscribir   : THandle;
    start               : TStartUpInfo;
    ProcessInfo         : TProcessInformation;
    Buffer              : Pchar;
    BytesRead           : DWord;
    CuandoSale          : DWord;
  begin
    with Seguridades do
    begin
      nlength              := SizeOf(TSecurityAttributes);
      binherithandle       := true;
      lpsecuritydeor := nil;
    end;
    {Creamos el pipe...}
    if Createpipe (PaLeer, PaEscribir, @Seguridades, 0) then
    begin
      Buffer  := AllocMem(CUANTOBUFFER + 1);
      FillChar(Start,Sizeof(Start),#0);
      start.cb          := SizeOf(start);
      start.hStdOutput  := PaEscribir;
      start.hStdInput   := PaLeer;
      start.dwFlags     := STARTF_USESTDHANDLES +
                           STARTF_USESHOWWINDOW;
      start.wShowWindow := SW_HIDE;
 
      if CreateProcess(nil,
         PChar(Que),
         @Seguridades,
         @Seguridades,
         true,
         NORMAL_PRIORITY_CLASS,
         nil,
         nil,
         start,
         ProcessInfo)
      then
        begin
          {Espera a que termine la ejecucion}
          repeat
            CuandoSale := WaitForSingle( ProcessInfo.hProcess,100);
            Application.ProcessMessages;
          until (CuandoSale <> WAIT_TIMEOUT);
          {Leemos la Pipe}
          repeat
            BytesRead := 0;
            {Llenamos un troncho de la pipe, igual a nuestro buffer}
            ReadFile(PaLeer,Buffer[0],CUANTOBUFFER,BytesRead,nil);
            {La convertimos en una string terminada en cero}
            Buffer[BytesRead]:= #0;
            {Convertimos caracteres DOS a ANSI}
            OemToAnsi(Buffer,Buffer);
            EnMemo.Text := EnMemo.text + String(Buffer);
          until (BytesRead < CUANTOBUFFER);
        end;
      FreeMem(Buffer);
      CloseHandle(ProcessInfo.hProcess);
      CloseHandle(ProcessInfo.hThread);
      CloseHandle(PaLeer);
      CloseHandle(PaEscribir);
    end;
  end;

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

  RunDosInMemo("chkdsk.exe c:\",Memo1);



محمد مقصودلو ::: شنبه 87/4/29::: ساعت 1:18 عصر

برای اضافه کردن اسکرول بار به لیست باکس خود از این روش استفاده کنید..

ListBox1.Perform(LB_SETHORIZONTALEXTENT, 300, 0 );

یا از این روش

SendMessage( ListBox1.Handle, LB_SETHORIZONTALEXTENT, 300, 0 );



محمد مقصودلو ::: شنبه 87/4/29::: ساعت 11:44 صبح

برای داشتن یک کامبو باکس با گزینه های که رنگ های گزینه ها با هم فرق می کند می توان از این روش استفاده کرد

 
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TComboBox) do
  begin
    {The Odd Items in Red, the others in black}
    {Los Items pares de color rojo}
    {Los impares en negro}
    if Odd(Index) then Canvas.Font.Color:=clRed
                  else Canvas.Font.Color:=clBlack;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left,Rect.Top,Items[Index]);
  end;
end;



محمد مقصودلو ::: شنبه 87/4/29::: ساعت 11:44 صبح

از این تابع برای ذخیره یک تری ویو در یک اینی فایل استفاده کنید


procedure TreeToIni(Tree: TTreeView; INI: TIniFile; Section: string);
var
  n: Integer;
  MS: TMemoryStream;
  tTv: TStringList;
  Msg: string;
begin
  tTv := TStringList.Create;
  MS := TMemoryStream.Create;
  try
    Tree.SaveToStream(MS);
    MS.Position := 0;
    tTv.LoadFromStream(MS);
    INI.EraseSection(Section);
    for n := 0 to tTv.Count - 1 do
      INI.WriteString(Section, "Node" + IntToStr(n), StringReplace(tTv[n], #9,
        "#", [rfReplaceAll]));
  finally
    tTv.Free;
    MS.Free;
  end;
end;

procedure TreeFromIni(Tree: TTreeView; INI: TIniFile; Section: string;
  Expand: Boolean);
var
  n: Integer;
  MS: TMemoryStream;
  tTv: TStringList;
  Msg: string;
begin
  tTv := TStringList.Create;
  MS  := TMemoryStream.Create;
  try
    INI.ReadSection(Section, tTv);
    for n := 0 to tTv.Count - 1 do
      tTv[n] := StringReplace(INI.ReadString(Section, tTv[n], ""), "#", #9,
        [rfReplaceAll]);
    tTv.SaveToStream(MS);
    MS.Position := 0;
    Tree.LoadFromStream(MS);
    if (Expand = True) and (Tree.Items.Count > 0) then
      Tree.Items[0].Expand(True);
  finally
    tTv.Free;
    MS.Free;
  end;
end;

برگرفته شده از سایت دنیای برنامه نویسی دلفی(http://mt85.blogfa.com)



محمد مقصودلو ::: شنبه 87/4/29::: ساعت 11:37 صبح

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

procedure TForm1.FormCreate(Sender: T);
const
  bgcolor = $00FFDDEE;
  linecolor = $00554366;
var
  img: array of TImage;
  reg: hrgn;
  i: Integer;
begin
  for i := 0 to ComponentCount - 1 do
  begin
    if Components[i].ClassName = "TPanel" then
    begin
      setlength(img, Length(img) + 1);
      img[i] := TImage.Create(Self);
      img[i].Width := (Components[i] as TPanel).Width;
      img[i].Height := (Components[i] as TPanel).Height;
      img[i].Parent := (Components[i] as TPanel);
      img[i].Canvas.Brush.Color := bgcolor;
      img[i].Canvas.pen.Color := bgcolor;
      img[i].Canvas.Rectangle(0,0,img[i].Width, img[i].Height);
      img[i].Canvas.pen.Color := linecolor;
      img[i].Canvas.RoundRect(0,0,img[i].Width - 1,img[i].Height - 1,20,20);
      reg := CreateRoundRectRgn(0,0,(Components[i] as TPanel).Width,
        (Components[i] as TPanel).Height, 20,20);
      setwindowrgn((Components[i] as TPanel).Handle, reg, True);
      delete(reg);
    end;
  end;
end;

برگرفته شده از سایت دنیای برنامه نویسی دلفی(http://mt85.blogfa.com)



محمد مقصودلو ::: شنبه 87/4/29::: ساعت 11:37 صبح

با استفاده از این روش شما فرم برنامه شما همواره در وسط صفحه نمایش قرار دارد و امکان تغییر مکان آن وجود ندارد
ابتدا تابع را در قسمت توابع معرفی فرم قرار داده و سپس خود تابع را در برنامه قرار دهید


procedure Centrala(var m: TWMWINDOWPOSCHANGED); message   
   WM_WINDOWPOSCHANGING ;


  procedure TForm1.Centrala(var m : TWMWINDOWPOSCHANGED);
  begin
        m.windowpos.x := (Screen.Width - Width) div 2;   {Left/Posicion X}
        m.windowpos.y := (Screen.Height - Height) div 2; {Left/Posicion X}
  end;



محمد مقصودلو ::: شنبه 87/4/29::: ساعت 11:33 صبح

<      1   2   3   4      >

لیست کل یادداشت های این وبلاگ

>> بازدیدهای وبلاگ <<
بازدید امروز: 17
بازدید دیروز: 0
کل بازدید :88450

>> درباره خودم <<
کدهای آماده دلفی
محمد مقصودلو
در این وبلاگ سعی میکنم مطالب مربوط به برنامه نویسی دلفی ، پاسکال و گرافیک رایانه ای 2 بعدی و 3 بعدی را به روز کنم منتظر سوالات شما نیز هستم

>>تست سرعت تایپ<<

>> پیوندهای روزانه <<

>>فهرست موضوعی یادداشت ها<<

>>آرشیو شده ها<<

>>لوگوی وبلاگ من<<
کدهای آماده دلفی

>>لوگوی دوستان<<



>>اشتراک در خبرنامه<<
 

>>طراح قالب<<


>>ذکر روزهای هفته<<

>>جستجوگر وبلاگها<<

>>ساعت<<

>> اخبار فناوری<<

>>جدیدترین اس ام اس های اینترنت<<

>>فال حافظ<<

>>دیکشنری آنلاین<<
-

>>جک یا لطیفه<<

>>هواشناسی<<

>>تاریخ و ساعت<<
پنج شنبه 04/4/12 ساعت 3:27 عصر