Форум: "Компоненты";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизСвойство 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c