Конференция "KOL" » Хинт'ы [Delphi, Windows]
 
  • RusSun © (04.03.10 17:44) [0]
    Доброе время суток.
    Вот такой код:

    program Project1;

    uses
     windows,
     kol;

    {$R *.res}
    type  TOnEvent = procedure( Sender: PObj )of object;
    var
    form,Button1,
    editbox1,editbox2:PControl;
    HintWND: HWND;
    TI: TToolInfo;
    Tips: array[0..3] of PChar = (
      'Кнопка Открыть',
      'ЭдитБох1',
      'ЭдитБох2',
      '');

    //область для процедур
    procedure clickbutton1(Dummy:pointer;Sender:PControl; var mouse:TMouseEventData);
    begin
    showmessage('');
    end;
    procedure mousemove(Dummy:pointer;Sender: PControl; var Mouse: TMouseEventData );
    begin
    with TI do
    begin
      cbSize:=sizeof(TI);
      uFlags:=TTF_SUBCLASS;
      hWnd:=Sender.GetWindowHandle;
      uID:=0;
      Rect.Left:=Sender.ClientRect.Left;
      Rect.Top:=Sender.ClientRect.Top;
      Rect.Right:=Sender.ClientRect.Right;
      Rect.Bottom:=Sender.ClientRect.Bottom;
      hInst:=HInstance;
      lpszText:=Tips[Sender.Tag];
      form.StatusText[0]:=Tips[Sender.Tag];
    end;
    SendMessage(HintWnd,TTM_ADDTOOL,0,DWORD(@TI));
    end;
    procedure Destr(Dummy:pointer;Sender:PControl);
    begin
    DestroyWindow(HintWnd);
    end;
    Begin
    form:=NewForm(Applet,'hint'+#39+'s '+#8470).SetSize(330,240).CenterOnParent;
    form.StatusText[0]:=pchar('');
    form.tag:=3;
    Button1:=NewButton(form,'Кнопка').SetSize(120,50);
    Button1.CenterOnParent;//размещаент объект по середине родительского.
    Button1.Tag:=0;
    Button1.OnMouseMove:=TonMouse(MakeMethod(nil,@mousemove));

    EditBox1:= NewEditBox(form,[]).SetPosition( 10, 34 ).SetSize( 60, 0 );
    EditBox1.Color:=clWhite;
    EditBox1.Text :=' 10.00 ';
    editbox1.Tag:=1;
    EditBox1.OnMouseMove:=TonMouse(MakeMethod(nil,@mousemove));
       
    EditBox2:= NewEditBox(form,[]).SetPosition( 10, 58 ).SetSize( 60, 0 );
    EditBox2.Color:=clWhite;
    EditBox2.Text :=' 10.01 ';
    editbox2.Tag:=2;
    EditBox2.OnMouseMove:=TonMouse(MakeMethod(nil,@mousemove));
    //область для работы
    Button1.OnClick:=TonEvent(MakeMethod(nil,@clickbutton1));

    HintWnd:=CreateWindowEx(0,TOOLTIPS_CLASS,nil,0,CW_USEDEFAULT,CW_USEDEFAULT,CW_US EDEFAULT,CW_USEDEFAULT,form.GetWindowHandle,0,HInstance,nil);

    form.OnMouseMove:=TonMouse(MakeMethod(nil,@mousemove));
    form.OnDestroy:=TonEvent(MakeMethod(nil,@Destr));
    Run(form);

    end.


    Вопрос: если будет добавлена вторая форма, то
    посказки всё равно останутся на первой форме.
    Можно сделать так чтобы подсказки появлялись над своими формами?
  • Barloggg (05.03.10 11:33) [1]
    ну, создай второй HintWnd.
    а то у тебя он создается вот так:
    > HintWnd:=CreateWindowEx(0,TOOLTIPS_CLASS,nil,0,CW_USEDEFAULT,
    > CW_USEDEFAULT,CW_US EDEFAULT,CW_USEDEFAULT,form.GetWindowHandle,
    > 0,HInstance,nil);

    ну вот тут и видно, что он прикреплен к конкретной форме.
    > form.GetWindowHandle
  • RusSun © (05.03.10 13:51) [2]
    2Barloggg Спасибо, просто думал может есть другой вариант.
 
Конференция "KOL" » Хинт'ы [Delphi, Windows]
Есть новые Нет новых   [134431   +10][b:0][p:0.002]