![]() |
Glyph bei Buttons ist TBitmap, ich brauche TPicture
Einer TImage Komponente kann man ja über die Eigenschaft Picture vom Typ TPicture ein Bild zuweisen.
Es gibt die Möglichkeit nicht unterstützte Dateitypen zu implementieren.
Delphi-Quellcode:
Damit kann dann die TImage Komponente (und alle Komponenten die TPicture verwenden) auch diese Grafikformate verarbeiten.
TPicture.RegisterFileFormat('PNG', 'Portable Network Graphics', TPNGObject);
Bei einem TBitBtn, TSpeedButton, ... ist die Eigenschaft Glyph vorhanden. Mit dieser Eigenschaft kann dem Button ein Bild zugewiesen werden. Dummerweise ist Glyph vom Typ TBitmap.
Delphi-Quellcode:
Die TImage Komponente verwendet ein TPicture.
TBitBtn = class(TButton)
... property Glyph: TBitmap read GetGlyph write SetGlyph stored IsCustom; ...
Delphi-Quellcode:
Da ich aber *.png Grafiken mit Alpha Blending verwenden möchte um die Icons unabhängig von dem gewähltem Skin (XP Theme) darzustellen, brauche ich Buttons, die mit TPicture arbeiten.
TImage = class(TGraphicControl)
... property Picture: TPicture read FPicture write SetPicture; ... Kann mir jemand solch eine Button Komponente empfehlen? Ich habe schon nach Komponenten gesucht, aber noch keine Vernünftige gefunden. Die Komponente sollte sich auch dem XP Theme anpassen (XP Manifest) Danke [edit]eigentliche Frage Fett gemacht[/edit] |
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Versuche es mal mit Assign. Also
BitBtn.Bitmap.Assign(Picture) oder so ähnlich. Vielleicht klappts. [edit]Ach vergiss, sehe gerade, dass du was ganz anderes möchtest :wall: [/edit] |
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
*push*
stehe grade vor dem selben Problem ... Hast du mittlerweile eine geeignete Komponente gefunden ? |
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Zitat:
Aber: Die Firma Developer Express Inc wird das in eine der nächsten Versionen Ihrer Komponenten einbauen ;-) ( ![]() Zitat:
|
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Die sind aber glaube nur gegen Geld zu haben ... :(
Muss man sich wohl doch selbst an die Arbeit stürzen :( |
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Zitat:
|
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Ich glaube bei der JediVCL sind auch Buttons mit TPicture Glyph dabei.
Ansonsten hilft natuerlich ein Glyph.Assign(SeparatePicture.Graphic.Bitmap); Dafuer ist naemlich Graphic.Bitmap da. Windows kann nur Bitmaps anzeigen, daher muss Picture immer eine Bitmap-Version vorhalten. |
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Zitat:
(Das war das erste was ich probiert habe) |
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Dann ist die Transparent-Implementation fuer PNG eben schlecht. Pech gehabt.
Alternativ rangehen und reparieren. Das duerfte ja OpenSource sein. |
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Zitat:
Bei *.png Dateien kann man transparente Abstufungen in 256 Stufen machen. (8Bit) Da der BitBtn leider nicht das Canvas auf dem er das Glyph zeichnet an das zu zuweisende Picture weitergibt, kann das picture in der TPicture.Bitmap auch nicht den Hintergrund des Buttons wissen und somit auch keine echte Transparenz umsetzen. Abhängig vom Skin ist es aber auch nicht leicht das "untenliegende" Canvas des Glyphs zu ermitteln um dann selbst was zu basteln. In Internet findet sich diese Frage relativ häuftig, aber es gibt nirgends eine Lösung. -> Scheint also nicht ganz so einfach zu sein. |
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ist zwar unschön aber funktioniert grundsätzlich was die Hauptsache ist ... |
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Zitat:
-> Ich habe mich durch die >300 Komponenten durchgewühlt, aber kein Button mit TPicture vorhanden. (Sind zwar fast 20 Buttons, aber das Glyph ist immer TBitmap oder der Button arbeitet mit einer TImageList, die aber wiederum dur TBitmaps beinhalten darf :-( ) |
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Ich möchte mich hier nicht als Voll-Noob präsentieren, aber ich hab da glaube ich nen Ansatz:
- TPanels als Buttons einsetzen: - Eigenschaften: -- Alignment: taLeftJustify -- Color: indiv./ clBtnFace -- Caption := [n Spaces] + Caption - Diese Funktionen deklarieren:
Delphi-Quellcode:
- dazu passend MouseDown- und MouseUp-Prozeduren deklarieren
procedure BtnUp(Panel: TPanel);
begin Panel.BevelOuter := bvLowered; Panel.BevelInner := bvRaised; end; procedure BtnDown(Panel: TPanel); begin Panel.BevelOuter := bvRaised; Panel.BevelInner := bvLowered; end; - letztendlich ein TImage auf das Panel ziehen, und zur Laufzeit dort die Bilder hineinladen. Wenn ich jetzt noch wüsste, wie man (ich) Komponenten erstellen kann wär die Welt perfekt *fg* mfg |
Re: Glyph bei Buttons ist TBitmap, ich brauche TPicture
Der Wunsch ging eindeutig in richtung "mit XP Style" ...
Habe das Problem ist auch schon gelöst ... bei Interesse PN an mich! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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