Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание компонента 
:(
    Опции темы
cSKA
Дата 28.11.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



Кто нибудь помогите мне надо создать компонет так чтобы он включал в себя поле Handle  поле Transparent 
подскажите что-нибудь
я сделал компонет потомок от TCustomControl и вписал в него поле Transparent из сорсов поставки Delphi7 но ничего не вышло компонет не прозрачен 
что делать?
PM MAIL   Вверх
aktuba
Дата 28.11.2007, 22:46 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 7
Всего: 38



Цитата(cSKA @  28.11.2007,  22:53 Найти цитируемый пост)
что делать? 

Отрисовывать в ручную  smile 
При чем тут поле в классе???


--------------------
user posted image
PM MAIL WWW Skype   Вверх
THandle
Дата 28.11.2007, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Может стоит почитать для начала книжечку. Например Рея Конопку?
PM   Вверх
ivan219
  Дата 29.11.2007, 10:41 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



cSKA, Transparent это прозрачный цвет или отсутствие фона.
P.S. Handle там уже есть так как это наследние от TWinControl в котором Handle и появляется.

Код

unit FCustomControl;

interface

uses
  SysUtils, Classes, Controls, Graphics;

type
  TFCustomControl = class(TCustomControl)
  private
    FTransparent: Boolean;
  protected
    procedure SetTransparent(Value: Boolean);
    procedure Paint; override;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Transparent: Boolean read FTransparent write SetTransparent default False;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MyComponent', [TFCustomControl]);
end;

{ TFCustomControl }

constructor TFCustomControl.Create(AOwner: TComponent);
begin
  inherited;
  FTransparent := False;
end;

procedure TFCustomControl.Paint;
begin
  inherited;
  if not FTransparent then
   begin
    Canvas.Brush.Color := clRed;
    Canvas.FillRect(ClientRect);
   end;
end;

procedure TFCustomControl.SetTransparent(Value: Boolean);
begin
  if FTransparent <> Value then
   begin
    FTransparent := Value;
    Invalidate;
   end; 
end;

end.


Это сообщение отредактировал(а) ivan219 - 29.11.2007, 11:25
PM MAIL ICQ   Вверх
cSKA
Дата 1.12.2007, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



я все понимаю только то что ты описал я попробовал и это не сработало
я также пробавал код из сорсов от TCustomLabel
я много читаю и нигду не встречал компонентов содержащих одновременно Handle и Transparent
PM MAIL   Вверх
ivan219
  Дата 4.12.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



Цитата(cSKA @  1.12.2007,  23:50 Найти цитируемый пост)
я все понимаю только то что ты описал я попробовал и это не сработало

Цитата(ivan219 @  29.11.2007,  10:41 Найти цитируемый пост)
Transparent это прозрачный цвет

но можно и так
Цитата(ivan219 @  29.11.2007,  10:41 Найти цитируемый пост)
 или отсутствие фона.

что я и продемонстрировал тебе.
Цитата(cSKA @  1.12.2007,  23:50 Найти цитируемый пост)
я много читаю и нигду не встречал компонентов содержащих одновременно Handle и Transparent

Плохо читал!
Что для тебя озночает слово Handle???




PM MAIL ICQ   Вверх
cSKA
Дата 11.12.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



под Handle Я понимаю свойство Handle: HWND!!!
не работает то что ты предлагаешь
я не такой дурак чтоб незнать что Handle появляется в TWinControl а все компоненты с полем Transparent  идут от TGraphicControl в котором как всем известно Handle нет
мне нужно создать компонент имеющий оба эти поля

я хорошо читаю просто мало книг на нестандартные методы программирования
PM MAIL   Вверх
ivan219
Дата 11.12.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



Цитата(cSKA @  11.12.2007,  18:13 Найти цитируемый пост)
Я понимаю свойство Handle: HWND!!!

Это радует.
Цитата(cSKA @  11.12.2007,  18:13 Найти цитируемый пост)
а все компоненты с полем Transparent  идут от TGraphicControl

TGroupBox хоть и нет явного свойства Transparent аднако если подцепить XPManifest  оно проявляется smile 

Это сообщение отредактировал(а) ivan219 - 11.12.2007, 23:41
PM MAIL ICQ   Вверх
ivan219
  Дата 12.12.2007, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



Код

unit FLabel;

interface

uses
  SysUtils, Classes, Controls, Graphics;

type
  TFLabel = class(TCustomControl)
  private
    FTransparent: Boolean;
    FText: String;
  protected
    procedure Paint; override;
    procedure SetText(const Value: String); virtual;
    procedure SetTransparent(const Value: Boolean); virtual;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Text: String read FText write SetText;
    property Transparent: Boolean read FTransparent write SetTransparent Default False;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MyComponent', [TFLabel]);
end;

{ TFLabel }

constructor TFLabel.Create(AOwner: TComponent);
begin
  inherited;
  Width := 32;
  Height := 13;
  FText := 'FLabel';
  FTransparent := False;
end;

procedure TFLabel.SetText(const Value: String);
begin
 if FText <> Value then
  begin
   FText := Value;
   Width := Canvas.TextWidth(FText);
   Height := Canvas.TextHeight(FText);
   Invalidate;
  end;
end;

procedure TFLabel.SetTransparent(const Value: Boolean);
begin
 if FTransparent <> Value then
  begin
   FTransparent := Value;
   if FTransparent then Canvas.Brush.Style := bsClear
   else Canvas.Brush.Style := bsSolid;
   Invalidate;
  end;
end;

procedure TFLabel.Paint;
begin
  inherited;
  Canvas.TextOut(0,0,FText);
end;
end.

Код

unit FLabel;

interface

uses
  Messages, SysUtils, Classes, Controls, Graphics;

type
  TFLabel = class(TCustomControl)
  private
    FTransparent: Boolean;
  protected
    procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
    procedure Paint; override;
    procedure SetTransparent(const Value: Boolean); virtual;
  public
    constructor Create(AOwner: TComponent); override;
    property Handle;
  published
    property Caption;
    property Transparent: Boolean read FTransparent write SetTransparent Default False;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MyComponent', [TFLabel]);
end;

{ TFLabel }

constructor TFLabel.Create(AOwner: TComponent);
begin
  inherited;
  Width := 32;
  Height := 13;
  Caption := 'FLabel';
  FTransparent := False;
end;

procedure TFLabel.CMTextChanged(var Message: TMessage);
begin
  Invalidate;
  Realign;
end;

procedure TFLabel.SetTransparent(const Value: Boolean);
begin
 if FTransparent <> Value then
  begin
   FTransparent := Value;
   if FTransparent then Canvas.Brush.Style := bsClear
   else Canvas.Brush.Style := bsSolid;
   Invalidate;
  end;
end;

procedure TFLabel.Paint;
begin
  inherited;
  Width := Canvas.TextWidth(Text);
  Height := Canvas.TextHeight(Text);  
  Canvas.TextOut(0,0,Text);
end;
end.


Это сообщение отредактировал(а) ivan219 - 12.12.2007, 00:34
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.