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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2012, 19:12   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Как создать такую форму?

Добрый вечер! Я создаю динамически форму. Мне нужно, чтобы она выглядела именно так (см.вложение). Чтобы ее можно было растягивать за нижний правый угол. С помощью каких компонентов это можно сделать? Сам код создания формы я написал, он работает хорошо. Проблема с внешним видом. В программе также используются Alpha Controls.
Изображения
Тип файла: png 222.png (2.4 Кб, 133 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 09.06.2012, 21:29   #2
[DisAssembleR]
Пользователь
 
Регистрация: 30.06.2011
Сообщений: 28
По умолчанию

Чтобы именно так выглядела (если я правильно все понял) необходимо создать скин с такими же цветами, как и во вложении.
Думаю, ты знаешь, как применить скин к форме. Также на sSkinManager1 проверь включенное SkinningRules>srStdForms, поскольку без этого не будет "покраски" формы.

Насчет треугольника - можно положить TImage (картинку подгружать из ресурсов) и при onMouseActivate увеличивать размер формы
[DisAssembleR] вне форума Ответить с цитированием
Старый 10.06.2012, 08:00   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

С Image вообще не вариант. Там используется обычный RichEdit, он также создается у меня динамически. У меня не получается 2 вещи:
1. Создать такой же заголовок
2. С помощью чего растягивать форму? За StatusBar?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 10.06.2012, 09:35   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
С Image вообще не вариант.
Компонент Альфа скинс
Цитата:
Создать такой же заголовок
Форма. На форме панель altop, на которой по углам расположены Image с рисунками кнопок. Под панелью alClient твой Ричэдит.
Цитата:
За StatusBar?
Почему бы и нет? Раз больше не за что ухватить споднизу
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2012, 18:11   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Stilet, я так и сделал и вот что получилось: (во вложении).
Теперь мне осталось:
1. Убрать линию на StatusBar-ом
2. Сделать чтобы форму можно было растягивать за треугольник в правом нижнем углу
3. Почему у меня по верхним углам, в Image-ах, у картинок белый фон, когда я точно знаю, что до загрузки картинок в sAlphaImageList у них фон - прозрачный
4. Сделать перемещение формы за заголовок
По 1,2 и 3 вопросу: как?
И по четвертому какие мысли?
Изображения
Тип файла: png Заметка.png (2.7 Кб, 101 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 10.06.2012, 18:38   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Убрать линию на StatusBar-ом
Думаю собака порылась в свойствах BevelInner, BevelOuter, BevelKind
Цитата:
Сделать чтобы форму можно было растягивать за треугольник в правом нижнем углу
Дык а он для этого и приспособлен. А что, не тянется?
Цитата:
Почему у меня по верхним углам, в Image-ах, у картинок белый фон
А вот тут не скажу... МОжет стоит другой компонент покруче чем Image достать...
Цитата:
Сделать перемещение формы за заголовок
Это панель? Тогда поиском по:
Код:
const
  Sc_dragmove = $F012;
begin
  ReleaseCapture;
  Perform(WM_SYSCOMMAND, Sc_dragmove, 0);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2012, 18:49   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Думаю собака порылась в свойствах BevelInner, BevelOuter, BevelKind
У него нет таких свойств.
Цитата:
А что, не тянется?
Да, не тянется. Форма создается как BorderStyle=bsNone (тогда рамки не видно)
Цитата:
Это панель?
Да, панель. Я знаю про этот код. Я описал его выше, надо процедурой создания динамически компонентов, так:
Код:
procedure TForm1.MoveNote(Sender: TObject);
const
 sc_dragmouve = $f012;
begin
 ReleaseCapture;
 Perform(WM_SYSCOMMAND,sc_dragmouve,0);
end;
А затем, когда создаю панель, то ей в событие OnMouseMove пытаюсь присвоить код выше, но получаю ошибку:
Код:
[DCC Error] Unit1.pas(2443): E2009 Incompatible types: 'Parameter lists differ'
Вот код создания панели:
Код:
     Panel:=TsPanel.Create(Form);
     Panel.SkinData.CustomColor:=True;
     Panel.SkinData.SkinSection:='';
     Panel.BevelOuter:=bvNone;
     Panel.Color:=$00B6F7F8;
     Panel.Align:=alTop;
     Panel.Height:=17;
     Panel.OnMouseMove:=MoveNote; //здесь ошибка
     Panel.Parent:=Form;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 10.06.2012, 19:09   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
'Parameter lists differ'
Не удивительно. Ты же проверь сколько параметров должно быть в OnMouseMove
Там кроме sender еще координаты и нажатия клавиш шифтов передаются.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2012, 19:22   #9
[DisAssembleR]
Пользователь
 
Регистрация: 30.06.2011
Сообщений: 28
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
4. Сделать перемещение формы за заголовок
Мысль следующая - положить на форму замечательный компонент из пакета АльфаСкинс - sDragBar, на вкладке AlphaAdditional.
А чтобы не "отсвечивал" на форме, задать ему в параметрах SkinData->SkinSection ту секцию, которая тебе кажется более подходящей.

Хотя можно также отредактировать процедуру:
Код:
procedure TForm1.MoveNote(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
const
 sc_dragmouve = $f012;
begin
 ReleaseCapture;
 Perform(WM_SYSCOMMAND,sc_dragmouve,0);
end;
Потестил - все работает

Последний раз редактировалось [DisAssembleR]; 10.06.2012 в 19:36. Причина: Еще одна мысль
[DisAssembleR] вне форума Ответить с цитированием
Старый 10.06.2012, 19:49   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Не, с перетаскиванием заголовка я разобрался (воспользовался советом [DisAssembleR]). Теперь осталось:
Сделать изменение размера формы за треугольник

С картинками тоже разобрался. Удалил Image, использовал обычный sSpeedButton и настроил его внешний вид при создании. Теперь остался только sStatusBar. Помогите с ним дорешать проблему?
----------------------------:
Вот, добился, чтобы форма выглядела так:
Изображения
Тип файла: png Заметка.png (2.7 Кб, 100 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 10.06.2012 в 20:29.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как создать такую форму? ИНDИГО Общие вопросы Delphi 7 20.01.2012 14:12
Как создать форму в ручную и освободить из памяти предыдущую форму, на С++Builder 2009? AndreyK Общие вопросы C/C++ 1 18.01.2012 20:54
Как в матлабе сделать такую же форму как в делфи? Владимир1111 Помощь студентам 0 04.06.2011 01:41
Как реализовать такую форму ввода (Delphi + Access) ZBEP БД в Delphi 4 25.05.2011 06:44
Где , и как достать такую штуку которая делает форму красивой ? asked86 Общие вопросы Delphi 6 14.12.2008 23:05