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

Вниз

Свойство Transperent в компоненте Panel.   Найти похожие ветки 

 
SergV   (2004-11-12 17:40) [0]

Есть компонент наследник TPanel, как добавить этому компоненту свойство Transparent. Не разу не писал компоненты, а это свойство ну очень нужно.


 
Pentium133 ©   (2004-11-12 17:44) [1]

property Transparent: bolean read GetTransparent write SetTransparent

Вот только с реализацией наверно помучеешся


 
SergV   (2004-11-12 18:09) [2]

Я тут пробовал так:

private
   { Private declarations }
FTransporent: Boolean;
....

protected
   { Protected declarations }
procedure Trahsporent(Value: Boolean);
....

published
   { Published declarations }
property Transporent: Boolean read Transporent write Transporent default True; (На зтой строке выдаёт ошибку)
....

implementation

{$R *.res}
....

procedure TClock.Transporent(Value: Boolean);
begin
Transporent := Value;
Invalidate;
end;
....

Попробую с *property Transparent: bolean read GetTransparent write SetTransparent*, спасибо за подсказку Pentium133 ©. Может еще шо не так в моём коде.


 
jack128 ©   (2004-11-12 18:24) [3]

Pentium133 ©   (12.11.04 17:44) [1]
Вот только с реализацией наверно помучеешся

да в общем то с технической точки зрения как раз таки ничего сложного и нету.  А вот с иделогической..  Копировать весь метод Paint ради изменения пары строчек..


 
Pentium133 ©   (2004-11-12 18:29) [4]


> property Transparent: bolean read GetTransparent write SetTransparent;

Приче сразу после ввода этой строки нажми Сtrl-Shift-C и будет щастье


 
SergV   (2004-11-12 19:22) [5]

Ввёл я эти Сtrl-Shift-C, а щастья не видать. Добавилось кое шо, да одна ошибка.

function TPLNClock.GetTransparent: boolean;
begin
 FTransporent := Value; / пишет что не указанный индитификатор
 Invalidate;
end;

procedure TPLNClock.SetTransparent(const Value: boolean);
begin
/ а что здесь
end;

procedure TPLNClock.Transporent(Value: Boolean);
begin
/и здесь
end;

В строке *property Transparent: boоlean read GetTransparent write SetTransparent;* добавил *default false*, не помогло.
Что не так.


 
SergV   (2004-11-12 19:58) [6]

Вроде разобрался, попробую установить.
Спасибо за помощь.


 
SergeV   (2004-11-14 13:45) [7]

Не получятся шото, пробовал так и так, не действует. Свойство зто появилось, да только всегда в true стоит,и не переключается. Содрал с исходника формы свойства TransparentColor и AlphaBlend, все переключается, да только не работает и это. Может к Panel"и зти свойства не подходят? Може кто знает какой исходник или готовый компоент типа Panel с Transparent?


 
icWasya ©   (2004-11-15 11:41) [8]

что-то типа так

procedure TXXXX.Transparent(Value: Boolean);
begin
 if FTransparent = Value then Exit;
 FTransparent := Value;
 if Value then  
    ControlStyle := ControlStyle - [csOpaque]
 else
    ControlStyle := ControlStyle + [csOpaque];

 Invalidate;
end;


 
SergeV   (2004-11-18 19:42) [9]

Thanks! Ща попробую.


 
jack128 ©   (2004-11-20 20:38) [10]

icWasya ©   (15.11.04 11:41) [8]
Дело в том, что панень игнорирует флаг csOpaque, так что помимо твоего кода еще придется переписывать весь метод Paint, как я уже говорил..

Примерно так:

TMyCustomPanel = class(TCustomPanel)
protected
 procedure Paint; override;
end;

procedure TMyCustomPanel.Paint;
const
 Alignments: array[TAlignment] of Longint = (DT_LEFT, DT_RIGHT, DT_CENTER);
var
 Rect: TRect;
 TopColor, BottomColor: TColor;
 FontHeight: Integer;
 Flags: Longint;

 procedure AdjustColors(Bevel: TPanelBevel);
 begin
   TopColor := clBtnHighlight;
   if Bevel = bvLowered then TopColor := clBtnShadow;
   BottomColor := clBtnShadow;
   if Bevel = bvLowered then BottomColor := clBtnHighlight;
 end;

begin
 Rect := GetClientRect;
 if BevelOuter <> bvNone then
 begin
   AdjustColors(BevelOuter);
   Frame3D(Canvas, Rect, TopColor, BottomColor, BevelWidth);
 end;
 Frame3D(Canvas, Rect, Color, Color, BorderWidth);
 if BevelInner <> bvNone then
 begin
   AdjustColors(BevelInner);
   Frame3D(Canvas, Rect, TopColor, BottomColor, BevelWidth);
 end;
 with Canvas do
 begin
   Brush.Color := Color;
   if csOpaque in ControlStyle then
     FillRect(Rect);
   Brush.Style := bsClear;
   Font := Self.Font;
   FontHeight := TextHeight("W");
   with Rect do
   begin
     Top := ((Bottom + Top) - FontHeight) div 2;
     Bottom := Top + FontHeight;
   end;
   Flags := DT_EXPANDTABS or DT_VCENTER or Alignments[FAlignment];
   Flags := DrawTextBiDiModeFlags(Flags);
   DrawText(Handle, PChar(Caption), -1, Rect, Flags);
 end;
end;


 
SergeV   (2004-11-22 21:14) [11]

Это уже чтото, спасибо jack128. А то какой день голову ломаю, а не чего не идет. Попробую завтра, седня нет времени. Может еще кто подскажет как таймер добавить к Label, пробовал стандартно типа FTimer: TTimer; выдает что не объявленный индитификатор.


 
ЮЮ ©   (2004-11-23 05:36) [12]

> FTimer: TTimer; выдает что не объявленный индитификатор.

Ты знаешь, что TTimer находится в иодуле ExtCtrls? А твой TMyCustomPanel - нет! Укажи этот модуль в uses


 
SV   (2004-11-25 19:55) [13]

В общем с панелью не чего не вышло, переделал на Image, помучался, но зато работает. А спанелью ни как, не делаетс прозрачной хоть тресни её чем. Вообщем тема закрыта.


 
0xFF0A4E   (2004-12-14 02:30) [14]

Ну не бросайте темку !!!!
Мне тоже очень нужно слепить комонент (наследник TCustomControl,or TWinControl) со свойством Transparent !!!!
помогите, 2 недели уже гемороюсь ....
thnx !!!!



Страницы: 1 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.08 c
11-1093953154
New
2004-08-31 15:52
2005.10.16
Компиляция на FPC


1-1127394234
QwertyKz
2005-09-22 17:03
2005.10.16
штрих код


1-1127723749
Leonid
2005-09-26 12:35
2005.10.16
Delphi обнаружила, что она ворованая ?


14-1127640584
Starcom
2005-09-25 13:29
2005.10.16
Как адаптировать PS/2 мышку с COM портом PC?


3-1125573071
B
2005-09-01 15:11
2005.10.16
Соединение таблиц на основе НЕвхождения