Форум: "Основная";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
ВнизПроблема с фреймами Найти похожие ветки
← →
jack128 (2003-10-13 19:21) [0]День добрый.
Есть Frame. На него кидаем TreeView. Добовляем к дереву узлы(в дезин тайм). Кидаем этот фрейм на форму. В OnCreate формы пишем
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption := IntToStr(Frame21.TreeView1.Items.Count);
end;
В заголовке видем 0. Это нормально? И вообще как это исправить?
← →
Юрий Федоров (2003-10-13 19:25) [1]А визуально что видим ?
← →
jack128 (2003-10-13 19:40) [2]2 nodes (столько сколько и добавили). Если добавлять узлы в ран тайм (перегружая конструктор фрейма) - та же фигня..
Кстати в OnActivate формы Items.Count уже 2...
← →
Юрий Федоров (2003-10-13 19:46) [3]В принципе это ненормально, имхо.
Думаю, VCL - глюки
← →
jack128 (2003-10-13 19:49) [4]если
> VCL - глюки
, то очень фигово...В проэкте фреймов предостаточно...
А кто нить знает в шестерке такие глюки есть?
← →
Юрий Федоров (2003-10-13 19:52) [5]В 6 тоже самое
(не поленился - проверил)
← →
vm (2003-10-17 14:56) [6]Повесь на форму кнопку, а на нее свой процедуру:
begin
Caption := IntToStr(Frame21.TreeView1.Items.Count);
end;
Что-нибудь изменилось?
... и еще - в свой обработчик ONCreateForm попробуй добавить проверку на Assigned.
Если ничего не поможет, используй компонент TVirtualTreeView.
Уже больше года использую без всяких проблем, в т.ч. и с фреймами.
← →
jack128 (2003-10-19 13:25) [7]
> Что-нибудь изменилось?
Конечно. Caption стал "2"
> ... и еще - в свой обработчик ONCreateForm попробуй добавить
> проверку на Assigned.
?? естественно проверка проходит. Иначе бы AV вылезло.
Будем думать..
← →
mOOx_ (2003-10-19 13:47) [8]А фрейны действительно неободимы? Я от них отказался и заменил обычными Panel. Доволен.
← →
jack128 (2003-10-19 14:12) [9]
> mOOx_ © (19.10.03 13:47) [8]
Очень хотелось бы дсин тайм иметь ;-) Если бы не это, то можно было бы любой WinControl использовать
← →
mOOx_ (2003-10-19 15:30) [10]Что за дсин тайм? Что-то яне догоняю :)
← →
jack128 (2003-10-19 15:51) [11]Design time
← →
mOOx_ (2003-10-19 16:11) [12]А ты что, его не имеешь?!! У всех, кто пользуется визуальными редакторами форм он вроде как есть и не кто не жалуется :). Поясни пожалуйста.
← →
jack128 (2003-10-19 16:22) [13]Ты пользуешься панелями, так?
каким образом? просто создаешь наследника и пишешь типа:
constructor TmyPanel.Create(...);
begin
FMyEdit := TEdit.Create(Self);
FMyEdit.OnChange := EditChance;
// и так далее
end;
И где здесь визуальность??
Если же ты пользуешься Templates, то получаешь дублирование кода
← →
mOOx_ (2003-10-19 16:31) [14]А я что, не могу в дизайне бросить на эту панель эдит, настроить ему свойства, события и все в этом духе? Это эдит будет потомком панэлу. Самый настоящий дезайн тайм. По моему, мы о разных вещах говорим :).
← →
Rouse_ (2003-10-19 16:34) [15]Всетаки решил добить фреймы? Попробуй сделать как я тебе на ММР говорил. т.е. класс типа панели и будет тебе аналог фрейма.
Желаю успехов
← →
jack128 (2003-10-19 17:04) [16]
> А я что, не могу в дизайне бросить на эту панель эдит, настроить
> ему свойства, события и все в этом духе?
Можешь.
> Это эдит будет потомком панэлу.
Нет, конечно
И потом как мне что? на десяток форм кидать панели, потом едиты, настраивать свойства и тд..
> Rouse_ © (19.10.03 16:34) [15]
> т.е. класс типа панели и будет тебе аналог фрейма.
Вообще судя по всему не фрейм виноват, а TreeView.
Покрайней мере TVirtualTreeView нормально работает..Может действитеьно на него переду(я уж давно к этому компоненту присматрваюсь, а тут такая оказия :-)))
← →
mOOx_ (2003-10-19 17:11) [17]А может просто у тебя опрос каунта происходит до того, как итемы добавились? Хотя у тебя итемы в дизайне добавляются... Не знаю даже.
ЗЫ: сразу надо было говорить про несколько десутков тысяч форм :)
← →
KSergey (2003-10-19 17:26) [18]Rouse_ © (19.10.03 16:34) [15]
А цель?
Чем фреймы вам не угодили?
А по вопросу - да уж, глюк конкретный...
Не удержался, тоже проверил. (D5)
← →
Nikolay M. (2003-10-19 17:27) [19]
> Это нормально?
Да.
> И вообще как это исправить?
Перенести код в OnShow.
← →
mOOx_ (2003-10-19 17:41) [20]А чем так хороши фреймы? Да и зачем несколько десятков форм? Это же не оправданное расширение ехе. К тому же если на них должно отображаться примерно одно и тоже (как я понял). Неужели не проще (да и по экономнее) использовать несколько сотен строк кода, чем столько форм. Практика показывает, что твои десятки можно преобразовать в ~10 при этом добавить чуток кода. И для востприятия это легче => мозг отдыхает.
Удачи.
← →
jack128 (2003-10-19 18:53) [21]
>
> Nikolay M. © (19.10.03 17:27) [19]
>
> > Это нормально?
>
> Да.
Да? А вот если я кнопку кину на форму по координатам (100, 100) а в OnCreate окажется, что координаты кнопки (0,0) - это нормально? ;-) Не вижу разницы между этим примером и моей проблемой.
хотя, как я уже говорил, ИМХО глюк TreeView
> mOOx_ © (19.10.03 17:41) [20]
Например:
Форма 1: Дерево(адреса) + ListView (список неких устройств, расположенных по данному адресу) + grid c архивами текущего устройства.
Форма 2 : Дерево(адреса) + ListView(список неких устройств, расположенных по данному адресу) + Label"ы GroupBox"ы и тд.
Помоему логично выделить Дерево + ListView + весь связанный с ними код,в отдельный frame, не так ли?
← →
Nikolay M. (2003-10-19 22:02) [22]
> Не вижу разницы между этим примером и моей проблемой
Посмотри конструкторы TCustomFrame.Create и TCustomForm.Create.
Потом попробуй TreeView снять с фрейма и положить, к примеру, на TPanel и повторить эксперимент. После чего читаем в хелпе про критические секции, TMultiReadExclusiveWriteSynchronizer и все, что есть рядом - копание в исходниках VCL весьма увлекательное занятие. Очень расширяет кругозор... :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c