AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Balloontips in Mouse-Events "einbeziehen"
Thema durchsuchen
Ansicht
Themen-Optionen

Balloontips in Mouse-Events "einbeziehen"

Ein Thema von Alex_ITA01 · begonnen am 26. Jan 2005 · letzter Beitrag vom 27. Jan 2005
Antwort Antwort
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#1

Balloontips in Mouse-Events "einbeziehen"

  Alt 26. Jan 2005, 08:23
Moin Moin erstmal...
ich habe da mal eine Frage zu den BalloonTips.

Mit folgendem Code lass ich mir auf meiner Form ein Balloontip anzeigen.
Jetzt möchte ich aber folgendes:
Angenommen ich habe ein Image wo sich Graphen drinne befinden. Nun möchte ich, dass wenn sich die Maus über einem Graphen befindet, so ein Baloontip angezeigt wird. Die Abfrage, ob sich die Maus über dem Graph befindet ist relativ simple (funktioniert auch schon) und nun möchte ich eben ein Balloontip anzeigen und sobald die Maus ins "Leere" geht auf dem Image, den Balloontip wieder ausblenden.
Hat sowas jemand schonmal probiert, geschafft oder ähnliches?
Würde mich sehr freuen wenn ihr ne Lösung habt.
MFG Alex

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure ShowBalloonTip(Icon : Integer;
                             Title : PChar;
                             Text : PWideChar;
                             BackCL, TextCL : TColor);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowBalloonTip(1,'Hallo','TEST',clBlack,clWhite);
end;

procedure TForm1.ShowBalloonTip(Icon: Integer; Title: PChar; Text: PWideChar;
                                BackCL, TextCL: TColor);
const
  TOOLTIPS_CLASS = 'tooltips_class32';
  TTS_ALWAYSTIP = $01;
  TTS_NOPREFIX = $02;
  TTS_BALLOON = $40;
  TTF_SUBCLASS = $0010;
  TTF_TRANSPARENT = $0100;
  TTF_CENTERTIP = $0002;
  TTM_ADDTOOL = $0400 + 50;
  TTM_SETTITLE = (WM_USER + 32);
  ICC_WIN95_CLASSES = $000000FF;
type
  TOOLINFO = packed record
    cbSize : Integer;
    uFlags : Integer;
    hwnd : THandle;
    uId : Integer;
    rect : TRect;
    hinst : THandle;
    lpszText : PWideChar;
    lParam : Integer;
  end;
var
  hWndTip : THandle;
  ti : TOOLINFO;
  hWnd : THandle;
begin
  hWnd := Form1.Handle;
  hWndTip := CreateWindow(TOOLTIPS_CLASS,
                          nil,
                          WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP,
                          0, 0, 0, 0,
                          hWnd,
                          0,
                          HInstance,
                          nil);
  if hWndTip <> 0 then
  begin
    SetWindowPos(hWndTip,
                 HWND_TOPMOST,
                 0 , 0 , 0, 0,
                 SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
    ti.cbSize := SizeOf(ti);
    ti.uFlags := TTF_TRANSPARENT or TTF_SUBCLASS;
    ti.hwnd := hWnd;
    ti.lpszText := Text;
    Windows.GetClientRect(hWnd, ti.rect);
    SendMessage(hWndTip, TTM_SETTIPBKCOLOR, BackCL, 0);
    SendMessage(hWndTip, TTM_SETTIPTEXTCOLOR, TextCL, 0);
    SendMessage(hWndTip, TTM_ADDTOOL, 1, Integer(@ti));
    SendMessage(hWndTip, TTM_SETTITLE, Icon mod 4, Integer(Title));
  end;
end;

end.
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#2

Re: Balloontips in Mouse-Events "einbeziehen"

  Alt 27. Jan 2005, 08:24
*PUSH*!!!
Hat keiner eine Idee?

MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Balloontips in Mouse-Events "einbeziehen"

  Alt 27. Jan 2005, 08:57
Wenn du alle Hints global für die ganze Anwendung "ballonisieren" willst (also andere Optik),
dann müsstest du eine neue Klasse von THintWindow ableiten.
Delphi-Quellcode:
TBallonHintWindow = class(THintWindow)
....
end;
Dann müsstest du beim Programmstart die neue Klasse "registrieren":
Delphi-Quellcode:
procedure THauptFormular.OnCreate(sender:TObject);
begin
   Application.HintWindowClass := TBallonHintWindow;
end;
Andreas
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#4

Re: Balloontips in Mouse-Events "einbeziehen"

  Alt 27. Jan 2005, 09:16
das Problem ist ja, ich will nicht alle Hint's "ändern" sondern nur auf bestimmte Maus-Positionen im Image reagieren und dann dort ein Hint bzw. Balloontip anzeigen. Alle anderen Komponenten auf der Form bleiben ganz normal behandelt mit dem "Standard-Hint". (ShowHint = True und Hint = 'Irgendwas').

MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Balloontips in Mouse-Events "einbeziehen"

  Alt 27. Jan 2005, 10:44
Zitat von Alex_ITA01:
das Problem ist ja, ich will nicht alle Hint's "ändern" sondern nur auf bestimmte Maus-Positionen im Image reagieren und dann dort ein Hint bzw. Balloontip anzeigen. Alle anderen Komponenten auf der Form bleiben ganz normal behandelt mit dem "Standard-Hint". (ShowHint = True und Hint = 'Irgendwas').
Dann würde ich erst mal deinen Ballon-Hint in einer Klasse kapseln, denn du musst dir das
Window-Handle (hWndTip) für später merken.
Wenn du das mit folgendem Tip:
http://www.swissdelphicenter.ch/de/showcode.php?id=1068
kombinierst, dann kannst du feststellen, ob der Mauszeiger dein Image verlassen hat.
Andreas
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#6

Re: Balloontips in Mouse-Events "einbeziehen"

  Alt 27. Jan 2005, 15:11
okay danke, ich werde es mal in den nächsten Tagen probieren... (komme leider heute und morgen nicht dazu).
MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  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 18:11 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