Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
ВнизДочерние формы как в Fotoshop Найти похожие ветки
← →
Agent Smith (2002-06-03 12:36) [0]как сделать сабж?
← →
Agent Smith (2002-06-03 12:37) [1]Опечатка вышла: как в Photoshop
← →
PVOzerski (2002-06-03 12:40) [2]В Help и в меню "New/Projects " есть пункт "создание MDI-приложений". Это оно и есть.
← →
Cossys (2002-06-03 13:32) [3]MDI Вам не надо. Создаете обычные формы, устанавливаете свойства:
FormStyle := fsStayOnTop;
BorderStyle := bsToolWindow;
А вот, что бы при передаче фокуса на другую форму заголовок не становился серым (якобы заголовок активный) в обработчике
onDeactivate:
FlashWindow(YoursForm.Handle, True);
← →
PVOzerski (2002-06-03 14:12) [4]Вообще-то PhotoShop, по крайней мере те версии для PC, которые я видел, именно MDI.
Но и не-дочерние ToolWindows, действительно, он тоже имеет.
← →
Agent Smith (2002-06-03 14:27) [5]Cossys, хочется понять, как раборает
FlashWindow(YoursForm.Handle, True);
← →
Agent Smith (2002-06-03 15:00) [6]Cossys правильно понял мою идею, но в его способе (имеется в виду событие onDeactivate) есть некоторые баги: если последовательно делать активными две формы, то проявляются глюки в прорисовке: область вокруг кнопок управления окном (закрыть, свернуть)все равно становится серой. Также когда само приложение становится не активным, то синий заголовок имеет только одна из форм. И это при том, что я прописал по два FlashWindow (для обоих форм) одновременно в onDeactivate обеих форм.
← →
Agent Smith (2002-06-03 15:02) [7]PVOzerski, ты не правильно меня понял. Конечно, окна редактирования изображений в Photoshop - MDI, но я имею в виду плавающие панели инструментов.
← →
Cossys (2002-06-03 16:30) [8]to Agent Smith
Я с этим боролся по другому (кстати, может в Фотошопе менюшки и MDI, зато во Flash-ке - обычные, поэтому это дело вкуса). Откровенно говоря, FlashWindow я использую для главного окна приложения (глюков с ним я у себя не видел). Для менюшек я убиваю заголовки форм, а заголовок эмулирую (сам рисую в Фотошопе :)) Делаю, что б форму можно было за эти "заголовки" перетягивать - и все, готовое окно.
По поводу FlashWindow... в хэлпе есть, точно.
← →
Agent Smith (2002-06-03 18:00) [9]А как наиболее рационально организовать перетаскивание за лже - шапку?
← →
Song (2002-06-03 18:03) [10]WM_NCHITTEST ?
← →
Cossys (2002-06-03 18:13) [11]В класс формы добавляете
private
{ Private declarations }
protected
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
public
procedure CreateParams(var Params: TCreateParams); override;
end;
implementation
uses Rep1pbEDITOR;
{$R *.DFM}
procedure TfrmPNLSettings.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
Message.Result := HTCAPTION;
end;
procedure TfrmPNLSettings.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := WS_THICKFRAME or WS_POPUP or WS_BORDER;
end;
Все - заголовков не будет, а перетаскивать можно будет за "любое место"
:)
← →
Agent Smith (2002-06-03 20:11) [12]
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button <> mbLeft then exit;
ReleaseCapture;
Form1.Perform(WM_SysCommand,$F012, 0);
end;
Мне больше такое нравится. И перетаскивать тоже можно за "любое место" :)
Ваше мнение? Что вообще эстетичнее?
ЗЫ: Опытным путем бало установленно, что в Photoshop панели инструментов за "любое место" утащить нельзя.
← →
Agent Smith (2002-06-04 04:54) [13]Ну так что?
← →
Cossys (2002-06-04 10:33) [14]Ну правильно, за "любое место" и не утяните. На свою форму помещаете TPanel, TTabControl - и все, тоже никуда не утяните.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c