Konuyu Oyla:
  • Derecelendirme: 5/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Centered Vista Dialogs
#1
Uygulamamız içinde zaman zaman kullandığımız TFileOpenDialog, TFileSaveDialog vb dialog pencerelerinin ekranda garip yerlerde çıkması üzerine geliştirdiğim ve sizlerle de paylaşmak istediğim koddur. Aşağıdaki kod ilgili dialog penceresini ekranın ortasında gösterir.

  TCustomFileDialogHelper = class helper for TCustomFileDialog
  public
    function ExecuteCenter : Boolean;
  end;


{ TCustomFileDialogHelper }

function TCustomFileDialogHelper.ExecuteCenter: Boolean;
var
  ADialog : TCustomFileDialog;
begin
  ADialog := Self;

  TThread.CreateAnonymousThread(
    procedure
    begin
      while not IsWindowVisible(ADialog.Handle) do ;

      TThread.Queue(
        nil,

        procedure
        var
          ALeft,
          ATop    : Integer;
          ARect   : TRect;

          AHandle : NativeUInt;
        begin
          AHandle := BeginDeferWindowPos(1);

          try
            GetWindowRect(ADialog.Handle, ARect);

            ALeft := (Screen.Width  div 2) - (ARect.Width  div 2);
            ATop  := (Screen.Height div 2) - (ARect.Height div 2);

            DeferWindowPos(
                            AHandle,
                            ADialog.Handle,
                            0,
                            ALeft,
                            ATop,
                            ARect.Width,
                            ARect.Height,
                            SWP_NOZORDER
                          );
          finally
            EndDeferWindowPos(AHandle);
          end;
        end
      );
    end
  ).Start;

  Result := Self.Execute;
end;

Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#2
Teşekkürler.
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi