AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Transparente TEdit auch mit XPManifest

Ein Thema von kurt · begonnen am 26. Dez 2006 · letzter Beitrag vom 2. Apr 2009
Antwort Antwort
kurt

Registriert seit: 13. Sep 2004
13 Beiträge
 
#1

Transparente TEdit auch mit XPManifest

  Alt 26. Dez 2006, 18:06
Hallo NG,
weiß einer von Euch Profis (ich leider noch nicht) wie man auch mit Einsatz von
XPManifest in D7 zum Beispiel TEdit Componenten transparent gestalten kann ?
Das Überschreiben von WMEraseBkGnd und Co. funktioniert leider mit XPManifest nicht.

Wäre ganz nett - Danke
Kurti
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#2

Re: Transparente TEdit auch mit XPManifest

  Alt 19. Mär 2009, 17:40
Ich schließe mich dieser Frage an. Alle Beispiele die man findet sind nur für Forms ohne das
Xp Manifest geeignet (für die Forms habe ich schon eine funktionierende Variante).

Also wie kriegt man das ganze für Forms mit Xp Manifest hin?

Vielen Dank.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Transparente TEdit auch mit XPManifest

  Alt 19. Mär 2009, 18:13
Und wenn man das Theming für Edits deaktiviert, funktioniert es dann?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#4

Re: Transparente TEdit auch mit XPManifest

  Alt 20. Mär 2009, 13:27
Zitat von DeddyH:
Und wenn man das Theming für Edits deaktiviert, funktioniert es dann?
Wenn du mir verräts wie das geht, dann könnte ich das mal versuchen.
Bedingung wäre natürlich, dass das Theming für alle Edits deaktiviert wird.
Weiterhin sollte es auch ohne Zusatzkomponenten möglich (Thememanager).

Vielen Dank.

madas
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.358 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Transparente TEdit auch mit XPManifest

  Alt 20. Mär 2009, 13:44
Ich weiß ja nicht wie du es ausprobiert hast, das hast du ja nicht genau verraten. Aber abgesehen davon, dass unter Vista der Hintergrund im Edit etwas verschoben ist funktioniert das hiermit z.B. schon:
http://www.delphi3000.com/articles/article_3576.asp?SK=
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#6

Re: Transparente TEdit auch mit XPManifest

  Alt 20. Mär 2009, 14:59
Ja, die Komponente habe ich auch schon durch.

Naja und das Ergebnis hat mit Transparenz nicht viel zu tun (siehe Anhang).
Angehängte Grafiken
Dateityp: bmp transedit_113.bmp (483,5 KB, 41x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#7

Re: Transparente TEdit auch mit XPManifest

  Alt 20. Mär 2009, 15:12
HI,

so wie ich das Ergebnis sehe, egibt sich für mich folgende Frage: Muss das unbedingt ein TEdit sein? Wenn nicht, nimm einfach ein TLabel und setze Transparent auf true. Dann kannst du auch noch zum editieren sagen: Beim Doppelklick auf das Label soll ein Edit kommen, in dem man den Wert des Labels aktualisiert. Somit wäre das Problem einfach umgangen.
Wenn ja, kann ich leider keine Lösung bieten

Bernhard

EDIT: Speichere deine Bilder bitte direkt im Forum per Anhang ab. Dann kannst du sie als noch per [img] anzeigen. Wir sind dann nicht mehr auf die ImageHack-Server angewiesen.
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#8

Re: Transparente TEdit auch mit XPManifest

  Alt 22. Mär 2009, 13:52
Zitat von rollstuhlfahrer:
HI,

so wie ich das Ergebnis sehe, egibt sich für mich folgende Frage: Muss das unbedingt ein TEdit sein? Wenn nicht, nimm einfach ein TLabel und setze Transparent auf true. Dann kannst du auch noch zum editieren sagen: Beim Doppelklick auf das Label soll ein Edit kommen, in dem man den Wert des Labels aktualisiert. Somit wäre das Problem einfach umgangen.
Wenn ja, kann ich leider keine Lösung bieten

Bernhard

EDIT: Speichere deine Bilder bitte direkt im Forum per Anhang ab. Dann kannst du sie als noch per [img] anzeigen. Wir sind dann nicht mehr auf die ImageHack-Server angewiesen.
Ja es muss ein TEdit sein.

So ich glaube ich habe jetzt eine Lösung für ein Form mit Xp-Manifest:

Delphi-Quellcode:
unit TransEdit;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, StdCtrls, Graphics;

type
  TTransEdit = class(TEdit)
  private
    { Private declarations }
    procedure SetTransparent(Value: Boolean);
    function GetTransparent: Boolean;
  protected
    { Protected declarations }
    procedure CNCtlColorEdit(var Message: TWMCtlColorEdit); message CN_CTLCOLOREDIT;
  public
    { Public declarations } 
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations } 
    property Transparent: Boolean read GetTransparent write SetTransparent default False;
  end;

procedure Register;

implementation

{ TTransEdit } 

uses
  Forms, Themes;

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

constructor TTransEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
end;

destructor TTransEdit.Destroy;
begin
  inherited Destroy;
end;

procedure TTransEdit.SetTransparent(Value: Boolean);
begin
  if Transparent <> Value then
  begin
    if Value then
      ControlStyle := ControlStyle - [csOpaque]
    else
      ControlStyle := ControlStyle + [csOpaque];
    Invalidate;
  end;
end;

function TTransEdit.GetTransparent: Boolean;
begin
  Result := not (csOpaque in ControlStyle);
end;

procedure TTransEdit.CNCtlColorEdit(var Message: TWMCtlColorEdit);
begin
  with ThemeServices do
    if ThemesEnabled and Transparent then
    begin
      SetBkMode(Message.ChildDC, Windows.TRANSPARENT);
      DrawParentBackground(Handle, Message.ChildDC, nil, False);
      Message.Result := GetStockObject(NULL_BRUSH);
    end
    else
      inherited;
end;

end.
Wäre nett wenn das mal jemand testen würde. Einziger Nachteil von dem Edit ist,
wenn das Edit über mehrere Controls geht, flackert es ein bissel.

Aber dafür findet sich sicher auch eine Lösung. Hat jemand eine Idee, wie man
noch das Flackern beseitigen kann?

Vielen Dank.

madas
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.358 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Transparente TEdit auch mit XPManifest

  Alt 22. Mär 2009, 14:43
Also unter Vista scheint der Hintergrund des Formulars durch, wenn ich das Edit z.B. über ein Memo lege.

Gegen das Flackern habe ich einmal DoubleBuffered getestet, aber das gibt Grafikfehler, auch inkl. DoubleBuffered Fix.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#10

Re: Transparente TEdit auch mit XPManifest

  Alt 2. Apr 2009, 07:18
Zitat von rollstuhlfahrer:
Wenn nicht, nimm einfach ein TLabel und setze Transparent auf true. Dann kannst du auch noch zum editieren sagen: Beim Doppelklick auf das Label soll ein Edit kommen, in dem man den Wert des Labels aktualisiert.
Wir haben jetzt diesen Vorschlag umgesetzt. Er macht zwar das Handling in der Anwendung ein wenig komplizierter, aber
von der Anzeige her sieht es so i.O. aus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz