Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
2-1142762050
Gentos
2006-03-19 12:54
2006.04.02
Проблемы с Html.


9-1127285948
Kerk
2005-09-21 10:59
2006.04.02
Игра "Точки"


2-1142955037
имя
2006-03-21 18:30
2006.04.02
ListBox


2-1142618474
Fenix
2006-03-17 21:01
2006.04.02
Траблы с типами...


2-1142925028
Handle
2006-03-21 10:10
2006.04.02
TListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский