Текущий архив: 2003.09.29;
Скачать: CL | DM;
Вниз
Окно с изменением размера Найти похожие ветки
← →
REA © (2003-09-16 14:46) [0]Хочется сделать окно редактирования от TCustomEditBox, но с возможностью задания его размера пользователем (как в Excel при вводе комментария к ячейке). Попытка вставить стиль WS_SIZEBOX приводит к каким-то не таким результатам - появляется рамка (она в принципе не нужна), но размер не изменить. Есть варианты?
Можно наверно повесить обычное окно и в него уже Edit, но хочется чтобы рамочка была как в Excel или вообще без нее. Можно и руками нарисовать конечно, но нет ли варианта попроще?
← →
ZEE © (2003-09-16 14:51) [1]а почему бы не поместить твой Edit на Panel (чтоб рамочка была видна, хотя бы пару пикселов) и в панели обрабатывать OnMouseDown, OnMouseMove, OnMouseUp
← →
ZEE © (2003-09-16 14:54) [2]или другой вариант:
поместить на форму вместе с Edit еще восем Panel (маленькие черненькие квадратики - ну как в Дельфи) и у них также обрабатывать события от зверя...
← →
REA © (2003-09-16 14:57) [3]второй вариант отметаем как извращение, а вот первый в принципе жизнеспособен, но придется делать прорисовку процесса масштабирования как Splitter - не очень хорошо и много писанины.
Хочется использовать возможности OS, а не писать все самому.
← →
REA © (2003-09-16 21:22) [4]Ну в самом то редакторе нечто подобное сделано - никто не знает как? Подойдут любые варианты.
← →
REA © (2003-09-17 10:15) [5]Нашел какой-то классик TToolWindow - кто нибудь использовал? Можно для топика приспособить?
← →
KSergey © (2003-09-17 12:11) [6]Можно для топика приспособить?
Раз он есть - может попробовать? ;)
Я так и не понял нифига вопроса. Надо чтобы можно было изменять размеры "квадратиками" и мышю или при вводе текста Edit должне сам раздвигаться?
Если "квадратиками" - см., например, вот что:
http://z-ol.chat.ru/cmp.htm
TStretchHandles Прозрачный компонент, применяемый для перемещения визуальных элементов формы и изменения их размеров во время работы программы. Во время работы от визуально очень напоминает редактор Delphi
← →
REA © (2003-09-17 12:37) [7]Детализирую: есть компонент мой в котором есть некие надписи, которые надо редактировать inplace с многострочным editbox. Мне поазалось удобным редактирование как в Excel комментария либо как в Word надписи в рамке. Т.е. размер надписи пользователь может задать мышью. В принципе это похоже на то, что в Delphi в design mode. Можно с квадратиками, можно без, но без стандартной thickframe рамки (уж больно коряво смотрится на компоненте).
← →
REA © (2003-09-17 12:38) [8]PS: Спасибо за ссылку - сейчас посмотрю. Я уже все Torry перерыл.
← →
REA © (2003-09-17 13:12) [9]Посмотрел. Неплохой код, но есть типичные ошибки. Например не обрабатывается WMCancel - при переключении по AltTab в процессе изменения размера на экране остается мусор. Можно использовать данный подход, но вероятно можно проще и короче - все таки мне нужна не столь универсальная вещь.
← →
KSergey © (2003-09-17 13:17) [10]А может тогда попробовать в этом компоненте (он же все равно потомок окна?) обрабатывать WM_NCHITTEST? (вроде так зовется) Ну и на краю рамки возвращать, что это изменяемый бордюр - возможно винда сама тогда все чудесно устроит...
но надо пробовать, просто мысли в слух. На Edit"е такого не пробовал.
← →
Игорь Шевченко © (2003-09-17 13:53) [11]сделать окошко в виде рамки, например, регионом, и при изменении его размеров менять размер Edit"а.
← →
REA © (2003-09-17 14:54) [12]Я уже тоже допер WM_NCHITTEST использовать с Memo. Пока не доделал, но результат устраивает. Что то я позабыл про это сначала.
← →
REA © (2003-09-17 16:18) [13]Код получился такой:
Procedure TSizeableMemo.WMNCHitTest(var Message: TWMNCHitTest);
Const Delta = 4;
Var Res: Longint;
begin
inherited;
With Message, BoundsRect, Parent.ScreenToClient(Point(XPos, YPos)) Do
Begin
Res := HTMAXBUTTON;
If Abs(Y-Top)<Delta Then Res := HTTOP Else
If Abs(Y-Bottom)<Delta Then Res := HTBOTTOM;
If Abs(X-Left)<Delta Then Inc(Res) Else
If Abs(X-Right)<Delta Then Inc(Res, 2);
If Res>HTMAXBUTTON Then Result := Res;
End;
End;
Всем спасибо.
← →
pasha_golub © (2003-09-17 16:29) [14]Я вот так сделал. Переписал CreteParams, может поможет
procedure TDBGridInplaceEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or WS_border{or WS_THICKFRAME} or ES_AUTOVSCROLL;
Params.Style := Params.Style and not ES_AUTOHSCROLL;;
end;
← →
pasha_golub © (2003-09-17 16:31) [15]Это я мультистрочный inplaceedit для ДБГрид сделал, летает на ура
← →
REA © (2003-09-17 22:17) [16]Я так примерно и делал сначала, но мне показалось некрасиво - слишком толстая рамка в документе на белом фоне не смотрится.
Страницы: 1 вся ветка
Текущий архив: 2003.09.29;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.022 c