Главная страница
    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.03 c
4-80379
deema
2003-12-14 19:20
2004.02.25
Как определить ширину текста в пункте меню?


3-79577
VoimiX
2004-01-29 11:31
2004.02.25
удаление записи в MIDAS клиенте


3-79588
voland
2004-01-26 15:59
2004.02.25
Запуск запроса в другой нити


14-80169
Palladin
2004-01-31 21:31
2004.02.25
Критерии серьезности.


1-79752
KADAN
2004-02-11 14:08
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский