![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите, как создать компонент из двух компонентов... [D6, WinXP]
Михель © (2004-10-15 22:41:00)Подскажите, как создать компонент из двух компонентов: TImage и TLabel?
На базе TPanel я создаю свой компонент TMyPanel, на которой размещаю TImage и TLabel.
Инсталлирую компонент.
Проблема: при запуске формы, на которую установлен мой компонент, на моей панели отображается только TImage, TLabel не видима.
Может быть, дело в том, что не установлено свойство Parent компонента TLabel? (Не знаю, как правильно его установить)
Свой пример я сделал на базе примера с компонентами TEdit и TButton, но у TLabel другой вид контрола: TWidgetControl, а не TWinControl, и не получается, в общем...
Текст моего компонента такой:
unit MyPanel;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls,
QStdCtrls;
type
TMyPanel = class(TPanel)
private
{ Private declarations }
NewImage:TImage;
NewLabel:TLabel;
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create( AOwner: TComponent ); override;
destructor Destroy;override;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Standard', [TMyPanel]);
end;
constructor TMyPanel.Create( AOwner: TComponent );
begin
inherited Create(AOwner);
Width:=200;
Height:=200;
NewLabel := TLabel.Create( AOwner );
//NewLabel.Parent := self;
NewLabel.Height :=13;
NewLabel.Width := 190;
NewLabel.Left := 5 ;
NewLabel.top := 180 ;
NewLabel.Visible := true;
NewLabel.Caption:='dlsfkjgkfg';
NewImage := TImage.Create( self );
NewImage.Parent := self;
NewImage.Height :=150;
NewImage.Width := 190;
NewImage.Left := Left+5 ;
NewImage.top := Top+5 ;
NewImage.Visible := true;
NewImage.Picture.LoadFromFile(
'C:\Documents and Settings\Michael\Рабочий стол\1.bmp');
end;
destructor TMyPanel.destroy;
begin
NewImage.Free;
NewLabel.free;
inherited destroy;
end;
end.
Михель (2004-10-16 11:35:00) [1]Да... Век живи - век учись!
Добавил исходники VCL, и файл нашелся, конечно :)
Спасибо большое, не буду здесь больше мусорить!
GuAV (2004-10-16 02:28:00) [2]мда....
ExtCtrls.pas есть, если выбрано ставить VCL sources при усановке D.
Не ставить их - это как не ставить хэлп.
Если они есть, то TLabeledEdit + Ctrl-Click
(Задавать новый вопрос не советую - это может быть расцененно как спам и оба будут удалены.)
Михель (2004-10-16 01:05:00) [3]Да, в самом деле, TStaticText - то, что и было нужно!
Спасибо!
Посмотреть, как сделано в TLabeledEdit, не смог: компонент находится в файле ExtCtrls.dcu, не получается посмотреть его устройство.
Все-таки вопрос по совместному использованию компонентов с разным типом контролов остается, попробую спросить в новом вопросе. Я не силен, но, возможно, можно переопределить проперти Parent родительского компонента на возврат контрола не типа TWinControl, а TWidgetControl...
Хотя, пока все устраивает, не буду никого беспокоить :)
GuAV (2004-10-15 23:50:00) [4]Я имел ввиду не использвать TLabeledEdit вместо Label, а посмотреть как там этот Label вставляется в форму.
Если речь идёт о достойной замене TLabel то это TStaticText
Михель (2004-10-15 23:34:00) [5]Отлично! Спасибо, GuAV!
Работает!
Но хоть и можно привести TLabeledEdit к внешнему виду TLabel, все-таки замена на TLabeledEdit - это полумера в каком-то смысле... То есть, работать-то все стало, но ошибки я так и не понял.
Подскажите, в чем все-таки моя ошибка? Могу ли я сделать свой вариант рабочим?
Еще раз спасибо!
GuAV (2004-10-15 23:18:00) [6]А может посмотреть TLabeledEdit ?