![]() |
Re: Graphischer Hint mit eigenen Bitmap
@Helmi
Zuerst mal danke für den Hinweis. Vermutlich war es gestern Abend/heute Morgen wohl doch etwas zu spät. Ich habe jetzt den Quellcode aus 2 Komponenten übernommen, die sich auch mit Grafik beschäftigen. Dort wird jeweils nur eine Methode für das Schreiben des TPicture angelegt. Das Lesen geht irgendwie auch so. Ich behaupte nicht, es verstanden zu haben. Aber es funktioniert so:
Delphi-Quellcode:
und hier die Methoden:
Type
THHint = Class(TComponent) private Screensize : Integer; Factive : Boolean; // Aktiv Fseparator : Char; // Normaler Separator FGraphicTag : String; // Grafik-TAG FPicture : TPicture; // Grafik FOnShowHint : TShowHintEvent;// Anzeigen des Hint Protected // Aktiv Function GetActive:boolean; Procedure SetActive(IsActive:Boolean); // Normaler Separator Function GetSeparator:Char; Procedure SetSeparator(IsSep:Char); // Grafik-TAG Function GetGraphicTag:String; Procedure SetGraphicTag(IsGraphTag:String); // Grafik Procedure SetPicture(IsGraphic:TPicture); // Procedure zum Anzeigen des Hint Procedure NewHintInfo(Var HintStr : String; Var CanShow : Boolean; Var HintInfo : THintInfo); Public Constructor Create(AOwner:Tcomponent);Override; Published Property Active: Boolean Read GetActive Write SetActive; Property Separator: Char Read GetSeparator Write SetSeparator; Property GraphicTag: String Read GetGraphicTag Write SetGraphicTag; Property Picture: TPicture Read FPicture Write SetPicture; End;
Delphi-Quellcode:
So dürfte es auch kein Speicherleck mehr geben, oder? Das Bild bekomme ich jedenfalls zurück. Ich mache mich dann mal (bei Gelegenheit) an das Bauen der Bildausgabe.
// Grafik
Procedure THHint.SetPicture(IsGraphic: TPicture); Begin FPicture.Assign(IsGraphic); End; Nebenfrage: Warum werden manche Methoden zum Lesen beschrieben und andere nicht bzw. wonach richtet sich die Notwendigkeit? Ich nehme gern auch Links zum Nachlesen. Gruß, Alex |
Re: Graphischer Hint mit eigenen Bitmap
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bekomme kein Bitmap zu sehen :wall:
Ich hatte zunächst gesehen, dass der von mir veränderte Quellcode THHint zunächst von TComponent abgeleitet hat. Letzteres kann aber von Hause aus nicht per Canvas zeichnen. Deshalb habe ich dann wie im ![]() Ich war deshalb davon ausgegangen, dass mein Problem vom Constructor her rührt
Delphi-Quellcode:
Der ist aber im Beispielcode auch so; und er funktioniert. Der Compiler meckert ja auch nicht rum, das auf die Eigenschaft Canvas nicht zugegriffen werden könne.
Constructor Create(AOwner: TComponent); Override;
Ich habe mir einen zusätzlichen Button auf das Formular gelegt. Beim Click wird mittels Canvas das Bild in THHint auf das Formular gemalt. Das klappt und ich habe den Code 1:1 in die Komponente übernommen. Warum klappt es dort nicht mehr? [edit] Dateianhang vergessen! [/edit] |
Re: Graphischer Hint mit eigenen Bitmap
Ich bin jetzt schon soweit, dass ich die Ausgabe der Grafik hinbekomme, wobei FRect und Picture Eigenschaften der Komponente sind:
Delphi-Quellcode:
Ich weiß zwar, wie ich den Bereich unter dem Bitmap wieder in den ursprünglichen Zustand zurückversetzen kann. Leider gibt es bei TApplication kein Ereignis wie z.B. OnHideHint. Die Procedure HideHint bringt mich nicht weiter. Ich möchte auch nicht TApplication ändern und um ein Ereignis erweitern...
Var
DesktopDC : HDC; // Handle auf irgendeinen Desktop DesktopCanvas : TControlCanvas;// Leinwand zum Malen ... Begin ... DesktopDC:=GetDC(0); If DesktopDC<>0 Then Try DesktopCanvas:=TControlCanvas.Create; Try DesktopCanvas.Handle:=DesktopDC; DesktopCanvas.Draw(FRect.Left,FRect.Top,Picture.Bitmap); Finally DesktopCanvas.Free; End; Finally ReleaseDC(0, DesktopDC); End; Gibt es eine Möglichkeit herauszubekommen, wann der Hint wieder ausgeblendet werden muss? Ich bin so kurz vor dem Ziel :| Bei Bedarf gebe ich den Quelltext wieder mit. Ich habe aber Angst verhauden zu werden, wenn ich zig Versionen meines Programm hier einstelle... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 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