Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 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
14-1124307013
lookin
2005-08-17 23:30
2005.09.11
ZoneAlarm не дает спокойно жить


8-1115212792
Артём
2005-05-04 17:19
2005.09.11
Видео-кодеки


14-1124180776
Esu
2005-08-16 12:26
2005.09.11
Во блин кратер отгрохали :)


14-1124382467
Kerk
2005-08-18 20:27
2005.09.11
Боржоми


1-1124684699
Демидрол
2005-08-22 08:24
2005.09.11
Не стандартный MainMenu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский