Форум: "Компоненты";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
ВнизПодскажите, как создать компонент из двух компонентов... Найти похожие ветки
← →
Михель (2004-10-15 22:41) [0]Подскажите, как создать компонент из двух компонентов: 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.
← →
GuAV © (2004-10-15 23:18) [1]А может посмотреть TLabeledEdit ?
← →
Михель (2004-10-15 23:34) [2]Отлично! Спасибо, GuAV!
Работает!
Но хоть и можно привести TLabeledEdit к внешнему виду TLabel, все-таки замена на TLabeledEdit - это полумера в каком-то смысле... То есть, работать-то все стало, но ошибки я так и не понял.
Подскажите, в чем все-таки моя ошибка? Могу ли я сделать свой вариант рабочим?
Еще раз спасибо!
← →
GuAV © (2004-10-15 23:50) [3]Я имел ввиду не использвать TLabeledEdit вместо Label, а посмотреть как там этот Label вставляется в форму.
Если речь идёт о достойной замене TLabel то это TStaticText
← →
Михель (2004-10-16 01:05) [4]Да, в самом деле, TStaticText - то, что и было нужно!
Спасибо!
Посмотреть, как сделано в TLabeledEdit, не смог: компонент находится в файле ExtCtrls.dcu, не получается посмотреть его устройство.
Все-таки вопрос по совместному использованию компонентов с разным типом контролов остается, попробую спросить в новом вопросе. Я не силен, но, возможно, можно переопределить проперти Parent родительского компонента на возврат контрола не типа TWinControl, а TWidgetControl...
Хотя, пока все устраивает, не буду никого беспокоить :)
← →
GuAV © (2004-10-16 02:28) [5]мда....
ExtCtrls.pas есть, если выбрано ставить VCL sources при усановке D.
Не ставить их - это как не ставить хэлп.
Если они есть, то TLabeledEdit + Ctrl-Click
(Задавать новый вопрос не советую - это может быть расцененно как спам и оба будут удалены.)
← →
Михель (2004-10-16 11:35) [6]Да... Век живи - век учись!
Добавил исходники VCL, и файл нашелся, конечно :)
Спасибо большое, не буду здесь больше мусорить!
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c