Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2010, 16:43   #1
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию Определение размеров компонента и положения по хендлу

Всем привет.

Кто нибудь подскажет, как узнать размеры компонента и его положение по хендлу?
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 02.05.2010, 16:49   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

GetParent, GetWindowRect ? Тяжело все таки...
BOBAH13 вне форума Ответить с цитированием
Старый 02.05.2010, 17:02   #3
Александриус
Новичок
Джуниор
 
Аватар для Александриус
 
Регистрация: 02.05.2010
Сообщений: 20
Радость Определение размеров компонента и положения по хендлу

1)
Цитата:
размеры компонента
-
Функция SetParent
Описание: function SetParent(WndChild, WndNewParent: HWnd): HWnd;
Изменяет pодителя дочеpнего окна на WndNewParent.
Параметры:
WndChild: Идентификатоp дочеpнего окна.
WndNewParent: Идентификатоp pодительского окна.
Возвpащаемое значение:Пpедыдущее pодительское окно.
2)
Цитата:
положение по хендлу
-
Функция GetWindowRect
Описание:function GetWindowRect(Wnd: HWnd; var Rect);
Считывает в ARect pазмеpности огpаничивающего пpямоугольника окна (в кооpдинатах экpана).
Параметры:
Wnd: Идентификатоp окна.
Rect: Пpинимающая стpуктуpа TRect.
Для изучения языка гораздо важнее свободная любознательность, чем грозная необходимость.
Александриус вне форума Ответить с цитированием
Старый 02.05.2010, 17:34   #4
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

BOBAH13, Александриус, спасибо за помощь. Но я не пойму, при чём тут GetParent/SetParent? И почему ниже приведенный код не снимает скрин "как надо", т.е. не с Rect.Left, Rect.Top?

Код:
procedure TfrmMain.GetPrintScreen(AWnd: HWND);
var
  BMP: TBitMap;
  Rect: TRect;
begin
  BMP := TBitMap.Create;
  BMP.Height := 600;
  BMP.Width := 800;
  GetWindowRect(AWnd, Rect);
  BitBlt(BMP.Canvas.Handle, Rect.Left, Rect.Top, BMP.Width, BMP.Height, GetDC(AWnd), 0, 0, SrcCopy);
  BMP.SaveToFile('Screen.bmp');
  BMP.Free;
end;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 02.05.2010, 19:17   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

потому что нужно получать Height и wight компонента..

Left и To абсолютно не то..
Человек_Борща вне форума Ответить с цитированием
Старый 02.05.2010, 22:33   #6
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Человек_Борща, если у меня не "то", то как будет "то"?
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 02.05.2010, 22:56   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

updated

можно проще..
получаем хендл компонента..
и вычисляем ширину..
Право-лево = ширина
Вверх-низ = высота

Последний раз редактировалось Человек_Борща; 02.05.2010 в 23:18.
Человек_Борща вне форума Ответить с цитированием
Старый 02.05.2010, 23:33   #8
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Человек_Борща, вот это ты дело говориш!! Как я сам не додумался. А как же быть с положением компонента сверху и слева?
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли

Последний раз редактировалось Marsel737; 02.05.2010 в 23:38.
Marsel737 вне форума Ответить с цитированием
Старый 02.05.2010, 23:53   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

что так сложно?
Код:
var
HWND:HWND;
Rc:Trect;
begin
GetWndowRect(HWND,Rc);
Label1.Caption:=IntToStr(Rc.Right-Rc.Left); //ширина Wight
Label1.Caption:=IntToStr(Rc.Bottom-Rc.Top); //высота Height
end;
Код:
Rc.Left положение слева
Rc.Top положение сверху
Do you understand?
Человек_Борща вне форума Ответить с цитированием
Старый 03.05.2010, 00:35   #10
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Человек_Борща, ты мой вопрос перечитай прежде чем писать "Do you understand?" и так далее в таком же роде.

Цитата:
Сообщение от Марсель
И почему ниже приведенный код не снимает скрин "как надо", т.е. не с Rect.Left, Rect.Top?
Цитата:
Сообщение от Марсель
А как же быть с положением компонента сверху и слева?
Код:
procedure TfrmMain.GetPrintScreen(AWnd: HWND);
var
  BMP: TBitMap;
  Rect: TRect;
begin
  BMP := TBitMap.Create;
  GetWindowRect(AWnd, Rect);
  BMP.Height := Rect.Bottom - Rect.Top;
  BMP.Width := Rect.Right - Rect.Left;
  BitBlt(BMP.Canvas.Handle, Rect.Left, Rect.Top, BMP.Width, BMP.Height, GetDC(AWnd), 0, 0, SrcCopy);
  BMP.SaveToFile('Screen.bmp');
  BMP.Free;
end;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение положения указателя в TEdit ImmortalAlexSan Общие вопросы Delphi 2 24.04.2010 17:05
Узнать Caption по хендлу Bayazet Общие вопросы Delphi 1 05.02.2010 12:21
Как уничтожить окно по его хендлу VintProg Общие вопросы Delphi 5 10.11.2009 09:04
Определение размеров Shape Я_Алешко Microsoft Office Word 2 28.10.2009 13:59
Определение размеров картинки Kocapb Общие вопросы C/C++ 1 03.12.2007 20:49