Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

Как расположить окно выбора папки по центру экрана?   Найти похожие ветки 

 
Well   (2004-02-13 00:20) [0]

Создаю окно выбора папки с помощью функции selectdirectory, но оно появляется где то справа внизу, как сделать чтобы по центру экрана появлялось это окно?


 
Defunct   (2004-02-13 01:53) [1]

гхм..
(Окно.Handle as TControl).Top := ...
(Окно.Handle as TControl).Left := ...

Если это форма
(Окно as TForm).Position := poScreenCenter;

А откуда такая функция?


 
Babay   (2004-02-13 06:20) [2]

То Defunct
Эта функция есть в Д7, в Д6 незнаю не юзал. Является оболочкой к стандартной SHBrowseDialog (кажись не ошибся).
Д5 то же была но была реализована дядей борманом и выглядела совсем не так.

вариант
(Окно.Handle as TControl).Top := ...
(Окно.Handle as TControl).Left := ...
не пройдет т.к. функция ждет пока закроется окно диалога и прога соответственно тоже ждет.

для решения проблемы берем бормановскую реализацию и чуток подправляем (kexit наверное это в отдельный модуль сунуть и пользовать оттуда)

function SelectDirectory( handle:THandle;const Caption: string; const Root: WideString;
var Directory: string): Boolean;

.......
.......
with BrowseInfo do
begin
hwndOwner := Handle;
pidlRoot := RootItemIDList;
......

при вызове передаем Handle формы и диалог будет показываться над формой.


 
Well   (2004-02-13 08:42) [3]

А есть какие нибудь другие диалоги для выбора папки?


 
Babay   (2004-02-13 09:20) [4]

Делай сам ручками и будет любая функциональность.


 
Dimka Maslov   (2004-02-13 09:26) [5]

http://www.endimus.com/oldcontent/files/index_en.php?page=tbrowseforfolder.htm

В компоненте задаёшь обработчик события OnSetPosition в которой перемещаешь диалог куда захочешь


 
Юрий Зотов   (2004-02-13 09:48) [6]

> Defunct (13.02.04 01:53) [1]

Значит, Handle as TControl, говорите?

Извините, а Вы не могли бы пояснить, каким образом эта конструкция вообще может сработать?


 
Babay   (2004-02-13 10:50) [7]

БРАВО Юрий Зотов © [6]

Пришлось мне покраснеть от стыда.
Я понял что человек имел ввиду, но совершенно не обратил внимание на то, как он это имел ввиду....

Еще раз браво Юрий.


 
PVOzerski   (2004-02-13 11:18) [8]

Ну нельзя же с хэндлами работать как с объектами... А рецепт я бы предложил такой. Сцапал бы хэндл окна из параллельного thread"а и задал ему координаты через MoveWindow. А чтобы поймать хэндл, перед вызовом selectdirectory запустил бы этот самый поток, который покрутил бы в себе цикл со sleep, пока класс верхнего окошка ни стал бы соответствовать классу, свойственному диалогу вызова папок (GetForegroundWindow, GetClassName), затем вызвал бы MoveWindow и терминировался.


 
Defunct   (2004-02-13 20:00) [9]

Юрий Зотов © (13.02.04 09:48) [6]
> Значит, Handle as TControl, говорите?
В 2 часа ночи можно и не такое написать.
хотел вначале предложить Handle окна отыскать с помощью GetWindow() и изменить его координаты, потом забыл стереть, вот и получилось то что получилось.

Babay © (13.02.04 10:50) [2]
Хорошо хоть кто-то в этой конференции не ставит своей целью кого-то подловить.


 
Юрий Зотов   (2004-02-13 20:07) [10]

> Defunct (13.02.04 20:00) [9]

Говорить нужно о "подлове" человека, задавшего вопрос. Он же не виноват, что ему отвечали в 2 часа ночи.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.031 c
14-80261
Marser
2004-02-03 13:31
2004.02.25
Вероисповедание


14-80137
SergP
2004-02-01 23:36
2004.02.25
Вопрос про кеширование


14-80289
тихий вовочка
2004-02-05 07:34
2004.02.25
Как давно вы занимались креативом?


11-79687
grumbler
2003-06-04 21:49
2004.02.25
Хочу просто русский проект...


1-80009
-=Zerg=-
2004-02-12 10:42
2004.02.25
Как вернуть курсор?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский