компьютерный форум
Вернуться   Компьютерный форум > Программирование и вебстроительство > Программирование

Ответ
 
LinkBack Опции темы Опции просмотра
Старый 16.04.2005, 20:42   #1
Пользователи
 
Регистрация: 16.04.2005
Сообщений: 1
По умолчанию

У меня проблема с созданием визуального компонента. Создал класс - наследник TCustomPanel, рисуется панель. На ней в конструкторе своего класса (в цикле) создаю несколько кнопок SpeedButton. В design-time их видно, а в run-time - не видно. Хотя при подключении этого же модуля (ScreenKb.pas) всё работает.
ButKb := TList.Create;
for i := 0 to CountButton - 1 do
begin
ButtonKb := TSpeedButton.Create(Self);
ButtonKb.Parent := Self;
ButtonKb.Left := k + 10;
ButtonKb.Top := 10;
ButtonKb.Width := 30;
ButtonKb.Height := 30;
k := ButtonKb.Left + 30;
ButKb.Add(ButtonKb);
end;




SergeyK211 вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
16.04.2005, 20:42
Техник
реклама
По умолчанию

Старый 23.04.2005, 09:58   #2
Пользователи
 
Регистрация: 23.04.2005
Сообщений: 13
По умолчанию

На сколько я понял, проблема в том кто будет хозяином компонента.
Решение простое:

type TTest = class(TCustomPanel)
ButKb : TList;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
procedure Register;

implementation

constructor TTest.Create(AOwner: TComponent);
var i: integer;
ButtonKb :TSpeedButton;
const CountButton = 5;
begin
inherited Create(AOwner);
ButKb := TList.Create;
Parent := TWinControl(AOwner);
Left := 10;
Top := 10;
width := 100;
Height := 200;
for i := 0 to CountButton - 1 do
begin
ButtonKb := TSpeedButton.Create(Self);
ButtonKb.Parent := Self;
ButtonKb.Left := 10;
ButtonKb.Top := i * 30;
ButtonKb.Width := 30;
ButtonKb.Height := 30;
ButKb.Add(ButtonKb);
end;
end;

destructor TTest.Destroy;
begin
ButKb.Free;
inherited Destroy;
end;

procedure Register;
begin
RegisterComponents('Standard',[TTest]);
end;

Проверил, во всех режимах работает.
DimaBr вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 23.04.2005, 21:42   #3
Пользователи
 
Регистрация: 10.09.2004
Сообщений: 985
По умолчанию

Цитата:
[b]ButKb := TList.Create;
for i := 0 to CountButton - 1 do
begin
ButtonKb := TSpeedButton.Create(Self);
ButtonKb.Parent := Self;
ButtonKb.Left := k + 10;
ButtonKb.Top := 10;
ButtonKb.Width := 30;
ButtonKb.Height := 30;
k := ButtonKb.Left + 30;
ButKb.Add(ButtonKb);
end;
А если сделать так -
ButKb := TList.Create;
for i := 0 to CountButton - 1 do
begin
ButtonKb := TSpeedButton.Create(Self);
ButtonKb.Parent := Self;
ButtonKb.Left := k + 10;
ButtonKb.Top := 10;
ButtonKb.Width := 30;
ButtonKb.Height := 30;
k := ButtonKb.Left + 30;
ButtonKb.visible:=true;
vxk7m вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.



Текущее время: 10:27. Часовой пояс GMT.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Content Relevant URLs by vBSEO 3.5.0 RC2