Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.31;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
3-101151
Vova77
2002-10-11 09:10
2002.10.31
Overflow while converting variant of type (date)into type(data)


3-101059
Sago
2002-10-07 05:58
2002.10.31
Базу в ресурсы


1-101232
DDDeN
2002-10-21 18:14
2002.10.31
Коммерческие проги


3-101135
Kurt
2002-10-10 11:36
2002.10.31
Как передавать параметры в ADOQuery если несколько параметров в з


1-101343
.JOHN.
2002-10-20 21:00
2002.10.31
Аналогия