Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > balloon


Автор: icepro 26.10.2008, 12:22
люди подскажите как в balloon впихнуть картинку. если можно то желательно примерчик. спасибо!

Автор: tHE_EGOiSTE 26.10.2008, 16:21
Опиши ситуацию подробней.  smile Здесь телепатов нет. Что используешь, как используешь, код приведи. Тогда тебе ответят

Автор: icepro 26.10.2008, 19:59
пользую FWHint и FWTrayIcon, но если есть что лучше то жду предложений
и для balloon'а использую функцию FWTrayIcon1.ShowBalloonHint;
но там можно ичпользовать как параметр для отображения текстовую строку, а мне нужно туда поместить картинку.
вот.

Автор: morpheyushka 27.10.2008, 12:32
А картинка стандартная, виндовая, или своя?

Автор: Poseidon 27.10.2008, 12:59
Цитата(icepro @  26.10.2008,  12:22 Найти цитируемый пост)
подскажите как в balloon впихнуть картинку
Ндоео уже повторять: состандарым балуном в трее ничего сделать не получется того, чего он делать не позволяет. Ни картинку туда впихнуть, не шрифт поменять.

Автор: tHE_EGOiSTE 30.10.2008, 01:27
Вот пример графичекого хинта.
© взято с Швейцарского центра Delphi
Код

{*********************************************************
 With the following Code you can simply create custom hints.
 You just have to change the procedur "Paint".

©ME C помощью данного кода можно просто создавать пользовательские хинты.
От нас требуется лишь изменить по своему вкусу процедуру Paint ;)
 *********************************************************}

type
  TGraphicHintWindow = class(THintWindow)
    constructor Create(AOwner: TComponent); override;
  private
    FActivating: Boolean;
  public
    procedure ActivateHint(Rect: TRect; const AHint: string); override;
  protected
    procedure Paint; override;
  published
    property Caption;
  end;

  {...}

constructor TGraphicHintWindow.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  {
   Hier kцnnen beliebige Schrift Eigenschaften gesetzt
   werden.

   Here you can set custom Font Properties:
   }

  with Canvas.Font do
  begin
    Name := 'Arial';
    Style := Style + [fsBold];
    Color := clBlack;
  end;
end;

procedure TGraphicHintWindow.Paint;
var
  R: TRect;
  bmp: TBitmap;
begin
  R := ClientRect;
  Inc(R.Left, 2);
  Inc(R.Top, 2);

  {*******************************************************
   The folowing Code ist an example how to create a custom
   Hint Object. :}

  bmp := TBitmap.Create;
  bmp.LoadfromFile('D:\hint.bmp');

  with Canvas do
  begin
    Brush.Style := bsSolid;
    Brush.Color := clsilver;
    Pen.Color := clgray;
    Rectangle(0, 0, 18, R.Bottom + 1);
    Draw(2, (R.Bottom div 2) - (bmp.Height div 2), bmp);
  end;

  bmp.Free;
  //Beliebige HintFarbe
  //custom Hint Color
  Color := clWhite;

  Canvas.Brush.Style := bsClear;
  Canvas.TextOut(20, (R.Bottom div 2) - (Canvas.Textheight(Caption) div 2),
    Caption);
  {********************************************************}
end;

procedure TGraphicHintWindow.ActivateHint(Rect: TRect; const AHint: string);
begin
  FActivating := True;
  try
    Caption := AHint;
    //Hцhe des Hints setzen setzen
    //Set the "Height" Property of the Hint
    Inc(Rect.Bottom, 14);
    //Breite des Hints setzen
    //Set the "Width" Property of the Hint
    Rect.Right := Rect.Right + 20;
    UpdateBoundsRect(Rect);
    if Rect.Top + Height > Screen.DesktopHeight then
      Rect.Top := Screen.DesktopHeight - Height;
    if Rect.Left + Width > Screen.DesktopWidth then
      Rect.Left := Screen.DesktopWidth - Width;
    if Rect.Left < Screen.DesktopLeft then
      Rect.Left := Screen.DesktopLeft;
    if Rect.Bottom < Screen.DesktopTop then
      Rect.Bottom := Screen.DesktopTop;
    SetWindowPos(Handle, HWND_TOPMOST, Rect.Left, Rect.Top, Width, Height,
      SWP_SHOWWINDOW or SWP_NOACTIVATE);
    Invalidate;
  finally
    FActivating := False;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  HintWindowClass := TGraphicHintWindow;
  Application.ShowHint := False;
  Application.ShowHint := True;
end;

Автор: Rrader 7.11.2008, 14:52
Сделал примерчик, но есть кое-что из недоразумений...

TTM_SETTITLE - в MSDN сказано:
Цитата(MSDN)

When icon contains an HICON, a copy of the icon is created by the ToolTip window. The caller is responsible for freeing that copied icon.

Имхо, бред какой-то. Удалять скопированное изображение - каким образом, если мы о нём ничего не знаем? Проверял, утечки памяти нет, если не удалять. В сети нашел обсуждение этого сообщения - там тоже склоняются к тому, что это баг документации, и понимать следует все наоборот smile 

Автор: icepro 7.11.2008, 17:04
пасибо, гляну.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)