Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Balloon-Hints die 2548. Ausgabe

  Alt 21. Nov 2005, 08:23
Wenn ich das richtig sehe, nutzt Microsoft unter XP die "Edit_ShowBalloonTip"-Funktion. Die hat allerdings den Nachteil, dass sie nur unter XP und nur mit Manifest funktioniert:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Edit1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit1Enter(Sender: TObject);
  private
    EditBalloonTip : TEditBalloonTip;
    procedure GetVkCapitalState;
  end;

//
// ...
//

procedure TForm1.FormCreate(Sender: TObject);
begin
  ZeroMemory(@EditBalloonTip, sizeof(EditBalloonTip));
  EditBalloonTip.cbStruct := sizeof(EditBalloonTip);
  EditBalloonTip.pszTitle := 'Feststelltaste ist aktiviert';
  EditBalloonTip.pszText := 'Das Kennwort wird eventuell falsch ' +
    'eingegeben, wenn die Feststelltaste aktiviert ist.' + #13#10#13#10 +
    'Sie sollten die Feststelltaste deaktivieren, bevor Sie ein ' +
    'Kennwort eingeben.';
  EditBalloonTip.ttiIcon := TTI_WARNING;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_CAPITAL) then
    self.GetVkCapitalState;
end;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  self.GetVkCapitalState;
end;

procedure TForm1.GetVkCapitalState;
var
  kbState : TKeyboardState;
begin
  if not GetKeyboardState(kbState) then exit;

  if kbState[VK_CAPITAL] = 1 then
    Edit_ShowBalloonTip(self.Edit1.Handle, @EditBalloonTip)
  else
    Edit_HideBalloonTip(self.Edit1.Handle);
end;
Zum Testen brauchst du die "CommCtrl_Fragment.pas"-Unit aus den Tutorials und, wie schon erwähnt, ein Manifest (als Ressource oder extern als "*.exe.manifest"-Datei). Die o.g. API-Funktion wird übrigens im Kapitel über Eingabefelder besprochen.
  Mit Zitat antworten Zitat