Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Transparente Labels... (https://www.delphipraxis.net/4348-transparente-labels.html)

NeoDeluxe 25. Apr 2003 13:37


Transparente Labels...
 
Servus.
Ich mollte da fragen, ob sowas gibt??? Transparente Labels...??? :roll:

Grüße, NeoDeluxe 8)

Stanlay Hanks 25. Apr 2003 13:41

Ein label hat die Eigenschaft Transparent, damit man den text zum beispiel in ein Bild setzen kann, ohne gleich ein graues Rechteck drin zu haben. Oder hast du ein Label gemeint, dass den Text halbtransparent anzeigt?

Man liest sich Stanlay :D

NeoDeluxe 25. Apr 2003 14:15

Roger :!:
Du liegst völlig richrig...ein Label mit einem Transpaneten Hintergrund...welche Eingeschaft ise das???

Grüße, NeoDeluxe 8)

Luckie 25. Apr 2003 14:18

Zitat:

Zitat von NeoDeluxe
Du liegst völlig richrig...ein Label mit einem Transpaneten Hintergrund...welche Eingeschaft ise das???

Ich darf mal zitieren? :roll:
Zitat:

Zitat von Stanley
Ein label hat die Eigenschaft Transparent


Pseudemys Nelsoni 26. Apr 2003 19:18

btw: gibt 4-5 threads im board wo gefragt wird wie ein memo transparent auf der form liegt...leider 0 antworten :\

APP 26. Apr 2003 19:38

Hallo,

Zitat:

Zitat von silent
btw: gibt 4-5 threads im board wo gefragt wird wie ein memo transparent auf der form liegt...leider 0 antworten :\

einmal gegoogelt, -> www.delphispirit.com scrolle bis nach "Transparent Components v.1.0".

Pseudemys Nelsoni 26. Apr 2003 20:56

delphi 2-5, hab 6...habs trotzdem probiert kommt aber runtime error :\

APP 28. Apr 2003 10:50

Sorry Silent, habe die Kompo vorher nicht ausprobiert, läßt sich bei mir installieren funkt aber nicht :(

ABER:
was sagst Du dazu (habe ich vorher getestet :mrgreen: )?

Quelle :How to create a transparent TMemo


Delphi-Quellcode:
unit TrMemo;
{$R-}
interface
uses
  Messages, Controls, StdCtrls, classes;
const
  TMWM_SpecialInvalidate = WM_USER + 1111;
type
  TTransparentMemo = class(TMemo)
  private
    procedure SpecialInvalidate(var Message: TMessage); message TMWM_SpecialInvalidate;
    procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
    procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
    procedure WMSetText(var Message: TWMSetText); message WM_SETTEXT;
    procedure CNCTLCOLOREDIT(var Message: TWMCTLCOLOREDIT); message CN_CTLCOLOREDIT;
    procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
    procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  public
    constructor Create(AOwner: TComponent); override;
  end;
procedure Register;
implementation
uses
  Windows;
{ TTransparentMemo }
procedure TTransparentMemo.WMHScroll(var Message: TWMHScroll);
begin
  inherited;
  PostMessage(Handle, TMWM_SpecialInvalidate, 0, 0);
end;
procedure TTransparentMemo.WMVScroll(var Message: TWMVScroll);
begin
  SendMessage(Handle, TMWM_SpecialInvalidate, 0, 0);
  inherited;
  PostMessage(Handle, TMWM_SpecialInvalidate, 0, 0);
end;
procedure TTransparentMemo.CNCTLCOLOREDIT(var Message: TWMCTLCOLOREDIT);
begin
  with Message do
  begin
    SetBkMode(ChildDC, TRANSPARENT);
    Result := GetStockObject(HOLLOW_BRUSH);
  end;
end;
procedure TTransparentMemo.WMSetText(var Message: TWMSetText);
begin
  inherited;
  if not (csDesigning in ComponentState) then
    PostMessage(Handle, TMWM_SpecialInvalidate, 0, 0)
end;
procedure TTransparentMemo.SpecialInvalidate(var Message: TMessage);
var
  r: TRect;
begin
  if Parent <> nil then
  begin
    r := ClientRect;
    r.TopLeft := Parent.ScreenToClient(ClientToScreen(r.TopLeft));
    r.BottomRight := Parent.ScreenToClient(ClientToScreen(r.BottomRight));
    InvalidateRect(Parent.Handle, @r, true);
    RedrawWindow(Handle, nil, 0, RDW_FRAME + RDW_INVALIDATE)
  end;
end;
procedure TTransparentMemo.WMKeyDown(var Message: TWMKeyDown);
begin
  SendMessage(Handle, TMWM_SpecialInvalidate, 0, 0);
  inherited;
  PostMessage(Handle, TMWM_SpecialInvalidate, 0, 0);
end;
procedure TTransparentMemo.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
  Message.Result := 1
end;
constructor TTransparentMemo.Create(AOwner: TComponent);
begin
  inherited;
  ControlStyle := [csCaptureMouse, csDesignInteractive, csClickEvents, csSetCaption, csOpaque,
                              csDoubleClicks, csReplicatable, csNoStdEvents];
end;
procedure TTransparentMemo.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
   ExStyle := ExStyle or WS_EX_TRANSPARENT and not WS_EX_WINDOWEDGE
                      and not WS_EX_STATICEDGE and not WS_EX_DLGMODALFRAME and not
                      WS_EX_CLIENTEDGE;
  end;
end;
procedure Register;
begin
  RegisterComponents('cool!', [tTransparentMemo]);
end;
end.

Pseudemys Nelsoni 28. Apr 2003 13:53

hoi,

sieht ziemlich gut (und kompliziert :D) aus der code. Wenn ich den code bei mir einfüge kommen aber immer "ein paar" fehler :( :

[Fehler] Unit1.pas(25): ';' erwartet, aber '.' gefunden
[Fehler] Unit1.pas(25): ';' erwartet, aber ')' gefunden
[Fehler] Unit1.pas(27): Diese Form des Methodenaufrufs ist nur in Methoden von abgeleiteten Typen erlaubt
[Fehler] Unit1.pas(28): Undefinierter Bezeichner: 'Handle'
[Fehler] Unit1.pas(30): Bezeichner redefiniert: 'TTransparentMemo'
[Fehler] Unit1.pas(30): ';' erwartet, aber ')' gefunden
[Fehler] Unit1.pas(32): Undefinierter Bezeichner: 'Handle'
[Fehler] Unit1.pas(33): Diese Form des Methodenaufrufs ist nur in Methoden von abgeleiteten Typen erlaubt
[Fehler] Unit1.pas(36): Bezeichner redefiniert: 'TTransparentMemo'
[Fehler] Unit1.pas(36): ';' erwartet, aber ')' gefunden
[Fehler] Unit1.pas(44): Bezeichner redefiniert: 'TTransparentMemo'
[Fehler] Unit1.pas(44): ';' erwartet, aber ')' gefunden
[Fehler] Unit1.pas(46): Diese Form des Methodenaufrufs ist nur in Methoden von abgeleiteten Typen erlaubt
[Fehler] Unit1.pas(47): Undefinierter Bezeichner: 'ComponentState'
[Fehler] Unit1.pas(47): Operator ist auf diesen Operandentyp nicht anwendbar
[Fehler] Unit1.pas(48): Undefinierter Bezeichner: 'Handle'
[Fehler] Unit1.pas(50): Bezeichner redefiniert: 'TTransparentMemo'
[Fehler] Unit1.pas(50): ';' erwartet, aber ')' gefunden
[Fehler] Unit1.pas(54): Undefinierter Bezeichner: 'Parent'
[Fehler] Unit1.pas(54): Operator ist auf diesen Operandentyp nicht anwendbar
[Fehler] Unit1.pas(56): Undefinierter Bezeichner: 'ClientRect'
[Fehler] Unit1.pas(57): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(57): Inkompatible Typen: 'HWND' und 'TPoint'
[Fehler] Unit1.pas(58): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(58): Inkompatible Typen: 'HWND' und 'TPoint'
[Fehler] Unit1.pas(59): Nicht genügend wirkliche Parameter
[Fehler] Unit1.pas(62): '.' erwartet, aber ';' gefunden
[Fehler] Unit1.pas(63): Bezeichner redefiniert: 'TTransparentMemo'
[Fehler] Unit1.pas(63): ';' erwartet, aber ')' gefunden
[Fehler] Unit1.pas(65): Undefinierter Bezeichner: 'Handle'
[Fehler] Unit1.pas(66): Diese Form des Methodenaufrufs ist nur in Methoden von abgeleiteten Typen erlaubt
[Fehler] Unit1.pas(69): Bezeichner redefiniert: 'TTransparentMemo'
[Fehler] Unit1.pas(69): ';' erwartet, aber ')' gefunden
[Fehler] Unit1.pas(73): Deklaration von 'TTransparentMemo' unterscheidet sich von vorheriger Deklaration
[Fehler] Unit1.pas(75): Diese Form des Methodenaufrufs ist nur in Methoden von abgeleiteten Typen erlaubt
[Fehler] Unit1.pas(76): Undefinierter Bezeichner: 'ControlStyle'
[Fehler] Unit1.pas(79): Bezeichner redefiniert: 'TTransparentMemo'
[Fehler] Unit1.pas(79): ';' erwartet, aber ')' gefunden
[Fehler] Unit1.pas(81): Diese Form des Methodenaufrufs ist nur in Methoden von abgeleiteten Typen erlaubt
[Fehler] Unit1.pas(91): Inkompatible Typen: 'TComponentClass' und 'procedure, untyped pointer or untyped parameter'
[Fehler] Unit1.pas(11): Ungenügende Forward- oder External-Deklaration: 'TForm1.FormCreate'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden


wieso das?

APP 28. Apr 2003 17:33

Hallo,
weil die Unit
Delphi-Quellcode:
unit TrMemo;
heißt, daher mußt Du die Unit als TrMemo.pas speichern! :mrgreen: :mrgreen:

himitsu 28. Aug 2009 21:30

Re: Transparente Labels...
 
Hab das grad mal probiert

und der Bereich, wo Zeilen sind, ist nicht transparent.


Mein Problem ist einfach, daß weißes TMemo mit bsNone
in einem TPageControl (mit grauem Frabverlauf in XP) scheiße aussieht.

himitsu 30. Aug 2009 12:44

Re: Transparente Labels...
 
Liste der Anhänge anzeigen (Anzahl: 1)
http://fnse.de/S02/15S.gif

nja, ich frag einfach nochmal, da ich nirgendwo eine Lösung finde
und keine Fremdkomponenten verwenden möchte.


Mein Problem ist, daß ich ein TMemo in einem TPageControl hab, welches
erstens einen leichten grauen Varbverlauf hat (im Standard-XP-Style)
und zweitens dieses grau auch keiner Systemfarbe entspricht,
ich also maximal ein möglichst ähnliches Grau definieren könnte, welches an dieser Stelle nicht so auffällt, aber dieses dann nur bei meinem XP-Style paßt und nicht bei anderen Farbschemata :?

haentschman 30. Aug 2009 13:04

Re: Transparente Labels...
 
Hallo himitsu,

ich weis was du meinst. Ich würde trotzdem sagen, daß die Standardfarbe in diesem Fall sogar übersichtlicher ist, da der "Blättern" Teil von dem statischen Teil optisch abgegrenzt ist. Persönlich würde ich um das Memo sogar noch den Rahmen stehen lassen um das zu untermauern.

...aber Gott sei dank sind die Geschmäcker verschieden :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz