Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.009 c
1-101204
Slavok
2002-10-18 18:04
2002.10.31
Вы не подскажете алгоритм поиска слова в тексте...


3-101062
Velzevul
2002-10-12 16:23
2002.10.31
Использование компонента Table в цикле


14-101523
Николай Быков
2002-10-09 14:40
2002.10.31
Виктор Цой


1-101272
shubin
2002-10-22 10:01
2002.10.31
День добрый!


1-101342
Luke
2002-10-20 23:42
2002.10.31
Деинсталяторы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский