-
Плиз помогите. В универе препод достал. Кто-нить знает, как реализовать возможность, изменения размеров визуальных компонентов (например TPanel) за маркеры в Run - Time.
-
Отвечаю на вопрос - Я знаю !
-
Примерчик можно. А то от того что ты знаешь мне легче не стало.
-
Блин, что-то накопала... ведь правильно говорят, если кто-то(DimaBr) знает, то он все равно не подскажет.
Есть свойство у TControl'a наследуемое от TComponent:
type TComponentState = set of (csLoading, csReading, csWriting, csDestroying, csDesigning, csAncestor, csllpdating, csFixups, csFreeNotification, cslnline, csDesignlnstance); property ComponentState: TComponentState;
Которое дает представление о текущем состоянии компонента. Состояние может измениться в результате получения компонентом некоторого сообщения, действий разработчика, выполнения акции и т. д. Это свойство активно используется средой разработки.
Вопрос как Run-Time (во время выполнения программы) в классе TControl, в свойство ComponentState включит csDesigning (ведь свойство доступно только для чтения). Тогда, я предполагаю, должны появиться маркеры, за которые можно менять размеры любого визуального компонента при помощи мышки... Я права? Плиз помогите....
-
> ведь правильно говорят, если кто-то(DimaBr) знает, то он все равно не подскажет.
Вот тут вы ошибаетесь... неправильно говорят. Я просто ответил на ваш вопрос.
> "большая тирада....." > Я права? Плиз помогите....
Не не правы. Свойство ComponentState изменить нельзя. Оно показывает в каком состоянии находится компонент и предназначено в основном для разработчиков компонентов, дабы изменить поведение в тот или иной промежуток времени.
В вашем случае нужно создать "дизайнер форм" - некий редактор который будет отрисовывать (скорее всего позиционировать восемь маленьких чёрненьких панелек) вокруг Активного контрола и изменять его размеры.
Где-то я видел готовый "дизайнер" с исходниками.
-
Есть не визуальный компонент Runtime Edition Components (Trial версия). Вот там есть все то, что мне нужно. Я его скачала, но там нет исходников тока .dcu файлы... так, что вопрос остается открытым...
-
> Алёнка (11.04.07 10:31) [5]Никакие свойства никаких контролов сами по себе этого не позволяют. Это делает среда разработки, она же создает и маркеры. Вот среду Вам и нужно писать. Задачка это среднему студенту вряд ли по зубам (видимо, сильно Вы достали этого препода, раз он тоже решил Вас достать и подкинул такую каверзу). Поэтому вижу лишь один выход - найти готовое решение (правда, надо будет еще в нем разобраться, иначе могут быть проблемы с защитой). Загляните, например, сюда: http://www.dream-com.com
-
Думаю ничего сложного. Создаём компонент, который перехватывает событие Screen.OnActiveControlChange
procedure TMyComponent.Create(AOwner: TComponent);
begin
OldActiveControlChange = Screen.OnActiveControlChange;
Screen.OnActiveControlChange := MyActiveControlChange;
end;
procedure TMyComponent.MyActiveControlChange(Sender: TObject);
begin
OldActiveControlChange(Sender);
ActiveControl := TControl(Sender);
FocusSizeMark;
end;
-
> DimaBr (11.04.07 14:17) [7]
Осталось только научить этот компонент перехватывать еще и графические контролы, в также создавать удалять маркеры, таскать контролы и группы контролов, менять размеры контролов перетаскиванием маркеров. И чтобы щелчок по самому маркеру не вызывал нашего события. И чтобы юзер не вздумал это событие перекрыть. :о)
Дима, я думаю, что каждому из нас тут работы хватит дней на несколько. И что средний студент с такой задачкой вряд ли вообще справится.
-
> каждому из нас тут работы хватит дней на несколько
Согласен, просто обидно за фразу ведь правильно говорят, если кто-то(DimaBr) знает, то он все равно не подскажет
-
> DimaBr (11.04.07 15:01) [9]
Дык... сам ведь напросился... в [1]... на что же обижаться-то? :о)
-
> на что же обижаться-то?
Просто зачастую на форумах много флейма из чего и вытекает такая предубеждённость. Однако глядя на количесто закрытых тем и порезанных сообщений видно что модератор не спит. Ура модератору !!!
-
Спасибо DimaBr и Юрию Зотову. Событие Screen.OnActiveControlChange и http://www.dream-com.com это уже кое что... уже на Вашу помощь и не надеялась... приятно удивлена... попробую сама написать... хоть и “середничек” (звучит обидно) По ходу написания (думаю в ближайшие два-три дня) буду задавать вопросы по это теме и прошу всех кто хоть как-то может помочь, не стесняться...
-
Учтите, что Screen.OnActiveControlChange срабатывает при смене фокуса, а для TGraphicsControl фокус не меняется, так как они вообще окном не обладают
-
Все вроде наконец сделала... правда кое-то помогал.
|