Pozycja okna OpenDialog....

0

jak zrobić by OpenDialog pojawiał się kilkanaście pikseli niżej?

0

Ej, popatrzyłeś Ty w ogóle w helpa? .. nie wydaje mi się.

Jest tam zapewne coś jak OpenDialog.Position... czy podobnie.

0

a to ciekawe, rzeczywiście ciężko jest przestawić opendialog-a. U mnie nawet debugowanie nie pomogło, wymiękłem po 30 minutach. Jeśli ktoś da sobie z tym radę to z ciekawości chciałbym się zapoznać ze sposobem.

P.S. W ostateczności można sobie samemu zrobić takiego dialoga i nim ruszać :)

0

nie wydaje mi sie żeby OpenDialog w VCL posiadał normale mechanizmy ustawiania pozycji początkowej. Dodatkowym problemem jest to, że okno dialogowe jest modalne, czyli bez zabawy w wątki nie da sie niczego zmienić "w trakcie" OpenDialog.Execute. Ale zawsze można sprobowac komunikatami:

//...

const WM_AFTERSHOW = WM_USER + 2856;

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure OpenDialog1Show(Sender: TObject);
  private
    { Private declarations }
  public
    procedure OnAfterShow(var Msg : TMessage); message WM_AFTERSHOW;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenDialog1.Execute;
end;

procedure TForm1.OnAfterShow(var Msg: TMessage);
begin
  SetWindowPos(FindWindow(nil, 'Otwieranie'), 0, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOZORDER);
end;

procedure TForm1.OpenDialog1Show(Sender: TObject);
begin
  PostMessage(Handle, WM_AFTERSHOW, 0, 0);
end;

//...

Takie rozwiązanie ma przynajmniej jedną wade :/. Widać, że po pokazaniu okno przesuwa sie ono na jakąs pozycje. Nie gwarantuje że nie da sie tego zrobić prosciej i bardziej elegancko (np. lepiej wyszukiwać po klasie i po nazwie okna), w kazdym razie takie coś działa :) .

0

Hmmm.... Być może się mylę, ale TOpenDialog ma pole Handle, więc nie trzeba chyba "ręcznie" szukać okna...

0

Tylko, o ile pamiętam, żeby mieć właściwe okienko dialoga, trzeba wziąć parenta od topendialog.handle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1