На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
  
    > Позиционирование TSaveDialog , Пример в виде наследника...
      ExpandedWrap disabled
        unit Unit1;
         
        interface
         
        uses
          Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
          Dialogs, StdCtrls, CommDlg;
         
        type
          TMySaveDialog = class(TSaveDialog)
          protected
            procedure WndProc(var Message: TMessage); override;
          end;
         
          TForm1 = class(TForm)
            Button1: TButton;
            procedure Button1Click(Sender: TObject);
          end;
         
        var
          Form1: TForm1;
         
        implementation
         
        {$R *.dfm}
         
        procedure TMySaveDialog.WndProc(var Message: TMessage);
        const
          X = 10;
          Y = 30;
        begin
          with Message do
          begin
            if ((Msg = WM_NOTIFY) and (POFNotify(LParam)^.hdr.code = CDN_INITDONE)) or
               ((Msg = WM_UPDATEUISTATE) and (WParamLo = UIS_SET)) then
            begin
              if Owner is TForm then
                SetWindowPos(GetParent(Handle), HWND_TOP, X, Y, 0, 0, SWP_NOSIZE);
            end
            else
              inherited;
          end
        end;
         
        procedure TForm1.Button1Click(Sender: TObject);
        begin
          TMySaveDialog.Create(Self).Execute;
        end;
         
        end.

      Автор: Александр (Rouse_) Багель

      ExpandedWrap disabled
        unit Unit1;
         
        interface
         
        uses
          Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
          Dialogs, StdCtrls;
         
        type
          TForm1 = class(TForm)
            SaveDialog1: TSaveDialog;
            Button1: TButton;
            procedure SaveDialog1Show(Sender: TObject);
            procedure Button1Click(Sender: TObject);
          private
            { Private declarations }
          public
         
          end;
         
        var
          Form1: TForm1;
         
        implementation
         
        {$R *.dfm}
         
        { TForm1 }
         
         
        function NewSaveDlgProc(wnd:HWND; uMsg:DWORD; wParam:Integer; lParam:integer):integer; stdcall;
        begin
         if uMsg=WM_SHOWWINDOW then MoveWindow(wnd, 10, 30, 500, 100, True) ;
         result:=CallWindowProc(Pointer(GetWindowLong(wnd,GWL_USERDATA)),wnd,uMsg,wParam,lParam)
        end;
         
        procedure TForm1.SaveDialog1Show(Sender: TObject);
        begin
          SetWindowLong(GetParent(SaveDialog1.Handle),GWL_USERDATA,
             SetWindowLong(GetParent(SaveDialog1.Handle),DWL_DLGPROC,DWORD(@NewSaveDlgProc)));
        end;
         
         
        procedure TForm1.Button1Click(Sender: TObject);
        begin
         SaveDialog1.Execute
        end;
         
        end.

      Автор: Krid
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0156 ]   [ 17 queries used ]   [ Generated: 29.03.24, 15:36 GMT ]