Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 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.044 c
1-1127320220
JJ
2005-09-21 20:30
2005.10.16
Размер программы в памяти


3-1125572079
Term
2005-09-01 14:54
2005.10.16
Проблема с UNION


1-1127307607
DelphiLexx
2005-09-21 17:00
2005.10.16
Избежать мерцания при перемещении


3-1125416074
Asail
2005-08-30 19:34
2005.10.16
Проблема с TQuery (удаление строк)


14-1127397129
Prohodil Mimo
2005-09-22 17:52
2005.10.16
Нужно ли уничтожать формы, если они не создаются при старте ?





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