AGB  ·  Datenschutz  ·  Impressum  







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

Transparente Checkbox

Ein Thema von Schauries · begonnen am 6. Mär 2005 · letzter Beitrag vom 7. Mär 2005
Antwort Antwort
Schauries

Registriert seit: 6. Mär 2005
Ort: Essen
5 Beiträge
 
#1

Transparente Checkbox

  Alt 6. Mär 2005, 18:55
Hallo zusammen,

ich suche eine wirklich transparente Checkbox (D5), die nach wie vor eine Caption hat und den Fokus erhalten. Dream und JVCL bieten das leider nicht.
Hat jemand eine Idee?
Vielen Dank,
Dirk Schauries
Schauries
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Transparente Checkbox

  Alt 6. Mär 2005, 19:01
soll die gesammte Checkbox transparent sein? also auch dort wo später der Haken ist? Wenn ja, ist das nicht möglich denn wenn deine Componenten den Focus erhalten soll dasnn muss sie ein handle haben. Und Controls mit Handle (TWinControl) können nicht transparent sein. Oder meintest du 100% transparent (also nicht alpha)? Dann gebe es die möglichkeit mit "CreatePolygonRgn" eine Region für deine Checkbox zu erstellen so das sie dann an bestimmten Stellen 100% transparent ist so das man hindurch klickt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Schauries

Registriert seit: 6. Mär 2005
Ort: Essen
5 Beiträge
 
#3

Re: Transparente Checkbox

  Alt 6. Mär 2005, 19:23
Hallo,
vielen Dank für die schnelle Antwort!
Also dass mit dem WinControl geht schon. Ich mach das über:

TMyCheckBox = class(TCustomControl)

gekürzt...

Delphi-Quellcode:
  private
    procedure CMEnabledChanged(var Msg: TMessage); message CM_ENABLEDCHANGED;
    procedure CMDialogChar(var Msg: TCMDialogChar); message CM_DIALOGCHAR;
    procedure CMFontChanged(var Msg: TMessage); message CM_FONTCHANGED;
    procedure CMTextChanged(var Msg: TMessage); message CM_TEXTCHANGED;
    procedure CMSysColorChange(var Msg: TMessage); message CM_SYSCOLORCHANGE;
    procedure CMCtl3DChanged(var Msg: TMessage); message CM_CTL3DCHANGED;
    procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
    procedure WMKillFocus(var Message: TWMKillFocus); message WM_KILLFOCUS;
    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
    procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
    procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
    procedure WMRButtonDown(var Message: TWMLButtonDown); message WM_RBUTTONDOWN;
    procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
    procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
    procedure WMSize(var Message: TWMSize); message WM_SIZE;
    procedure WMMove(var Message: TWMMove); message WM_MOVE;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;

und…
  protected
    procedure Paint; override;
    procedure Click; override;
    procedure CreateWnd; override;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    procedure Toggle; virtual;
Aber es zeichnet sich nicht immer sauber in den Vordergrund. Lege ich die Checkbox auf ein Image und erhält das Image ein Invalidate, ist meine Checkbox weg. Erst durch anklicken oder Fokuserhalt tritt sie wieder in den Vordergrund.
Ich zeichne auch den Ankreuzhaken selber mit einem kleinen Bitmap. Das ganze hat also mit einer ursprünglichen Checkbox nichts mehr zu tun.

Ich würde auf mein Selbstgebasteltes gerne verzichten, wenn ich doch eine Alternative fände ...
Gruß,
Dirk Schauries

[edit=sakura] [delphi]Tags. Mfg, sakura[/edit]
Schauries
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Transparente Checkbox

  Alt 6. Mär 2005, 20:31
also ich würde es einfach mit einem TGraphicControl machen. Dies kann allerdings nicht den Focus erhalten. Dafür ist das da mit der Transparent bedeutend einfacher weil du im Paint auf die vorhandene Canvas eingehen kannst und per alpha drüber zeischnen.

eine weitere Möglichkeit wäre die Komponente von TCustomControl abzuleiten (wie du es schon machst) und ein Hintergrund bild zu zuweisen. Anahand des zugewiesenen Hintergrundbildes könntest du dann den Eindruck erwecken das die Komponente Transparent ist. Weswegen muss die Komponente eigentlich Transparent sein, was ist unter der Checkbox was man durchsehen soll? Vielleicht gibt es ja dementsprechend noch eine einfachere Lösung eine "pseudo-Transparenz" darzustellen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Transparente Checkbox

  Alt 6. Mär 2005, 20:37
Ich würde aber mit Regions. Vielleicht ist das mehr aufwand aber im Prinzip eine IMHO gute Lösung.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Schauries

Registriert seit: 6. Mär 2005
Ort: Essen
5 Beiträge
 
#6

Re: Transparente Checkbox

  Alt 6. Mär 2005, 21:52
Danke für die schnellen Antworten! Bin ich gar nicht gewohnt...
Also auf den Fokus kann ich nicht verzichten, denn dann schlagen mich ca. 1000 Kunden tooot.
Die arbeiten alle fast ausschließlich mit der Tastatur. Der Hintergrund steht nicht von Vornherein fest, da Formulardesigner zu einem späteren Zeitpunkt darüber entscheiden. Vermutlich werden es Image-Komponenten sein. Ich muss nur dafür sorgen, dass der Hintergrund, egal welcher (Windows sagt mir ja, wer dahinter liegt) zum richtigen Zeitpunkt gezeichnet wird.

<<und ein Hintergrund bild zu zuweisen

Das kann ich nicht. Es muss auch funktionieren, wenn die Hintergrundkomponente sich von selbst verschiebt.
Ich sehe schon, ich erwarte zu viel, aber vielen Dank für Eure/Deine Mühe !!!
Dirk Schauries
Schauries
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Transparente Checkbox

  Alt 6. Mär 2005, 21:59
Moin!

Vielleicht hilft es, wenn man die TextOut() Funktion der WinAPI benutzt, weil diese kann einen Pfad anlegen der sich direkt um die Buchstaben des Strings legt und somit leicht zum Clipping benutzt werden kann, um einen rein transparenten Text zu erhalten für das Window Handle.

Die CheckBox kann man sich mit LoadImage() und MakeIntResource() ermitteln und entsprechend transparent umgestalten.

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Transparente Checkbox

  Alt 6. Mär 2005, 22:29
Die CheckBoxen vom ElPack könnten evtl. auch das gewünschte liefern.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Schauries

Registriert seit: 6. Mär 2005
Ort: Essen
5 Beiträge
 
#9

Re: Transparente Checkbox

  Alt 7. Mär 2005, 19:59
Danke, das hat geholfen !!!
Dirk Schauries
Schauries
  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 17:22 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