Вопрос № 80376: Здравствуйте.
Поскажите пожалуйста как в Д7 сделать панель наподобии панели задач что бы она автоматически скрывалась и активировалась при наведении курсора на место ее расположения....Вопрос № 80377: запустив на выполнение файл, как узнать идентификатор запустившегося окна? Для конкретной программы можно воспользоваться FindWindow, а при смене версии как быть? Возможно будет известен процесс запустившегося приложения - это может помочь?
Смен...Вопрос № 80403: Здравствуйте!
У меня вопрос по ShellListView. Мне надо получить название выбранного файла или папки. Ну по логике, я думал, что это делается так:
Label1.caption:=ShellListView.selected.caption;
Но возвращается пустая строка, зат...
Вопрос № 80.376
Здравствуйте.
Поскажите пожалуйста как в Д7 сделать панель наподобии панели задач что бы она автоматически скрывалась и активировалась при наведении курсора на место ее расположения.
Вот предлагаю Вам такие два примера, в которых используются такие объекты как StatusBar и ToolBar (вкладка Win32) - при наведении курсора на места их расположения объекты будут отображаться и скрываться в противном случае. Для обработки положения указателя мыши использую FormMouseMove().
При создании формы сразу скрываем эти объекты:
procedure TForm1.FormCreate(Sender: TObject);
begin
StatusBar1.Visible:=false;
ToolBar1.Visible:=false;
end;
А теперь позаботимся о том что бы данные объекты отображались лишь в случае расположения указателя мыши над ними.
Пример №1.
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if y > Form1.ClientHeight-StatusBar1.Height {проверяем положение указателя}
then StatusBar1.Visible:=true else StatusBar1.Visible:=false;
if y < ToolBar1.Height {проверяем положение указателя}
then ToolBar1.Visible:=true else ToolBar1.Visible:=false;
end;
А вот аналогичная процедурка, но возможно Вам покажется что тут написано что-то несусветное - а на самом деле это просто более компактная, и на мой взгляд рациональная запись предыдущего примера. ;о)
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 30.03.2007, 15:38 Оценка за ответ: 5 Комментарий оценки: Спасибо за помощь!
Вопрос № 80.377
запустив на выполнение файл, как узнать идентификатор запустившегося окна? Для конкретной программы можно воспользоваться FindWindow, а при смене версии как быть? Возможно будет известен процесс запустившегося приложения - это может помочь?
Смена версий, пример: файл 1.mcd, созданный в Mathcad Professional откроется и в Mathcad 14, но только в первом случае окно будет {Mathcad Professional: [1]}, а во втором {Mathcad - [1]}
Приложение:
Отправлен: 30.03.2007, 13:53
Вопрос задал: Kolyan (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Pavel Maltsev
Здравствуйте, Kolyan!
Здравствуйте, Kolyan!
В функцию FindWindow вы передаете не только за головок, но и название класса окна, а оно как правило не меняется от версии к версии.
Т.е. искать окно нужно FindWindow(ClassName, nil)
где ClassName - это наименование класса окна. Узнать наименование класса окна можно например с помощью программы spy++ входящей в комплект VisualStudio
Ответ отправил: Pavel Maltsev (статус: 3-ий класс)
Ответ отправлен: 30.03.2007, 14:00 Оценка за ответ: 4 Комментарий оценки: попробуем
Отвечает: PGM
Здравствуйте, Kolyan!
Можно использовать не заголовок, а класс окна (сначала вычислив его с помощью WinSight например). Правда, это часто не проходит с приложениями собранными с помощью MFC - они часто генерят название класса динамически.
Другой способ: делать EnumWindows до запуска и после, все новые окна проверять на принадлежность к запускаемому приложению. Часто их больше чем одно - тогда надо сравнивать флаги на предмет того, какое из них главное, видимое и т.п.
Ответ отправил: PGM (статус: 2-ой класс)
Ответ отправлен: 30.03.2007, 16:40 Оценка за ответ: 4 Комментарий оценки: попробуем
Вопрос № 80.403
Здравствуйте!
У меня вопрос по ShellListView. Мне надо получить название выбранного файла или папки. Ну по логике, я думал, что это делается так:
Label1.caption:=ShellListView.selected.caption;
Но возвращается пустая строка, зато с SubItems все нормально. Дак вот, как привильно получить имя элемента (файли или папки)?
Отправлен: 30.03.2007, 16:50
Вопрос задал: Red Spirit (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ерёмин Андрей
Здравствуйте, Red Spirit!
Помимо такого способа узнать название выбранного элемента (конкретно - папки) можно так: Label1.Caption:=ShellListView1.SelectedFolder.DisplayName;
Таким образом уже два варианта. К примеру, чтобы точно получить название, может проверить оба способа и выбрать тот, который не является пустой строкой.
Желаю удачи!
--------- Нет правила без исключений. Правило без исключений - исключение из правил.