|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Выплывающая подсказка
Доброго дня!!!
помогите,пожалуйста, подскажите каким образом или с помощью какого компонента в delphi можно создать выплывающую информации, кот появлялась бы при наведении мыши на одну из точек компонента char и ещё хотелось бы узнать, как мне создать цветовой спектр на форме в виде вертикальной полосы. в принцыпе, я сделала это картинкой, но, возможно есть другой способ!!!Вот Заранее спасибо, даже если вы просто прочитаете это сообщение!!! p.s только мне нужно чтоб выплывали значения координат точки, на которую я навожу мышь!! должен же быть компонент позволяющий сделать это! |
#2
|
|||
|
|||
Как я понял тебе необходимо вывести 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; Пример использования: В твоем случае вместо 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
|
|||
|
|||
Сори первый вопрос не так понял=)
Кинь на 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
|
||||
|
||||
На форуме есть компонент - TVistaHint в разделе <<["Начинающим"]>>
Кнопка "+" - весы в правом верхнем углу сообщения... |