AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hint-Window

Ein Thema von MatthiasW · begonnen am 1. Dez 2004 · letzter Beitrag vom 2. Dez 2004
Antwort Antwort
MatthiasW

Registriert seit: 29. Jan 2003
Ort: Reichenbach
253 Beiträge
 
Delphi 2009 Professional
 
#1

Hint-Window

  Alt 1. Dez 2004, 20:53
Weiß jemand ob sich in Delphi7/2005 irgendwas in der Klasse HintWindow geändert hat? In Delphi5 ist es so, das wenn ich ein Hint selbst einblenden will ich dieses mit "ActivateHint" einblenden muss.

In den neueren Delphi - Versionen (7 und 2005) blitzt das Hint kurz auf und dann verliert das Formular den Focus und nach ca. 5-10 sekunden bekommt das Form den Focus wieder.

Wenn ich jetzt die Zeile mit dem "ActivateHint" auskommentiere wird in (Delphi 2005) das Hint Ordnungsgemäß angezeigt - nagut die Höhe des Hints stimmt nicht .

Hat jemand ne Ahnung was das sein könnte?
Hilfe wir stürzen ab!!!
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#2

Re: Hint-Window

  Alt 1. Dez 2004, 22:03
Ich habe Delphi 7 und folgenden Testcode:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    HintWnd: THintWindow;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  MPos: TPoint;
begin
  GetCursorPos(MPos);
  HintWnd.ActivateHint(Rect(MPos.X, MPos.Y, MPos.X + 100, Mpos.Y + 15), 'Hallo Welt!');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  HintWnd := THintWindow.Create(Self);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  HintWnd.Free;
end;
Wenn ich auf den Button klicke wird das Hintfenster angezeigt und die Anwendung behält auch den Fokus. Weiter passiert nichts. Oder habe ich was falsch verstanden? Nutze WinXP.

MfG Pr0g
  Mit Zitat antworten Zitat
MatthiasW

Registriert seit: 29. Jan 2003
Ort: Reichenbach
253 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Hint-Window

  Alt 2. Dez 2004, 00:08
Also so wie du den Hint erzeugst dann gehört er dem FCL - Formular. Wenn jetzt der Hint über den Rand des Fensters geht wird der dort abgeschnitten.

Ich habe foldenden Code:

Delphi-Quellcode:
HintParentForm := GetParentForm(Self);
GetCursorPos(FormPos);

if fHintWindow = nil then
begin
  if HintParentForm <> nil then
    fHintWindow := THintWindow.Create(HintParentForm)
  else
    fHintWindow := THintWindow.CreateParented(Self.ParentWindow);
end;

fHintWindow.ParentWindow := GetDesktopWindow;

iItemLength := Canvas.TextWidth(fItems.Strings[fMouseMovedItem]) + 10;
iItemHeight := Canvas.TextHeight('100') + 2;

HintRect := Rect(FormPos.x,FormPos.y,FormPos.x+iItemLength,
                 FormPos.y+iItemHeight);
fHintWindow.ActivateHint(HintRect,fItems.Strings[fMouseMovedItem]);
Das Hintwindow soll aus innerhalb einer Componente angezeigt werden.

In Delphi5 hat dieser Code exakt das gewünschte Hint - Window zum vorschein gebracht. Wenn ich jetzt exakt diesen Code von Delphi 7 oder 2005 ausführen lasse, blitzt das Hint kurz auf und der Form bekommt den Focus entzogen und nach etwa 5 - 10 Sekunden automatisch wieder zugewiesen.

Lasse ich das "ActivateHint" weg und setze die "Width" und "Height" Eigenschaften dann wird der Hint wieder dauernd angezeigt.

Tja drum hab ich halt gedacht ob da was anders geworden ist, das das "ActivateHint" nicht mehr notwendig ist.
Hilfe wir stürzen ab!!!
  Mit Zitat antworten Zitat
MatthiasW

Registriert seit: 29. Jan 2003
Ort: Reichenbach
253 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Hint-Window

  Alt 2. Dez 2004, 09:46
Hab den Fehler gefunden : ich darf den Desktop nicht als Parentwindow angeben .
Zeile darf ich nicht verwenden:
fHintWindow.ParentWindow := GetDesktopWindow;
Hilfe wir stürzen ab!!!
  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 11:18 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