2006. március 18., szombat

How to call Windows system dialogs from code


Problem/Question/Abstract:

How to call Windows system dialogs from code

Answer:

{ ... }

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Shell(sMethod: Integer);
  end;

var
  Form1: TForm1;
  oShell: OleVariant;

implementation

{$R *.DFM}

procedure TForm1.Shell(sMethod: Integer);
begin
  case sMethod of
    0: {Minimizes all windows on the desktop}
      begin
        oShell.MinimizeAll;
        Button1.Tag := Button1.Tag + 1;
      end;
    1: {Displays the Run dialog}
      begin
        oShell.FileRun;
        Button1.Tag := Button1.Tag + 1;
      end;
    2: {Displays the Shut Down Windows dialog}
      begin
        oShell.ShutdownWindows;
        Button1.Tag := Button1.Tag + 1;
      end;
    3: {Displays the Find dialog}
      begin
        oShell.FindFiles;
        Button1.Tag := Button1.Tag + 1;
      end;
    4: {Displays the Date/ Time dialog}
      begin
        oShell.SetTime;
        Button1.Tag := Button1.Tag + 1;
      end;
    5: {Displays the Internet Properties dialog}
      begin
        oShell.ControlPanelItem('INETCPL.cpl');
        Button1.Tag := Button1.Tag + 1;
      end;
    6: {Enables user to select folder from Program Files}
      begin
        oShell.BrowseForFolder(0, 'My Programs', 0, 'C:\Program Files');
        Button1.Tag := Button1.Tag + 1;
      end;
    7: {Displays the Taskbar Properties dialog}
      begin
        oShell.TrayProperties;
        Button1.Tag := Button1.Tag + 1;
      end;
    8: {Un-Minimizes all windows on the desktop}
      begin
        oShell.UndoMinimizeAll;
        Button1.Tag := 0;
      end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  oShell := CreateOleObject('Shell.Application');
  Shell(Button1.Tag);
  oShell := VarNull;
end;

Nincsenek megjegyzések:

Megjegyzés küldése