Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/56: Рейтинг темы: голосов - 56, средняя оценка - 4.84
 Аватар для VakhramoV
20 / 20 / 12
Регистрация: 07.02.2011
Сообщений: 82

Положение формы относительно экрана

04.01.2012, 13:25. Показов 11852. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
http://h1964807.stratoserver.n... IdVT9A.jpg

Помню, что делается ерез WorkArea или ещё как-то, смотрел месяца два-три назад. Уже не помню.
Может кто код готовый дать, чтобы определить рабочую область экрана и поместить в её правый нижний угол мою форму Form1.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.01.2012, 13:25
Ответы с готовыми решениями:

Позиционирование форм относительно экрана
У меня есть три формы, одна из которых является почти что лаунчером. Так вот, после закрытия 1 формы у меня должны открываться 2 и 3 формы...

Положение формы в delphi 7 Position
В делфи выбрал положение формы Position: DesktopCenter На некоторых мониторах формы появляются наполовину в углу экрана, при том,...

Положение скролла сверху при запуске формы
Возможно очень глупый вопрос, но я не нашел решения в свойствах формы (возможно слепой). При запуске формы скролл автоматически внизу,...

6
 Аватар для TopLoader
43 / 43 / 6
Регистрация: 10.12.2011
Сообщений: 128
04.01.2012, 13:32
Есть вариант попроще:
Delphi
1
2
Form1.Left:= Screen.Width - Form1.Width;
Form1.Top:= Screen.Height - Form1.Height;
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
04.01.2012, 13:35
TopLoader, так ТС надо что бы над панелью задач, для этого нужно определить высоту панели задач
0
 Аватар для TopLoader
43 / 43 / 6
Регистрация: 10.12.2011
Сообщений: 128
04.01.2012, 13:37
Тогда так:
Delphi
1
2
Form1.Left:= Screen.WorkAreaWidth - Form1.Width;
Form1.Top:= Screen.WorkAreaHeight - Form1.Height;
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
04.01.2012, 13:42
Цитата Сообщение от TopLoader Посмотреть сообщение
<высота_панели_задач>
так вся загвоздка в том как найти высоту панели задач, я раньше как-то сталкивался с этим так и не нашел решения, может конечно плохо искал
0
 Аватар для TopLoader
43 / 43 / 6
Регистрация: 10.12.2011
Сообщений: 128
04.01.2012, 13:49
Цитата Сообщение от anonimus Посмотреть сообщение
так вся загвоздка в том как найти высоту панели задач, я раньше как-то сталкивался с этим так и не нашел решения, может конечно плохо искал
На самом деле высоту панели задач искать и не нужно — достаточно использовать размеры рабочего пространства.

Но если очень хочется, то можно извратиться и найти высоту панели задач:
Показать
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm3.Button1Click(Sender: TObject);
var
  wnd: HWND;
  Rect: TRect;
begin
  wnd:= FindWindow('Shell_TrayWnd', nil); // ищем панель
  if wnd <> 0 then
  begin
    GetWindowRect(wnd, Rect); // определяем размер найденной панели
    ShowMessage(IntToStr(Rect.Bottom));
  end;
end;
(Код нашел в гугле)


***

Добавлено через 4 минуты
Нашел решение, вот код:
Delphi
1
2
3
4
5
6
var Rect:TRect;
begin
    SystemParametersInfo(SPI_GETWORKAREA, 0, @Rect, 0);
    Left := Rect.Right - Form1.Width;
    Top := Rect.Bottom - Form1.Height;
end;
Источник

***

Вот ещё код по теме:
Всплывающие подсказки в правом нижнем углу экрана
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
procedure TForm1.fShowHint(Text:String);
var NeededTop:integer;
    HintForm:TForm;
    HintLabel:TLabel;
begin
  HintForm:=TForm.Create(nil);
  with HintForm do
  begin
    Width:=245;
    Height:=100;
    Color:=clSkyBlue;
    BorderStyle:=bsNone;
 
    //Создаём текст
    HintLabel:=TLabel.Create(nil);
    with HintLabel do
    begin
        Parent:=HintForm;
        WordWrap:=true;
        Caption:=' '+Trim(Text)+' ';
        Align:=alClient;
        Layout:=tlCenter;
        Alignment:=taCenter;
    end;
 
    AlphaBlend:=true;
    AlphaBlendValue:=220;
    HintForm.Show;
    HintForm.BringToFront;
 
    //Screen.WorkArea - область экрана без панели задач
    Left := Screen.WorkAreaWidth - Width;
    Top  := Screen.WorkAreaHeight;
 
    NeededTop := Screen.WorkAreaHeight - Height;
    while Top>NeededTop do
    begin
      Top := Top - 2;
      Repaint;
      Sleep(10);
      Application.ProcessMessages;
    end;
 
    Sleep(2000); //жуткий двухсекундный тупняк ;)
 
    NeededTop := Screen.WorkAreaHeight;
    while Top<NeededTop do
    begin
      Top := Top + 2;
      Repaint;
      Sleep(10);
      Application.ProcessMessages;
    end;
 
    HintLabel.Free;
    Free;
  end;
 
end;
 
//И ещё, если у всплывающей формы будет заголовок, то 
//Left := Screen.WorkAreaWidth - ClientWidth; и ClientHeight соответственно

0
 Аватар для VakhramoV
20 / 20 / 12
Регистрация: 07.02.2011
Сообщений: 82
04.01.2012, 13:56  [ТС]
Разобрался, если кому надо, то вот:

Delphi
1
2
3
4
5
6
7
8
procedure CreateFormInRightBottomCorner;
var
r : TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, Addr(r), 0);
Form1.Left := r.Right-Form1.Width;
Form1.Top := r.Bottom-Form1.Height;
end;

Цитата Сообщение от TopLoader Посмотреть сообщение
Всплывающие подсказки в правом нижнем углу экрана
Этому тоже искал решение и нашёл:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure ShowMessageInTray(const title_of_message, text_of_message : string; bf_variant : variant);
begin
  Form1.TrayIcon1.BalloonHint := text_of_message;
  Form1.TrayIcon1.BalloonTitle := title_of_message;
  Form1.TrayIcon1.BalloonFlags := bf_variant;
      {bfNone
    bfInfo
    bfWarning
    bfError}
  Form1.Trayicon1.BalloonTimeout := 3000;  {Form1.Trayicon1.BalloonTimeout := 3000; - Правда вот это ни на что не влияет, сделал на всякий случай}
  Form1.TrayIcon1.ShowBalloonHint;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.01.2012, 13:56
Помогаю со студенческими работами здесь

Как узнать текущее положение (координаты) формы на экране?
Заранее спасибо всем ответившим!)

Положение контрола относительно формы
Пытаюсь вот определить положение контрола относительно формы. Не было бы проблемы если бы этот контрол находился в form.Controls, но он в...

Размер и положение элемента относительно формы
Как сделать без &quot;быдлокода&quot;, чтобы элемент на форме имел такое же соотношение по размеру и положению какого бы размера небыло окно. ...

Как привязать положение формы к углу экрана
Как сделать чтоб форма при старте появлялась в углу еэкрана p.s. Знаю, что можно как то привязать относительно настроек монитора но не...

Не меняется позиция формы относительно экрана
Пытаюсь поменять позицию формы, не двигается, какие бы координаты не указал(пытаюсь в правый нижний угол вставить). Что делать? Вроде делаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru