Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.10.2008, 12:06
Morozenko_viola Morozenko_viola вне форума
Прохожий
 
Регистрация: 02.10.2008
Сообщения: 6
Репутация: 10
По умолчанию Выплывающая подсказка

Доброго дня!!!
помогите,пожалуйста, подскажите каким образом или с помощью какого компонента в delphi можно создать выплывающую информации, кот появлялась бы при наведении мыши на одну из точек компонента char
и ещё хотелось бы узнать, как мне создать цветовой спектр на форме в виде вертикальной полосы. в принцыпе, я сделала это картинкой, но, возможно есть другой способ!!!Вот
Заранее спасибо, даже если вы просто прочитаете это сообщение!!!
p.s только мне нужно чтоб выплывали значения координат точки, на которую я навожу мышь!! должен же быть компонент позволяющий сделать это!
Ответить с цитированием
  #2  
Старый 30.10.2008, 15:46
SergeNik SergeNik вне форума
Прохожий
 
Регистрация: 21.10.2008
Сообщения: 7
Репутация: 10
По умолчанию

Как я понял тебе необходимо вывести Hint в некоторой области компонента TChar? - тогда прочитай один из простых спобов добиться этого описанный чуть ниже.
Что бы не кодить - можешь на чар кинуть сверху компоненты(типа TLabel, TImage и т.д) в ту область(области) где тебе хинт нужен. Устанавливаешь им Хинты либо програмно (если хинт меняется в зависимости от условий) или в инспекторе (если хинт - константа).
Про свойство Transparent не забудь!=) Если Char меняется в размерах (при растяжение окна формы и т.д.) не забудь выставить Свойство - Align!
Для создания цветового спектра поможет - это:
Код:
procedure DrawGradient(ACanvas: TCanvas; Rect: TRect;
   Horicontal: Boolean; Colors: array of TColor);
 type
   RGBArray = array[0..2] of Byte;
 var
   x, y, z, stelle, mx, bis, faColorsh, mass: Integer;
   Faktor: double;
   A: RGBArray;
   B: array of RGBArray;
   merkw: integer;
   merks: TPenStyle;
   merkp: TColor;
 begin
   mx := High(Colors);
   if mx > 0 then
   begin
     if Horicontal then
       mass := Rect.Right - Rect.Left
     else
       mass := Rect.Bottom - Rect.Top;
     SetLength(b, mx + 1);
     for x := 0 to mx do
     begin
       Colors[x] := ColorToRGB(Colors[x]);
       b[x][0] := GetRValue(Colors[x]);
       b[x][1] := GetGValue(Colors[x]);
       b[x][2] := GetBValue(Colors[x]);
     end;
     merkw := ACanvas.Pen.Width;
     merks := ACanvas.Pen.Style;
     merkp := ACanvas.Pen.Color;
     ACanvas.Pen.Width := 1;
     ACanvas.Pen.Style := psSolid;
     faColorsh := Round(mass / mx);
     for y := 0 to mx - 1 do
     begin
       if y = mx - 1 then
         bis := mass - y * faColorsh - 1
       else
         bis := faColorsh;
       for x := 0 to bis do
       begin
         Stelle := x + y * faColorsh;
         faktor := x / bis;
         for z := 0 to 3 do
           a[z] := Trunc(b[y][z] + ((b[y + 1][z] - b[y][z]) * Faktor));
         ACanvas.Pen.Color := RGB(a[0], a[1], a[2]);
         if Horicontal then
         begin
           ACanvas.MoveTo(Rect.Left + Stelle, Rect.Top);
           ACanvas.LineTo(Rect.Left + Stelle, Rect.Bottom);
         end
         else
         begin
           ACanvas.MoveTo(Rect.Left, Rect.Top + Stelle);
           ACanvas.LineTo(Rect.Right, Rect.Top + Stelle);
         end;
       end;
     end;
     b := nil;
     ACanvas.Pen.Width := merkw;
     ACanvas.Pen.Style := merks;
     ACanvas.Pen.Color := merkp;
   end
   else
     // Please specify at least two colors 
    raise EMathError.Create('Es mussen mindestens zwei Farben angegeben werden.');
 end;
Admin: Пользуемся тегами, иначе последуют санкции!

Пример использования:
В твоем случае вместо Image1 - Form1
DrawGradient(Image1.Canvas, Rect(0, 0, 100, 200), False, [clRed, $00FFA9B4]);

DrawGradient(Canvas, GetClientRect, True, [121351, clBtnFace, clBlack, clWhite]);

Последний раз редактировалось Admin, 30.10.2008 в 18:18.
Ответить с цитированием
  #3  
Старый 30.10.2008, 16:09
SergeNik SergeNik вне форума
Прохожий
 
Регистрация: 21.10.2008
Сообщения: 7
Репутация: 10
По умолчанию

Сори первый вопрос не так понял=)
Кинь на TChart компонент TLabel.
Установи свойства Transparent = True.
В событие TChart.OnMouseMove напиши:
YouLabelName.Show;
YouLabelName.Caption := 'X:'+IntToStr(X)+',Y:'+IntTostr(Y);
Если TChart лежит на Форме не полностью то добавь обработчик
OnMouseMove - Близлежащим компоонентам на которые падает курсор
мышки напрмер:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
YouLabelName.Hide;
end;
Ответить с цитированием
  #4  
Старый 30.10.2008, 17:52
Аватар для mak-karpov
mak-karpov mak-karpov вне форума
Активный
 
Регистрация: 18.09.2008
Сообщения: 235
Версия Delphi: 2010 и 7
Репутация: 1242
По умолчанию

На форуме есть компонент - TVistaHint в разделе <<["Начинающим"]>>
__________________
Кнопка "+" - весы в правом верхнем углу сообщения...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:23.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter