Форум: "Основная";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];
ВнизTShape & TLabel Найти похожие ветки
← →
Ukraine (2002-10-22 16:38) [0]Добрый день!
Помогите написать компонент, совмещающий сабж. Очень надо!
Заранее благодарен
← →
Игорь Шевченко (2002-10-22 16:46) [1]"Помогите" предусматривает наличие уже какого-то написанного кода, в котором имеются затыки. Этот код есть ?
← →
Ukraine (2002-10-22 16:53) [2]unit ShapeText;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;
type
TOnUserDraw = procedure(Sender:TObject) of object;
type
TShapeText = class(TShape)
private
{ Private declarations }
FOnUserDraw : TOnUserDraw;
FCaption : string;
procedure SetOnUserDraw(const Value:TOnUserDraw);
procedure DoUserDraw;
protected
{ Protected declarations }
procedure Paint; override;
public
{ Public declarations }
published
{ Published declarations }
//Текст, который нужно выводить вместе с Shape
property Caption : string read FCaption write FCaption;
//Придется самому потом рисовать :-(
property OnUserDraw : TOnUserDraw read FOnUserDraw write SetOnUserDraw;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("Samples", [TShapeText]);
end;
{ TShapeText }
procedure TShapeText.DoUserDraw;
begin
if assigned(FOnUserDraw) then FOnUserDraw(Self);
end;
procedure TShapeText.Paint;
begin
inherited;
DoUserDraw;
end;
procedure TShapeText.SetOnUserDraw(const Value: TOnUserDraw);
begin
FOnUserDraw:=Value;
end;
end.
А потом в проге:
procedure TForm1.ShapeText1UserDraw(Sender: TObject);
begin
with (Sender as TShapeText) do
begin
Label1.Left:=Left+Width;
Label1.Top:=Top;
Label1.Caption:=Caption;
end;
end;
Но в этом случае нужно уже созланный Label. А как все совместить?
← →
Skier (2002-10-22 16:55) [3]>Ukraine
//Текст, который нужно выводить вместе с Shape
property Caption : string read FCaption write FCaption;
Ну так и рисуй его на канве.
B методе TShapeText.Paint.
← →
Игорь Шевченко (2002-10-22 16:56) [4]Не совсем понятно, что в итоге должно получиться. Точнее, совсем непонятно. Если событие ShapeText1UserDraw определяется, как метод формы, то кто мешает создать на этой же форме Label1 ?
← →
Ukraine (2002-10-22 17:09) [5]> Игорь Шевченко © (22.10.02 16:56)
Да я и сам запутался :-(
В принципе использовать OnUserDraw то и не надо...
Я его использовал, т.к. не знаю как совместить сабж...
А как сделать чтобы по
var ShapeText1: TShapeText;
...
ShapeText1:=TShapeText.Create(Self);
ShapeText1.Parent:=Self;
ShapeText1.Caption:="Hello";
ShapeText1.Left:=100;
ShapeText1.Top:=100;
создавался этот Shape вместе с Label?
Как???
← →
Демонов Е.В. (2002-10-22 17:15) [6]type
TShapeText = class(TShape)
private
FLabel:tLabel;
public
constructor create(Aowner:нипомнючто);override;
destuctor destroy;override;
publiched
property Label:tLabel read FLabel;
end;
constructor create(Aowner:нипомнючто);override;
begin
inherited;
FLabel:=TLabel.create(Self);
....чего то ещё делаем;
end;
destuctor destroy;override;
begin
FLabel.free;
inherited;
end;
← →
Игорь Шевченко (2002-10-22 17:19) [7]Ukraine (22.10.02 17:09)
Глупый вопрос: А нужен ли Label вообще, если уже есть свойство Caption. Может, выводить этот Caption на канве самого Shape функцией DrawTextEx (Canvas.Handle, PChar(Caption), Length(Caption), ARect, ...) ?
← →
Ukraine (2002-10-22 17:24) [8]>Игорь Шевченко © (22.10.02 17:19)
Ну хотелось бы Label... чтобы тебе и шрифт выбрать можно и.т.д.
Хотя сейчас попробуем и так.
>Демонов Е.В. © (22.10.02 17:15)
Щас попробуем...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c