Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2009, 09:42   #1
dardreams
Пользователь
 
Регистрация: 19.02.2009
Сообщений: 20
Восклицание BaloonTip

Добрый день Форумчане !
Помогите дописать и переделать код чтобы можно было выбрать позицию показа balloon и сторону хвоста :
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;

    //XPManifest1: TXPManifest;
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

type
  PEditBalloonTip = ^TEditBalloonTip;
  EDITBALLOONTIP = record
    cbStruct: DWORD;
    pszTitle: PWChar;
    pszText: PWChar;
    ttiIcon: Integer;
  end;
  TEditBalloonTip = EDITBALLOONTIP;

const
  EM_SHOWBALLOONTIP = $1503;
  EM_HIDEBALLOONTIP = $1504;
  TTI_NONE    = 0;
  TTI_INFO    = 1;
  TTI_WARNING = 2;
  TTI_ERROR   = 3;

var
  BaloonTip: TEditBalloonTip;
begin
  if not (Key in ['0'..'9']) then
  begin
    Key := #0;
    BaloonTip.cbStruct := SizeOf(TEditBalloonTip);
    BaloonTip.pszTitle := 'Caption';
    BaloonTip.pszText := 'MyText';
    BaloonTip.ttiIcon := TTI_ERROR;
    SendMessage(edit1.Handle, EM_SHOWBALLOONTIP, 0, Integer(@BaloonTip));
  end;
end;

end.

Последний раз редактировалось dardreams; 10.04.2009 в 10:43.
dardreams вне форума Ответить с цитированием
Старый 10.04.2009, 11:25   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Дописать и переделать - это вряд ли. А вот дать модуль, где реализован такой BaloonTip, можно.
Это не компонент и установка не требуется. Вызывается окно баллона процедурой ShowHintXP (находится в этом же модуле).
Возможности: автоматическое или "ручное" определение положения хвоста (слева, справа, сверху, снизу от окна); имеется кнопочка для закрытия окна, но при потере фокуса окно закрывается само; многострочный текст; отдельная строка, которая используется для ссылки на контекст справки (можно не применять).
В общем, поигравшись с этим модулем, можно достроить и свой.
Наименование файла модуля может быть и не совсем удачно, но, думаю, это не так важно.

Код модуля построен и проверен в среде D7.
Вложения
Тип файла: rar WinPointer.rar (2.7 Кб, 26 просмотров)
Скандербег вне форума Ответить с цитированием
Старый 10.04.2009, 12:06   #3
dardreams
Пользователь
 
Регистрация: 19.02.2009
Сообщений: 20
По умолчанию

Я незнаю как его использовать
ты не мог бы объяснить ?
или сделать пример ..
dardreams вне форума Ответить с цитированием
Старый 10.04.2009, 15:28   #4
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Подключаем модуль. В том месте кода, где предполагается вызывать баллон пишем вызов процедуры: например:
Код:
uses
  WinPointer;
...
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ShowHintXP(ClientToScreen(Point(X, Y)), 'Показывается баллон с хвостом', 0);
end;
В примере при щелчке мыши на свободном месте формы появляется тот самый баллон, конец хвоста, которого указывает на то место формы, где был щелчок.
Скандербег вне форума Ответить с цитированием
Старый 10.04.2009, 15:34   #5
dardreams
Пользователь
 
Регистрация: 19.02.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Скандербег Посмотреть сообщение
Подключаем модуль.
Вот с этим то и проблемы
dardreams вне форума Ответить с цитированием
Старый 10.04.2009, 15:45   #6
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Код:
implementation

{$R *.dfm}

uses WinPointer;
...
Это и есть "подключение модуля".
Скандербег вне форума Ответить с цитированием
Старый 15.04.2009, 10:02   #7
dardreams
Пользователь
 
Регистрация: 19.02.2009
Сообщений: 20
Восклицание

бессмысленно!!!

Последний раз редактировалось dardreams; 16.04.2009 в 07:58. Причина: бессмысленно
dardreams вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц