// Help-Button des
Formulars benutzen:
// Getestet mit D4 unter XP
und mit D2010 unter W7
// Variante 1:
Meldung sofort ausgeben
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure wmNCLButtonDown(var Msg: TWMNCLButtonDown);
message WM_NCLBUTTONDOWN;
procedure wmNCLButtonUp(var Msg: TWMNCLButtonUp);
message WM_NCLBUTTONUP;
end;
var
Form1: TForm1;
implementation
{ $R * . DFM }
procedure TForm1.FormCreate(Sender: TObject);
begin
BorderIcons := [biSystemMenu, biHelp];
end;
procedure TForm1.wmNCLButtonDown(var Msg: TWMNCLButtonDown);
begin
if Msg.HitTest = HTHELP then Msg.Result := 0
else inherited;
end;
procedure TForm1.wmNCLButtonUp(var Msg: TWMNCLButtonUp);
begin
if Msg.HitTest = HTHELP then begin
Msg.Result := 0;
ShowMessage('Hier steht was Wichtiges');
end else inherited;
end;
//---------------------------------------------------------------
// Variante 2: Direkthilfe für eine Komponente
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
CheckBox1: TCheckBox;
procedure FormCreate(Sender: TObject);
private
procedure wmNCLButtonDown(var Msg: TWMNCLButtonDown);
message WM_NCLBUTTONDOWN;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
BorderIcons := [biSystemMenu, biHelp];
Edit1.Tag := 1;
Button1.Tag := 2;
CheckBox1.tag := 3;
end;
procedure TForm1.wmNCLButtonDown(var Msg: TWMNCLButtonDown);
var
x: integer;
p: TPoint;
s: string;
begin
inherited;
if Msg.HitTest = HTHELP then begin
getcursorpos(p);
p := ScreenToclient(p);
for x := 0 to componentcount - 1 do begin
if (components[x] is TControl)
and (ptinrect(TControl(components[x]).boundsrect, p))
then begin
case components[x].Tag of
1: s := 'Hier können Sie etwas eingeben';
2: s := 'Mit diesem Button können Sie etwas auslösen';
3: s := 'Hier können Sie etwas an- oder abhaken';
else
exit;
end;
showmessage(s);
end;
end;
end;
end;
|