Вверх ↑
Ответов: 537
Рейтинг: 14
#1: 2019-06-28 17:34:11 ЛС | профиль | цитата
Нужно сделать, чтобы когда тащишь мыхой основное окно за ним следовало и дочернее. Есть в форма для привязки позиции, а как сделать так, пользователь соединил две формы по горизонтале и когда тащить мышкой за заголовок главного окна, за ним следовало и дочернее. Без излишеств, нужно просто две формы рядом всегда держать
Add(MainForm,2953706,84,308)
{
Point(PHandle)
}
Add(ChildFormEx,13250501,175,301)
{
}
BEGIN_SDK
Add(EditMultiEx,2415256,21,21)
{
VarCount=#7:PHandle|
link(PHandle,2650935:PHandle,[(27,179)(41,179)])
}
Add(MainForm,2650935,35,105)
{
Left=35
Top=105
Point(PHandle)
}
END_SDK
Add(InlineCode,2897066,175,392)
{
@Hint=#15:Прилипание окна|
WorkPoints=#6:doInit|
DataPoints=#7:PHandle|7:Seizure|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|42:uses Windows, Kol, Share, Messages, Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|23: sSeizure: integer;|9: public|24: PHandle: THI_Event;|24: Seizure: THI_Event;|53: procedure doInit(var _Data: TData; Index: word);|5: end;|0:|14:implementation|0:|82:function WndProcMove(Sender: PControl; var Msg: TMsg; var Rslt: Integer): Boolean;|3:var|22: fClass: THiAsmClass;|11: n: TRect;|5:begin|18: Result := FALSE;|36: fClass := THiAsmClass(Sender.Tag);|16: with fClass do|7: begin|23: case Msg.message of|14: WM_MOVE:|11: begin|56: SystemParametersInfo(SPI_GETWORKAREA, 0, @n, 0);|50: if (Sender.Left <= n.left + sSeizure) then|31: Sender.Left := n.left|71: else if (Sender.Left + Sender.Width >= n.right - sSeizure) then|48: Sender.Left := n.right - Sender.Width;|48: if (Sender.Top <= n.Top + sSeizure) then|29: Sender.Top := n.top|72: else if (Sender.Top + Sender.Height >= n.bottom - sSeizure) then|49: Sender.Top := n.bottom - Sender.Height;|10: end;|8: end;|6: end;|4:end;|0:|29:procedure THiAsmClass.doInit;|3:var|21: sControl: PControl;|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|39: sSeizure := ToIntegerEvent(Seizure); |38: if not Assigned(sControl) then exit;|32: sControl.Tag := LongInt(Self);|35: sControl.AttachProc(WndProcMove);|4:end;|0:|4:end.|
link(Seizure,15097383:Text,[])
AddHint(48,10,104,13,@Hint)
}
Add(VisualStrings,15097383,182,357)
{
Lines=#1:5|
}

карма: 4

0
Редактировалось 3 раз(а), последний 2019-06-28 19:24:36