Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.02;
Скачать: CL | DM;

Вниз

Самопальный контрол-панель и design-time   Найти похожие ветки 

 
kavlad   (2003-09-17 12:20) [0]

Наваял самопальный компонент - потомок TCustomControl. Он содержит панель. Теперь в design-time ставлю на эту панель контролы. Все вроде гладко. Запускаю - нету контролов, одна голая панель. Смотрю ресурсы формы - и правда нету контролов. Открываю в редакторе - вот они радЁмые. Что делать?


 
Skier ©   (2003-09-17 12:33) [1]

Код покажи.

> Открываю в редакторе - вот они радЁмые.

И кто у них родитель ?


 
kavlad   (2003-09-17 12:40) [2]

Какой конкретно код? Конструктор?
constructor TgtSideBarPanel.Create(AOwner: TComponent);
begin
inherited;
Width := 100;
Height := 100;
Align := alRight;
FFullSize := 100;
FButton := TSpeedButton.Create(Self);
FButton.Parent := Self;
FButton.Caption := "";
FButton.OnClick := ButtonClick;
FButton.ShowHint := True;
FButton.Align := alLeft;
Realign;
FPanel := TPanel.Create(Self);
FPanel.Parent := Self;
FPanel.Caption := "";
FPanel.Align := alClient;
ButtonPosition := posLeft;
ButtonSize := 11;
end;


 
me   (2003-09-17 13:41) [3]

Поставь в конструкторе
ControlStyle := ControlStyle + [csAcceptsControls];


 
kavlad   (2003-09-17 14:13) [4]

Не помогает :(


 
me   (2003-09-17 16:07) [5]

приведи код ДФМ


 
kavlad   (2003-09-17 16:32) [6]

object Form1: TForm1
Left = -2
Top = 103
Width = 783
Height = 540
Caption = "Form1"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object gtSideBarPanel1: TgtSideBarPanel
Left = 536
Top = 0
Width = 239
Height = 513
Align = alRight
ButtonSize = 11
ButtonPosition = posLeft
Convolute = False
FullSize = 239
FlatButton = False
BorderStyle = bsNone
BorderWidth = 0
BevelInner = bvNone
BevelOuter = bvRaised
end
object ListBox1: TListBox
Left = 0
Top = 0
Width = 233
Height = 513
Align = alLeft
ItemHeight = 13
TabOrder = 1
end
object Button2: TButton
Left = 456
Top = 480
Width = 75
Height = 25
Caption = "Button2"
TabOrder = 2
OnClick = Button2Click
end
object ListBox2: TListBox
Left = 233
Top = 0
Width = 216
Height = 513
Align = alLeft
ItemHeight = 13
TabOrder = 3
end
end


TgtSideBarPanel - мой компонент. На нем реально стоят контролы, но в dfm их нет :(


 
me   (2003-09-17 16:47) [7]

DFM - это и есть реальность.

Если ты помещаешь компоненты на контол, у которого не
установлен флаг csAcceptsControls, то парентом для них
будет форма (в твоём случае), а не этот контрол.


 
kavlad   (2003-09-17 16:51) [8]

Я выложил плохой код. Эти компоненты действительно стоят на форме. А есть еще и другие, которые стоят на gtSideBarPanel1. Но в dfm их нет.


 
me   (2003-09-17 17:00) [9]

Если ты открываешь в редакторе и они есть -
они должны быть в ДФМ. Иначе откуда они возьмутся?

По крайней мере если ты сохранил проект, закрыл и снова открыл,
и они есть - это соответствует истине?


 
me   (2003-09-17 17:04) [10]

Попробуй вручную поставить в ДФМ на свой контрол
какой-нибудь компонент, открой и посмотри, возникнет ли он
или заругается?


 
kavlad   (2003-09-17 17:14) [11]

>me (17.09.03 17:00) [9]
>По крайней мере если ты сохранил проект, закрыл и снова открыл,
>и они есть - это соответствует истине?

Нет. После переоткрытия проекта они пропадают. В dfm то их нет.


 
kavlad   (2003-09-17 17:15) [12]

>me (17.09.03 17:04) [10]

Так все появляется. Сделал:
object Form1: TForm1
Left = -2
Top = 103
Width = 783
Height = 540
Caption = "Form1"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object gtSideBarPanel1: TgtSideBarPanel
Left = 536
Top = 0
Width = 239
Height = 513
Align = alRight
ButtonSize = 11
ButtonPosition = posLeft
Convolute = False
FullSize = 239
FlatButton = False
BorderStyle = bsNone
BorderWidth = 0
BevelInner = bvNone
BevelOuter = bvRaised
object Button2: TButton
Left = 6
Top = 80
Width = 75
Height = 25
Caption = "Button2"
TabOrder = 2
OnClick = Button2Click
end
end
object ListBox1: TListBox
Left = 0
Top = 0
Width = 233
Height = 513
Align = alLeft
ItemHeight = 13
TabOrder = 1
end
object ListBox2: TListBox
Left = 233
Top = 0
Width = 216
Height = 513
Align = alLeft
ItemHeight = 13
TabOrder = 3
end
end


На панели стоит кнопка.


 
me   (2003-09-17 17:28) [13]

посмотри, что будет, если ты сохранишь эту ДФМку (предварительно как-ндь изменив её, напр, чуть сдвинув кнопку), закроешь и откроешь?

Сохранится ли эта кнопка?


 
kavlad   (2003-09-17 17:35) [14]

дОстаточно было переоткрыть проект. Кнопка растворилась. Т.е. мой компонент не умеет сохранять свои дочерние компоненты в ресурсы. А как научить его это делать? Сижу читаю Тейксейру и Пачеко.


 
me   (2003-09-17 17:50) [15]

Возьми свой контрол, поставь на него в рантайме
бутон и сохрани в рантайме всю форму в поток.
Этот процесс посмотри под отладчиком (включи галочку
использовать отладочные DCU) и посмотри, что происходит,
когда сохраняется твой компонент.


 
kavlad   (2003-09-17 17:52) [16]

Спасибо. Проверенный способ :) Сейчас буду ковырять.


 
me   (2003-09-17 18:38) [17]

интересно было бы узнать результаты исследований.


 
kavlad   (2003-09-17 19:38) [18]

Завтра, или послезавтра :) Думаю ошибка в назначении владельца компонентов или в нотификации, а вовсе не в стриминге.


 
kavlad   (2003-09-21 15:26) [19]

Опачки, задержался :) Проблема в том, что эти контролы (которые я ставлю на свою панель) в свойстве Owner хранять nil 8-0 Потому и в поток не сохраняются. Что делать - ума не приложу! Придется извращать и переписывать заново от TPanel, а не от TCustomControl.



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

Текущий архив: 2003.10.02;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
1-3885
Artur
2003-09-20 15:08
2003.10.02
Компонент F1Book


1-3928
Геннадий
2003-09-22 14:32
2003.10.02
Чем земенён класс TAppBar ?


1-3865
Тих
2003-09-19 00:06
2003.10.02
Самодельные диаграммы


3-3748
Сатир
2003-09-10 20:51
2003.10.02
Получение списка БД с сервера


14-4102
Igorek
2003-09-13 10:50
2003.10.02
Конкурс мистер (мисис) МАСТАК