0 Members and 2 Guests are viewing this topic.
procedure Execute(Sender, Arguments: TComponent); var text, cont, a, b, c, : Integer;begin text := FindObject('TextDisplayEx').Get('PlaceInfo.ActualWidth'); cont := FindObject('LayoutContainer11').Get('PlaceInfo.Size.Width'); a := text + 86; b := cont - 86; if text <= cont then begin FindObject('Panel29').Set('PlaceInfo.Size.Width', cont); end else begin FindObject('Panel29').Set('PlaceInfo.Size.Width', a); end; end;
"Пишет" - кто?У контейнеров нет свойства PlaceInfo, а PlaceInfo.Size.Width лучше не испоьзовать, в справке есть упоминание об этом.
2 KibermanickТы бы сделал нечто вроде макета на пустом проекте - намного проще было бы помочь, зная конкретную задачу.
Установить: FindObject('TextDisplayEx').Set('AutoSize', '[csHeight, csWidth]');Сбросить: FindObject('TextDisplayEx').Set('AutoSize', '[]');
procedure Execute(Sender, Arguments: TComponent); var text, cont, a, b, c, : Integer; begin text := FindObject('TextDisplayEx').Get('PlaceInfo.ActualWidth'); cont := FindObject('LayoutContainer11').Get('ActualWidth'); a := text + 86; b := cont - 86; if text >= cont then begin FindObject('Panel29').Set('PlaceInfo.Size.Width', cont); FindObject('TextDisplayEx').Set('AutoSize', '[]'); FindObject('TextDisplayEx').Set('PlaceInfo.Anchors', '[akLeft, akTop, akRight,]'); FindObject('TextDisplayEx').Set('PlaceInfo.Margins.Right', 43); FindObject('TextDisplayEx').Set('PlaceInfo.Margins.Left', 43); FindObject('TextDisplayEx').Set('PlaceInfo.Size.Width', b); end else begin FindObject('Panel29').Set('PlaceInfo.Size.Width', a); FindObject('TextDisplayEx').Set('PlaceInfo.Anchors', '[akLeft, akTop]'); FindObject('TextDisplayEx').Set('PlaceInfo.Margins.Left', 43); FindObject('TextDisplayEx').Set('AutoSize', '[csWidth]'); end; end;
Наверное тут логическая ошибка в том что при срабатывании условия я вроде как опять меняю размер который опять вызывает условие которое......