Вверх ↑
Этот топик читают: Гость
Ответов: 94
Рейтинг: 2
#1: 2010-08-27 20:38:14 ЛС | профиль | цитата
Здравствуйте. Такой вопрос, как сделать так, что бы форма появлялась в правом, нижнем углу прямо над треем.
Примерно так http://s002.radikal.ru/i197/1008/3b/b80db4999e2b.jpg
В свойствах формы можно установить, что бы форма появлялась в центре. Вручную вроде как не настроишь, т.к. у всех разное разрешение.
карма: 0

0
Ответов: 274
Рейтинг: 47
#2: 2010-08-27 20:43:28 ЛС | профиль | цитата
lipKAI,
1) Берешь ширину экрана, вычитаешь ширину формы - вот тебе координата слева
2) Берешь высоту экрана, вычитаешь высоту форнмы - вот тебе координаты сверху
3) Перемещаешь форму по полученным координатам

карма: 0

0
Ответов: 3349
Рейтинг: 233
#3: 2010-08-27 20:46:34 ЛС | профиль | цитата
Laetar, А про высоту панели задач?
карма: 1

0
Ответов: 94
Рейтинг: 2
#4: 2010-08-27 21:16:31 ЛС | профиль | цитата
Спасибо
Вдруг если кому надо
code_20252.txt
карма: 0

0
файлы: 1code_20252.txt [712B] [212]
Ответов: 2236
Рейтинг: 676
#5: 2010-08-27 21:33:22 ЛС | профиль | цитата
lipKAI писал(а):
форма появлялась в правом, нижнем углу прямо над треем

Если в нижнем правом углу то нормально, а если над треей то не у всех она внизу и такого размера. Думаю что в реестре храниться эта информация.
карма: 11

0
Ответов: 3349
Рейтинг: 233
#6: 2010-08-27 21:44:10 ЛС | профиль | цитата
sla8a, все намного проще
------------ Дoбавленo в 21.38:
Add(MainForm,2953706,413,287)
{
Point(doLeft)
Point(doTop)
Point(Width)
Point(Height)
link(onCreate,14579248:doEvent1,[])
}
Add(DoData,5509714,490,301)
{
link(onEventData,10938941:doOperation,[])
link(Data,6896887:right,[])
}
Add(InlineCode,6896887,490,252)
{
VarPoints=#5:right|3:top|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,windows,ShellAPI;|0:|6:const |32: ABM_QUERYPOS:DWORD = $00000002;|1: |4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|46: procedure top (var data:TData;Index:Word);|48: procedure right (var data:TData;Index:Word);|5: end;|0:|5:type |18: _bardata = Record|14: cbSize:WORD;|15: hWnd:Integer;|27: uCallbackMessage:integer;|16: uEdge:integer;|11: rc:PRect;|17: lParam:integer;|4:end;|14:implementation|0:|26:procedure THiAsmClass.top;|12:var n:TRect;|5:begin|46:SystemParametersInfo(SPI_GETWORKAREA,0,@n,0); |27:dtInteger(data , n.bottom);|4:end;|0:|28:procedure THiAsmClass.right;|12:var n:TRect;|5:begin|46:SystemParametersInfo(SPI_GETWORKAREA,0,@n,0); |26:dtInteger(data , n.right);|4:end;|0:|4:end.|
}
Add(DoData,8382484,497,308)
{
link(onEventData,4734065:doOperation,[])
link(Data,6896887:top,[])
}
Add(Hub,14579248,455,301)
{
link(onEvent1,5509714:doData,[])
link(onEvent2,8382484:doData,[])
}
Add(Math,4734065,546,308)
{
OpType=1
link(onResult,2953706:doTop,[(638,314)(638,369)(401,369)(401,328)])
link(Op2,2953706:Height,[(559,292)(584,292)(584,354)(426,354)])
}
Add(Math,10938941,595,301)
{
OpType=1
link(onResult,2953706:doLeft,[(658,307)(658,380)(401,380)(401,321)])
link(Op2,2953706:Width,[(608,292)(584,292)(584,354)(419,354)])
}


------------ Дoбавленo в 21.44:
Работает с любым разрешением и размеров taskbara
карма: 1

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#7: 2010-08-27 21:46:36 ЛС | профиль | цитата
Ivann писал(а):
все намного проще

А на кой черт ты тут свои IC везде пихаешь, у нас тут схемное визуальное программирование а не тренировки кодинга
карма: 22

0
Ответов: 3349
Рейтинг: 233
#8: 2010-08-27 21:49:21 ЛС | профиль | цитата
nesco писал(а):
А на кой черт ты тут свои IC пихаешь

А как можно другим образом узнать размер клиентской области экрана
------------ Дoбавленo в 21.49:
nesco писал(а):
IC

IC - точно такой же элемент как и другие..
карма: 1

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#9: 2010-08-27 21:50:42 ЛС | профиль | цитата
Ivann писал(а):
А как можно другим образом узнать размер клиентской области экрана

Элементано. См. hiForumMonitor, там реализована таблица точно над треем
карма: 22

0
Ответов: 3349
Рейтинг: 233
#10: 2010-08-27 21:55:00 ЛС | профиль | цитата
nesco, а если панель сбоку?
Так что мой, код лучше.
карма: 1

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#11: 2010-08-27 21:56:54 ЛС | профиль | цитата
Ivann писал(а):
IC - точно такой же элемент как и другие..

Нет, не точно такой же. Об этом талмуды писали на форуме. IC нужен для расширения возможностей HiAsm-a, но он не дает никакого навыка в схемном построении. И не надо тут кичится тем, что ты научился кодить на Delphi, это неплохо, но, по большому счету, это никому нафиг на форуме не нужно
------------ Дoбавленo в 21.56:
Ivann писал(а):
а если панель сбоку?

И что, невозможно узнать координаты стороннего окна, коим и является трей
карма: 22

0
Ответов: 3349
Рейтинг: 233
#12: 2010-08-27 22:02:21 ЛС | профиль | цитата
Я тебе про то что в таком случае, твоя схема не работает.
------------ Дoбавленo в 22.02:
nesco, а если боковая часть экрана загорожена например аськой, и тогда твоё приложение останется за ней.
карма: 1

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#13: 2010-08-27 22:04:22 ЛС | профиль | цитата
Ivann писал(а):
Я тебе про то что в таком случае, твоя схема не работает

Ну и что, я просто не задавался целью расчитывать боковую панель, к тому же был конкретный вопрос
lipKAI писал(а):
в правом, нижнем углу прямо над треем

Заметь -- "над", а не сбоку
------------ Дoбавленo в 22.04:
Ivann писал(а):
и тогда твоё приложение останется за ней

А тогда для чего есть режим окна PopUp
карма: 22

0
Ответов: 3349
Рейтинг: 233
#14: 2010-08-27 22:06:04 ЛС | профиль | цитата
nesco писал(а):
в правом, нижнем углу прямо над треем

В правом и нижнем а не верхнем
------------ Дoбавленo в 22.06:
nesco писал(а):
А тогда для чего есть режим окна PopUp

Они будут пересекаться так как у приложения скорее всего тоже самое стоит.
Ладно nesco, хватит бесполезных споров.
карма: 1

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#15: 2010-08-27 22:07:48 ЛС | профиль | цитата
Ivann писал(а):
В правом и нижнем а не верхнем

А где у меня в схеме в верхнем
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)