Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 501

/ вопрос открыт /

Здравствуйте!В приложении к вопросу код создания круглой формы.
А как мне на эту форму кинуть Image той же формы и тех же размеров и второе как вынести кнопку закрытия формы за приделы формы.

Приложение:
  1. unit Unit1;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Classes, Graphics, Controls,
  5. Forms, Dialogs, ExtCtrls, Buttons, StdCtrls;
  6. type
  7. TForm1 = class(TForm)
  8. Button1: TButton;
  9. procedure FormCreate(Sender: TObject);
  10. procedure Button1Click(Sender: TObject);
  11. private
  12. { Private-Deklarationen}
  13. procedure CreateParams(var Params: TCreateParams); override;
  14. public
  15. { Public-Deklarationen}
  16. end;
  17. var
  18. Form1: TForm1;
  19. implementation
  20. {$R *.DFM}
  21. { TForm1 }
  22. procedure TForm1.CreateParams(var Params: TCreateParams);
  23. begin
  24. inherited CreateParams(Params);
  25.  
  26. Params.Style := Params.Style or ws_popup xor ws_dlgframe;
  27. end;
  28. procedure TForm1.FormCreate(Sender: TObject);
  29. var
  30. FormRgn: hRgn;
  31. begin
  32. {clear form}
  33. Form1.Brush.Style := bsSolid; //bsclear;
  34.  
  35. GetWindowRgn(Form1.Handle, FormRgn);
  36.  
  37. DeleteObject(FormRgn);
  38.  
  39. Form1.Height := 500;
  40. Form1.Width := Form1.Height;
  41.  
  42. FormRgn := CreateRoundRectRgn(1, 1, Form1.Width - 1,
  43. Form1.height - 1, Form1.width, Form1.height);
  44.  
  45. SetWindowRgn(Form1.Handle, FormRgn, TRUE);
  46. end;
  47. procedure TForm1.Button1Click(Sender: TObject);
  48. begin
  49. Form1.close;
  50. end;
  51. end.


GAZ Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: GAZ (статус: Посетитель)
Вопрос отправлен: 10 марта 2009, 18:40
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Ученый

Здравствуйте, GAZ! Для того что бы перетаскивать мышкой по рабочему столу форму надо добавить в private:

procedure WMLButtonDown(var Msg: TMessage); message WM_LBUTTONDOWN;
и написать процедуру:

 procedure TForm1.WMLButtonDown(var Msg: TMessage);
begin
Perform(WM_NCLBUTTONDOWN, HTCAPTION, Msg.LParam);
end;

и всё....

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. private
  12. { Private declarations }
  13. procedure WMLButtonDown(var Msg: TMessage); message WM_LBUTTONDOWN;
  14. public
  15. { Public declarations }
  16. end;
  17.  
  18. var
  19. Form1: TForm1;
  20.  
  21. implementation
  22.  
  23. {$R *.dfm}
  24. procedure TForm1.WMLButtonDown(var Msg: TMessage);
  25. begin
  26. Perform(WM_NCLBUTTONDOWN, HTCAPTION, Msg.LParam);
  27. end;
  28. end.


Ответ отправил: Ученый (статус: 8-ой класс)
Время отправки: 11 марта 2009, 20:21
Оценка за ответ: 5

Комментарий к оценке: Теперь всё двигается,но форма захватывает верхнюю часть заголовка

Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 11 марта 2009, 20:56; участников в обсуждении: 3.
Вадим К

Вадим К (статус: Академик), 10 марта 2009, 22:55 [#1]:

А если просто поставить Image, то форма станет прямоугольной?
Вынести кнопку за пределы формы нельзя. Она не может висеть в воздухе. Но можно сделать по другому. Либо создать регион под кнопку и соединить его с круглым регионом, либо, что будет наверно проще, сделать ещё одну маленькую форму без заголовка, куда кинуть кнопку. Это даст возможность поставить её где угодно.
Галочка "подтверждения прочтения" - вселенское зло.
GAZ

GAZ (статус: Посетитель), 11 марта 2009, 18:44 [#2]:

Всё разобрался забыл у Image Align в alClient установить.У меня другая беда форма не хочет двигаться,что делать?
Вадим К

Вадим К (статус: Академик), 11 марта 2009, 18:45 [#3]:

А раньше двигалась?
Галочка "подтверждения прочтения" - вселенское зло.
GAZ

GAZ (статус: Посетитель), 11 марта 2009, 19:41 [#4]:

НЕТ!
Ученый

Ученый (статус: 8-ой класс), 11 марта 2009, 19:43 [#5]:

как понять двигаться не хочет? мышкой нельзя по рабочему столу таскать?
GAZ

GAZ (статус: Посетитель), 11 марта 2009, 20:07 [#6]:

Да!
GAZ

GAZ (статус: Посетитель), 11 марта 2009, 20:56 [#7]:

Учёный
Теперь всё двигается,но форма захватывает верхнюю часть заголовка

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:41
Выполнено за 0.03 сек.