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 Kleines Icon bei Hint anzeigen (https://www.delphipraxis.net/94518-kleines-icon-bei-hint-anzeigen.html)

daschaos 22. Jun 2007 15:18


Kleines Icon bei Hint anzeigen
 
Hi!

Wie bekomme ich das hin, ein Icon neben meinem Hinttext im Hintfenster anzeigen zu lassen?
Hoffe, das geht...

Bernhard Geyer 22. Jun 2007 15:20

Re: Kleines Icon bei Hint anzeigen
 
Nicht ohne zusatzkompos wie das TElHtmlHint oder eine eigene Implementierung.

sirius 22. Jun 2007 15:25

Re: Kleines Icon bei Hint anzeigen
 
Du leitest dir eine eigene Klasse von THintwindow ab und überschreibst die Paint-Methode.

fLaSh11 22. Jun 2007 15:37

Re: Kleines Icon bei Hint anzeigen
 
meinst du einen Hier im Forum suchenBalloon-Hint? Vorgefertigt: JVBalloonHint in der JVCL!

daschaos 22. Jun 2007 15:55

Re: Kleines Icon bei Hint anzeigen
 
Hilfe, das ist alles zuviel für mich Programmieranfänger :(. Steig da nich richtig dahinter, wie ich da vorgehen muss.
Darf keine Fremdkomponenten benutzen. Klappt das denn mit THintWindow?

sirius 22. Jun 2007 17:13

Re: Kleines Icon bei Hint anzeigen
 
So könnte man es machen:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type TmyHintwindow=class(Thintwindow)
       bild:Tbitmap;
       constructor create(Aowner:Tcomponent); override;
       destructor Destroy; override;
       procedure paint; override;
       function CalcHintRect(MaxWidth: Integer; const AHint: string; AData: Pointer): TRect; override;
end;


type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    Hintwindow:TmyHintwindow;

  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor tmyHintwindow.create(Aowner:Tcomponent);
begin
  inherited create(Aowner);
  bild:=tbitmap.Create;
  bild.LoadFromFile('D:\test.bmp');
end;
destructor tmyhintwindow.destroy;
begin
  bild.free;
  inherited;
end;

procedure tmyHintwindow.paint;
//Methode neu geschrieben um den Text ein wenig nach rechts zu rücken
var R: TRect;
begin
  R := ClientRect;
  Inc(R.Left, 52);
  Inc(R.Top, 2);
  Canvas.Font.Color := Screen.HintFont.Color;
  DrawText(Canvas.Handle, PChar(Caption), -1, R, DT_LEFT or DT_NOPREFIX or
    DT_WORDBREAK or DrawTextBiDiModeFlagsReadingOnly);

  stretchblt(canvas.Handle,2,2,45,45,bild.canvas.handle,0,0,bild.width,bild.height,SRCCOPY);
end;
function TmyHintWindow.CalcHintRect(MaxWidth:Integer;const AHint:string;AData:Pointer):TRect;
//Das HintRect wird jetzt etwas größer berechnet
begin
  result:=inherited CalcHintRect(MaxWidth,Ahint,AData);
  result.Right:=result.Right+50;
  if result.Bottom-result.top<50 then result.Bottom:=result.top+50;
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
  hintwindowclass:=Tmyhintwindow; //Damit wird immer dein neues Hintwindow verwendet


  memo1.showhint:=true;
  memo1.Hint:='Hallo';
end;

end.
Die Klasse TmyHintwindow kann natürlich auch in eine andere Unit gelegt werden. wichtig ist die erste Zeile von Formcreate (die natürlich auch woanders stehen kann).

fLaSh11 22. Jun 2007 17:33

Re: Kleines Icon bei Hint anzeigen
 
Zitat:

Zitat von daschaos
Darf keine Fremdkomponenten benutzen.

Hört sich an, als müsse er das wo abgeben, wenn er Anfänger ist...
Dann kann er wohl kaum mit sonem QC kommen^^

sirius 22. Jun 2007 17:38

Re: Kleines Icon bei Hint anzeigen
 
Zitat:

Zitat von fLaSh11
Zitat:

Zitat von daschaos
Darf keine Fremdkomponenten benutzen.

Hört sich an, als müsse er das wo abgeben, wenn er Anfänger ist...
Dann kann er wohl kaum mit sonem QC kommen^^

Upps :duck:
Ich dachte es bedeutet TD Explorer.
Die Lösung ist eh noch nicht optimal (Das Bild wird bei jedem Aktivieren neu geladen).
Ausserdem, wenn es die Aufgabe war.... ich wüsste nicht, wie es einfacher geht ausser ein eigenes Formular zu basteln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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