Форум: "Базы";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];
ВнизПолучить значение ячейки в DBGrid Найти похожие ветки
← →
nstur (2006-01-17 13:46) [0]Подскажите, как при наведении на ячейку указателем мыши получить ее значение.
Мне нужен Hint для каждой ячейки.
← →
msguns © (2006-01-17 14:02) [1]DBGrid1.SelectedField.AsString
← →
msguns © (2006-01-17 14:06) [2]Пардон, это только при нажатии на мышь. Если для хинта, то надо вычислять координаты мыши относительно грида, затем колонку, над которой мышь и т.д. в событии грида OnMouseMove.. В общем, муторно это.
А нафига ?
← →
Lexer © (2006-01-17 14:15) [3]Поюзай
Grid.MouseCoord(X, Y)
← →
nstur (2006-01-17 14:17) [4]Содержимое очень большое. А когда строки начинаются одинаково, это просто сложно для юзера. Зачастую юзер я сам.
← →
Sergey13 © (2006-01-17 14:20) [5]2nstur (17.01.06 13:46)
Поищи библиотеку EhLib в сети. Бесплатная последняя версия - 3.6. Там (в ее гриде) это уже реализовано. Хочешь юзай, хочешь смотри реализацию.
← →
nstur (2006-01-17 14:21) [6]OnMouseMove возвращает X, Y, а мне нужна ячейка или запись.
← →
msguns © (2006-01-17 15:00) [7]Для отображения "длинных" текстов есть такие решения:
1. Панель на этой же форме с мемо, отображающим текущее "длинное" поле датасета (если полей несколько, то для каждого - свое мемо)
2. Форма fsStayOnTop с тем же TMemo, отображающим поле датасета. Удобство по сравнению с 1) в том, что юзер может передвинуть его в любое удобное место экрана или изменить размер до нужного.
3. Рисовать содержимое поля в ячейке, варьируя шрифтом и высотой строки грида в событии OnDrawColumnCell
4. Показывать текст в статус-баре
5. Показывать текст в спец.отведенном контроле по кнопке
← →
Val © (2006-01-17 15:42) [8]>nstur (17.01.06 13:46)
обратите внимание на [7] msguns © (17.01.06 15:00), поскольку: хинт имеет свойство отображаться лишь опр. промежуток времени + удобство отображения + отсутствие сторонних компонентов(при надобности)
← →
nstur (2006-01-17 15:51) [9]Все понятно. У меня примерно так же. Но как получить ячейку при наведении на нее мышкой?
← →
ANB © (2006-01-17 17:24) [10]
> nstur (17.01.06 15:51) [9]
По координатам.
← →
DimDim © (2006-01-17 19:22) [11]Еще раз: библиотека EhLib. Кроме хинта развернутого содержимого ячейки там масса других прелестей. Например, многострочная шапка, сумма по полю, работающий скролинг и т.д.
← →
tech © (2006-01-17 22:07) [12]
procedure TForm1.GridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
Coord: TGridCoord;
begin
Coord := dg.MouseCoord(X,Y);
if dg.Columns[Coord.X].Field = нужное поле then
...
end;
← →
allex299 © (2006-01-17 22:43) [13]Подскажите как получить значение ячейки в переменную из строки DBGrid по клику мыши или по Enter если строка активна.
← →
nstur (2006-01-18 07:47) [14]allex299 - Один из способов:
OnDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
with (Sender as TDBGrid).Canvas do begin
if (gdFocused in State) then ...
Column <- твоя ячейка
← →
ЮЮ © (2006-01-18 08:22) [15]
> allex299 © (17.01.06 22:43) [13]
<переменная> := TCustomDBGrid.SelectedField.Value.
P/S. Правда это только из выделенной ячейки.
А > из строки DBGrid , да в одну переменную - оно это надо?
← →
menart © (2006-01-18 09:21) [16]Как можно получить какие данные отображаются в DBGRid, те номера полей с такого по такой
← →
nstur (2006-02-01 11:50) [17]Существует ли возможность получить значение не сфокусированной ячейки?
Т.е. на которую наведен указатель мышки.
← →
msguns © (2006-02-01 11:56) [18]Да
← →
fox © (2006-02-02 12:27) [19]Как пример :)
type
TCrackDBGrid = class(TCustomDBGrid)
end;
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
grCoord: TGridCoord;
aGrid: TCrackDBGrid;
oldActiveRecord: integer;
delta: integer;
begin
aGrid := TCrackDBGrid(Sender);
grCoord := aGrid.MouseCoord(X, Y);
aGrid.DataSource.DataSet.DisableControls;
oldActiveRecord := aGrid.DataLink.ActiveRecord;
delta := grCoord.Y - aGrid.DataLink.ActiveRecord - 1;
aGrid.DataLink.DataSet.MoveBy(delta);
if grCoord.X > 0 then
caption := format( "строка: %d, столбец: %d, delta: %d, текст: %s",
[grCoord.Y, grCoord.X, delta, aGrid.Columns[grCoord.X-1].Field.DisplayText]);
aGrid.DataLink.ActiveRecord := oldActiveRecord;
aGrid.DataSource.DataSet.EnableControls;
end;
← →
nstur (2006-02-08 10:53) [20]Проверил. Отлично работает.
Это ХИТ.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 4.455 c