Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];

Вниз

Странное поведение якорей TPanel+TEdit+Anchors   Найти похожие ветки 

 
Sha ©   (2009-03-09 12:46) [0]

Вот с чем столкнулся. Отлаживаю компонент. Пытаюсь понять, почему он некорректно перерисовывает себя в ран-тайме (а именно, не действуют якоря у некоторых подкомпонентов).

Упрощенно все сводится к такому примеру. На форме - заякоренная по верху и по низу или выравненная панель, на панели - заякоренный по низу едит. При создании формы (в OnCreate) меняем, например, ее высоту и размер шрифта формы. В результате на время создания едит забывает про свои якоря.

Интересно, что если переставить операторы в FormCreate, то едит не теряет память.
Надеюсь, этому есть разумное объяснение...


unit Unit1;

interface

uses
 StdCtrls,
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Сontrols, Forms, Dialogs, ExtCtrls;

type
 TForm1 = class(TForm)
   Panel1: TPanel;
   Edit1: TEdit;
   Edit2: TEdit;
   procedure FormCreate(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Height:=Height+100;
 Font.Size:=10;
end;

end.

object Form1: TForm1
 Left = 192
 Top = 107
 Width = 293
 Height = 105
 Caption = "Form1"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 OnCreate = FormCreate
 DesignSize = (
   285
   78)
 PixelsPerInch = 96
 TextHeight = 13
 object Panel1: TPanel
   Left = 0
   Top = 0
   Width = 137
   Height = 78
   Align = alLeft
   Caption = "Panel1"
   TabOrder = 0
   DesignSize = (
     137
     78)
   object Edit1: TEdit
     Left = 8
     Top = 47
     Width = 121
     Height = 21
     Anchors = [akLeft, akBottom]
     TabOrder = 0
     Text = "Edit1"
   end
 end
 object Edit2: TEdit
   Left = 152
   Top = 48
   Width = 121
   Height = 21
   Anchors = [akLeft, akBottom]
   TabOrder = 1
   Text = "Edit2"
 end
end


 
Sha ©   (2009-03-09 12:54) [1]

PS
Просьба не воспринимать буквально :)

> едит забывает про свои якоря.
</I
> то едит не теряет память.

>


 
sniknik ©   (2009-03-09 14:29) [2]

> Интересно, что если переставить операторы в FormCreate, то едит не теряет память.
или закомментарить Font.Size:=10;... добавление чего то другого, типа Edit1.Text:= "hkj";/PixelsPerInch:= 120; вместо него не влияет...


 
Тимохов ©   (2009-03-10 13:25) [3]

Да... интересная ошибка.

Дело в том, что TEdit реагирует на изменение размера шрифта и вот здесь TCustomEdit.AdjustHeight меняет свою высоту в момент изменения размера шрифта, что в свою очередь приводит к вызову TControl.UpdateAnchorRules, где в строке
if Parent <> nil then
     Parent.UpdateControlOriginalParentSize(Self, FOriginalParentSize);

запоминается FOriginalParentSize, который на момент вызова уже учитывает + 100 у родительской панели.

И в дальнейшем при учете acnhors для Edit1 он считает, что у него FOriginalParentSize уже больше на 100 и не хочет себя сдвигать.

Зоопарк в общем.

Очевидный недочет.

Думаю, что стоит указать на него разработчику через QC.


 
Тимохов ©   (2009-03-10 15:57) [4]

Если не против, то сам репорт бросил. Пусть разбираются.
http://qc.embarcadero.com/wc/qcmain.aspx?d=72087


 
Sha ©   (2009-03-10 16:34) [5]

Тогда и TLabel туда до кучи добавить надо.


 
Тимохов ©   (2009-03-10 16:36) [6]

Видимо, да. Допишу сейчас.


 
Тимохов ©   (2009-03-11 00:51) [7]

Приветствуется любая информация о других компонетов, которые себя ведут также же плохо в аналогичном случе.


 
Германн ©   (2009-03-11 01:28) [8]


> Тимохов ©   (11.03.09 00:51) [7]
>
> Приветствуется любая информация о других компонетов, которые
> себя ведут также же плохо в аналогичном случе.
>

А разве того, что уже приведено Sha ©   (09.03.09 12:46) и  тобой мало?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
15-1259631921
brother
2009-12-01 04:45
2010.02.07
Far и команда Noop


2-1260708366
JohnKorsh
2009-12-13 15:46
2010.02.07
Вопрос по беспроводным сетям.


4-1228475749
[RU].banOK
2008-12-05 14:15
2010.02.07
Пр0блемка с T00lHelp32


15-1259933827
Insor
2009-12-04 16:37
2010.02.07
Где взять компонент TrxTrayIcon отдельно только его?


1-1211540801
ply
2008-05-23 15:06
2010.02.07
сменить цвет шрифта ячейки... DevExpress





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский