Форум: "Базы";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];
ВнизСделать Hint на гриде Найти похожие ветки
← →
BorisUK (2002-12-04 08:54) [0]чтоб в него значение ячейки на которую указывает курсор...
Можно конечно при каждой перерисовке это делать и вставлять в hint Grid"а значение выделенной текущей ячейки, но вот проблема в том что у меня необходимость выделять построчно и поэтому RowSelected true
Да и hint тогда появляется везде где бы не указывал курсор а значение в нем ВЫДЕЛЕННОГО поля, что не есть корректно..
Может есть такие гриды или кто знает как такое грамотно замутить...
Буду благодарен за такую фичу :)
← →
stone (2002-12-04 09:22) [1]Указатель на ячейку можно получить следующим образом:
procedure TForm1.DBGrid1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
ScrPt, GrdPt: TPoint;
Cell: TGridCoord;
begin
ScrPt := Mouse.CursorPos;
GrdPt := (Sender as TDBGrid).ScreenToClient(ScrPt);
Cell := (Sender as TDBGrid).MouseCoord(GrdPt.X, GrdPt.Y);
// Cell.X - Column
// Cell.Y - Row
end;
вопрос лишь в том, как по этим указателям получить значение ячейки. Для TStringGrid это просто StringGrid1.Cells[x,y], а в TDBGrid дело осложняется тем, что присутствует еще курсор датасета
← →
AlexSV (2002-12-04 10:03) [2]В свое время посроил компонент как раз для этих целей.
Если интересует, то пиши на mail.
← →
Леван (2002-12-04 10:05) [3]nomera col,row i koordinati iacheiki grida luchshe poluchit tak:
type
tmygrid=class(tdbgrid);
........................................
x:=tmygrid(dbgrid1).Col;
y:=tmygrid(dbgrid1).row;
rr:=tmygrid(dbgrid1).CellRect(x,y)
.........
privedenie tipov tvorit chudesa!
← →
Sergey13 (2002-12-04 10:39) [4]2BorisUK © (04.12.02 08:54)
>Может есть такие гриды или кто знает как такое грамотно замутить...
Стандартный ответ - EhLib 8-)
http://www.farpost.com/personal/dmitryb/RUS/default.htm
← →
BorisUK (2002-12-04 11:03) [5]то Sergey13 ©
И как же этот TDbGridEh это делает...
Я найти не могу...
stone ©
координаты получили...
Как получить ссылку на поле, которое лежит по этим координатам?
<< Для TStringGrid это просто StringGrid1.Cells[x,y], а в TDBGrid дело
а вот именно в DBGrid?
← →
stone (2002-12-04 11:20) [6]
> Как получить ссылку на поле
ссылку на поле тоже не сложно
(Sender as TDBGrid).Columns.Items[Cell.X-1].Field
но это тоже не решает проблему. Значение поля в данном случае можно получить лишь из записи на которой установлен курсор датасета, при перемещении курсора мыши вверх или вниз по полю значение не изменится.
← →
Sergey13 (2002-12-04 11:22) [7]2BorisUK © (04.12.02 11:03)
У грида ставишь showhint=true и для нужных dbgrideh.columns ToolTips=true
← →
BorisUK (2002-12-04 12:21) [8]Спасибо Sergey13 ©
а то не мог догадаться что ToolTips=true это как раз Hint
В общм хинты там теперь как надо тусуются, но проблем в дрегом...
У меня на гриде стояла процедура разукрашивания его по разным условиям, так вот простой перенос этой процедуры в DBGridEh
показал что строчки
DBGrid.Canvas.Brush.Color:=c1;
DBGrid.Canvas.FillRect(Rect);
DBGrid.Canvas.Font.Color:=c;
DBGrid.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, s);
//где S значение поля...
Перерисовывают не по правильным координатом, а как попало
Пока не изменишь размер какогонить поля - тогда становится все нормально... на время
Как то он значит не так немного передает координаты...
Такое впечатление что, когда курсор внутри грида, он берет величины Rect, которые были до того как в колонки поместили данные....
Что делать понять не могу...
Сделал колонки изначально побольше...- не помогает
Какието не те координаты он берет!
← →
BorisUK (2002-12-04 12:52) [9]Спасибо AlexSV ©
Вот что душе нужно было :)
Работает на Ура.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c