Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Часть строки Hint'a выделить жирным 
:(
    Опции темы
Delphist
Дата 6.4.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Есть Hint в котором хранится строка. Как часть слов выделить жирным, а часть осавить по умолчанию. Желательно это сделать без Application.OnShowHint :=


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Snowy
Дата 6.4.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Самому рисовать. Через OnShowHint.
Штатных средств нет.
PM MAIL   Вверх
Delphist
  Дата 6.4.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Snowy @ 6.4.2006, 15:25)
Самому рисовать. Через OnShowHint.
Штатных средств нет.

Примерчик не мог дать.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Snowy
Дата 6.4.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



PM MAIL   Вверх
Snowy
Дата 6.4.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Вот набросал небольшой пример.
Чтобы долго не возиться, реализовал только однострочные хинты.
Включить жирный - *. Отключить аналогично.
Hint = 'Этот *хинт*, местами *жирный*';
Код
unit SHint;

interface

uses
  Windows, Messages, SysUtils, Classes,
  Graphics, Controls, Forms;

type
  TSHint = class(THintWindow)
  protected
    procedure Paint; override;
  public
    constructor Create(AOwner: TComponent); override;
    function CalcHintRect(MaxWidth: Integer; const AHint: string; AData: Pointer): TRect; override;
  end;

implementation

constructor TSHint.Create(AOwner: TComponent);
begin
  inherited;
  Canvas.Font.Name := 'Courier New';
end;

function TSHint.CalcHintRect(MaxWidth: Integer; const AHint: string; AData: Pointer): TRect;
begin
  result := inherited CalcHintRect(MaxWidth,
            StringReplace(AHint, '*', '', [rfReplaceAll]), AData);
end;

procedure TSHint.Paint;
var
  s: string;
  i, x: integer;
  b: boolean;
begin
  s := Caption; b := false; x := 1;
  for i := 1 to length(s) do
  begin
    if s[i] = '*' then b := not b
    else begin
      if b then Canvas.Font.Style := [fsBold]
      else Canvas.Font.Style := [];
      Canvas.TextOut(x, 1, s[i]);
      x := x + Canvas.TextWidth(s[i]) + 1;
    end;
  end;
  SendMessage(Handle, WM_NCPAINT, 0, 0);
end;

initialization
  HintWindowClass := TSHint;
end.

Для использования, просто подключить модуль к своей программе.
PM MAIL   Вверх
Delphist
Дата 7.4.2006, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Snowy @ 6.4.2006, 23:07 Найти цитируемый пост)
Вот набросал небольшой пример.

А как сделать для многострочного hint'a
Добавлено @ 12:49
Цитата(Snowy @ 6.4.2006, 23:07 Найти цитируемый пост)
    x := x + Canvas.TextWidth(s[i]) + 1;

Не совсем красиво получается расположение букв.



--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Snowy
Дата 7.4.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Уж как набросал.
Переделай, как тебе больше нравится.
Мне лениво дорабатывать.
Я всего лишь показал куда копать.
Дальше сам...
PM MAIL   Вверх
Sunvas
Дата 9.4.2006, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



button1.Hint:='Первая строка'+#13+'вторая строка';


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.