Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.11.2012, 20:40
DOR DOR вне форума
Начинающий
 
Регистрация: 14.01.2011
Сообщения: 171
Версия Delphi: 7
Репутация: 10
По умолчанию Визибл формы в определенном месте

Добрые вечер, подскажите пожалуйста, как нужно преобразовать код, чтобы при нажатии на кнопку или комбобокс форма появлялась под ними
Код:
procedure Tf_ABP.sbt_DeleteClick(Sender: TObject);
var
pt: TPoint;
begin
  with Sender as TJvSpeedButton do
  begin
    pt := Classes.Point(Left, Top + Height);;
    pt := Parent.ClientToScreen(pt);
  end;
  PopupMenu2.Popup(pt.X, pt.Y);
end;
Ответить с цитированием
  #2  
Старый 19.11.2012, 12:35
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от DOR
Добрые вечер, подскажите пожалуйста, как нужно преобразовать код, чтобы при нажатии на кнопку или комбобокс форма появлялась под ними
Положение формы - свойства Left и Top, показать форму - метод Show.
Ответить с цитированием
  #3  
Старый 19.11.2012, 15:58
DOR DOR вне форума
Начинающий
 
Регистрация: 14.01.2011
Сообщения: 171
Версия Delphi: 7
Репутация: 10
По умолчанию

Код:
procedure Tf_ABP.sbt_DeleteClick(Sender: TObject); 
var
t: TPoint; 
 begin  
  with Sender as TJvSpeedButton do  
   begin    pt := Classes.Point(Left, Top + Height);     
              pt := Parent.ClientToScreen(pt);   
   end;   
   forma1.top := pt.Y;
   forma1.left := pt.X;
   forma1.show;
end; 
Так?
Ответить с цитированием
  #4  
Старый 19.11.2012, 16:00
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от DOR
Код:
...
   forma1.top := pt.Y;
   forma1.left := pt.X;
   forma1.show;
end; 
Так?
А разве не работает?
Ответить с цитированием
  #5  
Старый 19.11.2012, 16:26
DOR DOR вне форума
Начинающий
 
Регистрация: 14.01.2011
Сообщения: 171
Версия Delphi: 7
Репутация: 10
По умолчанию

работает,но форма появляется не под кнопкой, а правее и ниже нее.
Ответить с цитированием
  #6  
Старый 19.11.2012, 16:47
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от DOR
работает,но форма появляется не под кнопкой, а правее и ниже нее.
А так?:
Код:
var
  pt: TPoint;
  bt: TJvSpeedButton;
begin
  bt := Sender as TJvSpeedButton;
  pt := bt.Parent.ClientToScreen(Point(bt.Left, bt.Top + bt.Height));
  forma1.Top := pt.Y;
  forma1.Left := pt.X;
  forma1.Show;
end;
Ответить с цитированием
  #7  
Старый 19.11.2012, 17:17
DOR DOR вне форума
Начинающий
 
Регистрация: 14.01.2011
Сообщения: 171
Версия Delphi: 7
Репутация: 10
По умолчанию

Нет, тоже самое появляется, но с большими отклонениями вниз и вправо.
Ответить с цитированием
  #8  
Старый 19.11.2012, 17:30
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от DOR
Нет, тоже самое появляется, но с большими отклонениями вниз и вправо.
Ну и дела...
Распакуй и запусти пример во вложении, и понажимай там кнопки.
Вложения
Тип файла: zip TestShowForm2.zip (2.9 Кбайт, 4 просмотров)
Ответить с цитированием
  #9  
Старый 19.11.2012, 18:07
DOR DOR вне форума
Начинающий
 
Регистрация: 14.01.2011
Сообщения: 171
Версия Delphi: 7
Репутация: 10
По умолчанию

Блин, я просто забыл выставить свойство стартового положения вызываемой формы. а к компонентами на форме такой номер пройдет?например с грид или с комбобокс.
Ответить с цитированием
  #10  
Старый 19.11.2012, 18:15
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от DOR
Блин, я просто забыл выставить свойство стартового положения вызываемой формы. а к компонентами на форме такой номер пройдет?например с грид или с комбобокс.
Если правильно сделать, то можно
Ответить с цитированием
  #11  
Старый 19.11.2012, 18:19
DOR DOR вне форума
Начинающий
 
Регистрация: 14.01.2011
Сообщения: 171
Версия Delphi: 7
Репутация: 10
По умолчанию

poli-smen, подскажите пожалуйта, как
Ответить с цитированием
  #12  
Старый 19.11.2012, 18:36
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от DOR
poli-smen, подскажите пожалуйта, как
Если у компонента который должен выскакивать под кнопкой будет тот же Parent, что и у кнопки, то не нужно делать приведение координат через ClientToScreen. Будет примерно так:
Код:
var
  bt: TJvSpeedButton;
begin
  bt := Sender as TJvSpeedButton;
  Grid1.Top := bt.Top + bt.Height;
  Grid1.Left := bt.Left;
end;
Или например можно чтобы у "выскакивающего" компонента Parent-ом была сама форма и перемещать этот компонент в самый верх через BringToFront.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
DOR (19.11.2012)
  #13  
Старый 19.11.2012, 18:55
DOR DOR вне форума
Начинающий
 
Регистрация: 14.01.2011
Сообщения: 171
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Если у компонента который должен выскакивать под кнопкой будет тот же Parent, что и у кнопки, то не нужно делать приведение координат через ClientToScreen. Будет примерно так:
Код:
var
  bt: TJvSpeedButton;
begin
  bt := Sender as TJvSpeedButton;
  Grid1.Top := bt.Top + bt.Height;
  Grid1.Left := bt.Left;
end;
Или например можно чтобы у "выскакивающего" компонента Parent-ом была сама форма и перемещать этот компонент в самый верх через BringToFront.

оно самое. спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:03.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025