Hinty - formatowanie zawartości

0

Witam.

Próbuję zmienić wygląd hinta.

W sieci znalazłem dwa sposoby:
1.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TExHint = class(THintWindow)
  constructor Create(AOwner: TComponent); override;
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor TExHint.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  with Canvas.Font do
  begin
    Name  := 'Verdana';
    Size  := Size + 15;
    Style := [fsBold, fsItalic];
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  HintWindowClass  := TExHint;
end;

end. 

Hint jest co prawda większy ale czcionka zostaje bez zmian :
1.jpg

oraz drugi, prostszy sposób:
w FormCreate(Sender: TObject) głownej formy dodać:

 Application.hinthidepause:=0;
     Application.HintColor:=clYellow;
     Screen.HintFont.Name:='times new roman';
     Screen.HintFont.Color:=clBlue;
     Screen.HintFont.Style:=[fsbold,fsitalic];
     Screen.HintFont.Size:=30;
   

tło zmienia się zgodnie z oczekiwaniami lecz czcionka znów bez zmian...

2.jpg

Testowałem pod Windows 8.

Jak w takim razie zmienić tą czcionkę ?

Z góry dziękuję za pomoc.

0

@furious programming dziękuje Ci za odpowiedź.
W źródle które podałeś jest to co napisałem w punkcie pierwszym, dodane jest jedynie

   Application.ShowHint := False;
  Application.ShowHint := True;

jednak to nie naprawia problemu...

3
constructor TExHint.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  with Font do // bo Canvas.Font - może się cofnąć przy najbliższym rysowaniu
  begin
    Name  := 'Verdana';
    Size  := Size + 15;
    Style := [fsBold, fsItalic];
  end;
end;
0

@_13th_Dragon dziękuję ! To działa :)!
Wychodzi na to, że na tych paru/parunastu stronach które podają ten sposób jest mały błąd...

0

Wróciłem do projektu w którym chciałem wykorzystać te hinty i znów zonk...
Wtedy gdy zakładałem ten temat sposób @_13th_Dragon zadziałał bez zarzutu.
Dziś taki kod :

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;

type

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;


type
  TExHint = class(THintWindow)
  constructor Create(AOwner: TComponent); override;
end;


var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

constructor TExHint.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  with Font do // bo Canvas.Font - może się cofnąć przy najbliższym rysowaniu
  begin
    Name  := 'Verdana';
    Size  := Size + 35;
    Style := [fsBold, fsItalic];
    Color := clRed;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    HintWindowClass  := TExHint;
end;

end.
 

Daje taki efekt:
hinyt.jpg

Dlaczego ?

0

HintWindowClass działa globalnie, ustaw to w rozdziale initialization

0

Przyznam szczerze, że nie do końca rozumiem....

Dopisałem przed end.

initialization
  HintWindowClass  := TExHint;   

ale bez efektu...

0

To dodaj jeszcze:

Screen.HintFont.Assign(Font);

na koniec konstruktora: constructor TExHint.Create(AOwner: TComponent);

0

Witam.

Dziękuję za odpowiedz.
Kolejny raz podchodzę to temat.
Teraz mój kod wygląda tak :

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;

type

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

type
  TExHint = class(THintWindow)
  constructor Create(AOwner: TComponent); override;
end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

constructor TExHint.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  with Font do // bo Canvas.Font - może się cofnąć przy najbliższym rysowaniu
  begin
    Name  := 'Verdana';
    Size  := Size + 35;
    Style := [fsBold, fsItalic];
    Color := clRed;
  end;
  Screen.HintFont.Assign(Font);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  HintWindowClass  := TExHint;     // Tego chyba powinno nie być - jednak usunięcie nic nie zmienia.
end;

initialization
  HintWindowClass  := TExHint;

end.
 

Lecz hint nadal wyświetla się standardowo....

1 użytkowników online, w tym zalogowanych: 0, gości: 1