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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Edit'ы, и прозрачность их фона 
:(
    Опции темы
desPawnerer
  Дата 31.10.2005, 17:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть ли какой-нибудь способ сделать у Edit'а фон прозрачным? Принимаю любые, даже самые замороченные способы.. Лишь бы работало smile Писать свой компонент я ессно не собираюсь..
  Вверх
~FoX~
Дата 31.10.2005, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Tlabel, DrawText, TextOut etc...


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
desPawnerer
Дата 31.10.2005, 18:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А поподробнее?

P.S. Хейя Фокс, хотя, я думаю, ты меня не помнишь smile
  Вверх
~FoX~
Дата 1.11.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



У тебя едит лежит на картинке какой или просто на форме?
Если просто на форме, то делаешь BordrStyle := bsNone и color := Form1.Color
В противном случае опиши задачу по подробние....



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Samhein
Дата 1.11.2005, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Башзэфашовец
**


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

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



Мож это:
Код

unit TranEdit;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ComCtrls;

type
 TCtrl = class(TWinControl);

 TTransEdit = class(TEdit)
 private
   FAlignText: TAlignment;
   FTransparent: Boolean;
   FPainting: Boolean;
   procedure SetAlignText(Value: TAlignment);
   procedure SetTransparent(Value: Boolean);
   procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
   procedure WMNCPaint (var Message: TMessage); message WM_NCPAINT;
   procedure WMEraseBkGnd(var Message: TWMEraseBkGnd); message WM_ERASEBKGND;
   procedure CNCtlColorEdit(var Message: TWMCtlColorEdit); message CN_CTLCOLOREDIT;
   procedure CNCtlColorStatic(var Message: TWMCtlColorStatic); message CN_CTLCOLORSTATIC;
   procedure CMParentColorChanged(var Message: TMessage); message CM_PARENTCOLORCHANGED;
   procedure WMSize(var Message: TWMSize); message WM_SIZE;
   procedure WMMove(var Message: TWMMove); message WM_MOVE;
 protected
   procedure RepaintWindow;
   procedure CreateParams(var Params: TCreateParams); override;
   procedure Change; override;
   procedure SetParent(AParent: TWinControl); override;
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 published
   property AlignText: TAlignment read FAlignText write SetAlignText default taLeftJustify;
   property Transparent: Boolean read FTransparent write SetTransparent default false;
 end;

procedure Register;

implementation

const
BorderRec: array[TBorderStyle] of Integer = (1, -1);

procedure Register;
begin
 RegisterComponents('Transparent Components', [TTransEdit]);
end;

function GetScreenClient(Control: TControl): TPoint;
var
p: TPoint;
begin
p := Control.ClientOrigin;
ScreenToClient(Control.Parent.Handle, p);
Result := p;
end;

constructor TTransEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FAlignText := taLeftJustify;
FTransparent := false;
FPainting := false;
end;

destructor TTransEdit.Destroy;
begin
inherited Destroy;
end;

procedure TTransEdit.SetAlignText(Value: TAlignment);
begin
if FAlignText <> Value then
begin
 FAlignText := Value;
 RecreateWnd;
 Invalidate;
end;
end;

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

procedure TTransEdit.WMEraseBkGnd(var Message: TWMEraseBkGnd);
var
DC: hDC;
i: integer;
p: TPoint;
begin
if FTransparent then
begin
 if Assigned(Parent) then
 begin
  DC := Message.DC;
  i := SaveDC(DC);
  p := GetScreenClient(self);
  p.x := -p.x;
  p.y := -p.y;
  MoveWindowOrg(DC, p.x, p.y);
  SendMessage(Parent.Handle, $0014, DC, 0);
  TCtrl(Parent).PaintControls(DC, nil);
  RestoreDC(DC, i);
 end;
end else inherited;
end;

procedure TTransEdit.WMPaint(var Message: TWMPaint);
begin
inherited;
if FTransparent then
if not FPainting then
RepaintWindow;
end;

procedure TTransEdit.WMNCPaint(var Message: TMessage);
begin
inherited;
end;

procedure TTransEdit.CNCtlColorEdit(var Message: TWMCtlColorEdit);
begin
inherited;
if FTransparent then
SetBkMode(Message.ChildDC, 1);
end;

procedure TTransEdit.CNCtlColorStatic(var Message: TWMCtlColorStatic);
begin
inherited;
if FTransparent then
SetBkMode(Message.ChildDC, 1);
end;

procedure TTransEdit.CMParentColorChanged(var Message: TMessage);
begin
inherited;
if FTransparent then
Invalidate;
end;

procedure TTransEdit.WMSize(var Message: TWMSize);
begin
inherited;
Invalidate;
end;

procedure TTransEdit.WMMove(var Message: TWMMove);
begin
inherited;
Invalidate;
end;

procedure TTransEdit.RepaintWindow;
var
DC: hDC;
TmpBitmap, Bitmap: hBitmap;
begin
if FTransparent then
begin
 FPainting := true;
 HideCaret(Handle);
 DC := CreateCompatibleDC(GetDC(Handle));
 TmpBitmap := CreateCompatibleBitmap(GetDC(Handle), Succ(ClientWidth), Succ(ClientHeight));
 Bitmap := SelectObject(DC, TmpBitmap);
 PaintTo(DC, 0, 0);
 BitBlt(GetDC(Handle), BorderRec[BorderStyle], BorderRec[BorderStyle], ClientWidth, ClientHeight, DC, 1, 1, SRCCOPY);
 SelectObject(DC, Bitmap);
 DeleteDC(DC);
 ReleaseDC(Handle, GetDC(Handle));
 DeleteObject(TmpBitmap);
 ShowCaret(Handle);
 FPainting := false;
end;
end;

procedure TTransEdit.CreateParams(var Params: TCreateParams);
const
Alignments: array [TAlignment] of DWord = (ES_LEFT, ES_RIGHT, ES_CENTER);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or ES_MULTILINE or Alignments[FAlignText];
end;

procedure TTransEdit.Change;
begin
RepaintWindow;
inherited Change;
end;

procedure TTransEdit.SetParent(AParent: TWinControl);
begin
inherited SetParent(AParent);
end;

end.



--------------------
Знаю форум наизусть, но писать еще боюсь
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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