Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с двумя мониторами 
V
    Опции темы
Albinos_x
Дата 25.5.2006, 05:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Доброе время суток!

Мне нужно, чтоб прога проверяла количество установленных мониторов. Если один, то одни действия, если 2 то нужно чтоб одна форма открылась на одном мониторе, вторая на втором...

пытался через:
Код

Monitor....

но чего-то я пока не догоняю как спомощью него это можно реализовать...

Заранее спасибо! 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Mechanic
Дата 25.5.2006, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

Репутация: 6
Всего: 7



TScreen.Monitors;
TScreen.MonitorCount;
TForm.Position;
TForm.DefaultMonitor..


--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
Albinos_x
Дата 25.5.2006, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



что-то наподобии, но у меня таких свойств нет...

Добавлено @ 09:11 
у меня только свойства для чтения:

Код

Monitor.Handle;
Monitor.MonitorNum;
 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Snowy
Дата 25.5.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



кол-во:
Код

  k := GetSystemMetrics(SM_CMONITORS);

Перебрать мониторы: EnumDisplayMonitors.
Функции по работе с мониторами в MSDN в разделе "Multiple Display Monitors Overview"
А вообще, все это уже реализовано в TScreen 
PM MAIL   Вверх
Yanis
Дата 25.5.2006, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Albinos_x @  25.5.2006,  10:08 Найти цитируемый пост)
но у меня таких свойств нет...

Monitor свойство TForm - располагается в модуле Forms.pas. Класс TScreen располагается в модуле Forms.pas. Так почему у тебя нету? 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Albinos_x
Дата 25.5.2006, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



TScreen то есть, а вот Monitors; и MonitorCount; у него нет 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Yanis
Дата 25.5.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Может вместо 
Код
Screen.MonitorCount
 ты пишешь 
Код
TScreen.MonitorCount



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Albinos_x
Дата 25.5.2006, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



о точно!!! чего-то с утра начинаю тормозить smile 

осталось разобраться, как раскидать формы по мониторам... 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Snowy
Дата 25.5.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Ну вот. А я тут на WinAPI строчу... smile
Код

var
  MonitorCount: Integer = 0;

implementation

{$R *.dfm}

function EnumDisplayMonitors(dc: HDC; rect: PRect; EnumProc: pointer; lData: LPARAM): BOOL; stdcall; external user32;

function MonitorEnumProc(hMonitor: THandle; hdcMonitor: HDC; lprcMonitor: DWORD; dwData: LPARAM): BOOL; stdcall;
begin
  Inc(MonitorCount);
  with Form1.Memo1.Lines do begin
    Add('Monitor' + IntToStr(MonitorCount) + ':');
    Add('  Handle:'#9 + IntToHex(hMonitor, 4));
    Add('  DC:'#9 + IntToStr(hdcMonitor));
  end;
  result := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumDisplayMonitors(0, nil, Addr(MonitorEnumProc), 0);
end;

А чего тут думать - ставь координаты формы куда нуно и всё.     
PM MAIL   Вверх
Albinos_x
Дата 25.5.2006, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(Snowy @  25.5.2006,  10:47 Найти цитируемый пост)
А чего тут думать - ставь координаты формы куда нуно и всё.  

т.е. Screen передаёт суммарное значение ширины двух мониторов? я правильно понял? 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Snowy
Дата 25.5.2006, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



DesktopWidth и DesktopHeight - суммарная площадь рабочего стола
Width и Height - текущего экрана.
Если не путаю.

Добавлено @ 11:28 
Чтобы впихнуть форму в нужный монитор (Screen.Monitors[x].WorkAreaRect) - получи координаты экрана у каждого монитора и впиши форму в них. 
PM MAIL   Вверх
Albinos_x
Дата 25.5.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



всё понял... спасибо! 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0811 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.