Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизDBGrid & Hint Найти похожие ветки
← →
virusfil (2003-10-15 03:44) [0]Народ, подскажите, я поставил DBGrid, решил отобразить на каждой ячейке Hint. В итоге подсказка всплывает на первый элемент базы. При уходе мышки из DBGrid и входе снова - опять также. При клике на следующую запись подсказка всплывает на эту запись. Как сделать так, чтоб при движении мыши по записям таблицы всплывали подсказки для каждой ячейки, а активация ячейки бы не происходила?
← →
gek (2003-10-15 07:26) [1]MouseMove + MouseToCell + Cells + Hint
← →
BorisUK (2003-10-15 07:54) [2]EhLib -> DbGridEh
и еще много много следующих вопросов отпадет. Там все уже сделано.
Хотя, если желание именно самому реализовать... тогда
> gek © (15.10.03 07:26) [1]
← →
virusfil (2003-10-16 03:24) [3]gek и BorisUK, я в дельфи только начал работать и ничего не понял, напишите, пожалуйста, поподробнее.
← →
Andrianorus (2003-10-16 08:55) [4]Берешь компоненты EhLIB
http://www.farpost.com/personal/dmitryb/RUS/default.htm
Надеюсь они ещё не платные для нас. Там сейчас 3.2, 3.0 была точно бесплатной. Но прекрасно работает и 2.5.
Используешь TDBGridEh вместо TDBGrid.
Решение твоей проблемы: ToolTips=true, ShowHint=true - не вмещающиеся значения отображаются как hint.
← →
NAlexey (2003-10-16 10:28) [5]Непонятны ваши советы, да и вообще советы такого рода, брать компоненты на каждый чих. Автор же пишет, что он начинающий, ему учиться надо, и в примерах разбираться. Ну возмет он сегодня этот компонент, завяжет на него свой проект. Завтра ему понадобится чтобы его грид делал вещи которые этот грид не умеет, и что? Всего 10 строк кода, и никаких компонент.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
FHintWindow: THintWindow;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
TXGrid = class(TCustomDBGrid);
procedure TForm1.CMMouseLeave(var Message: TMessage);
begin
if Message.LParam = Integer(DBGrid1) then
FHintWindow.ReleaseHandle;
inherited;
end;
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Grid: TDBGrid;
Cell: TGridCoord;
CellRect: TRect;
HintCol: TColumn;
OldActive: Integer;
Value: string;
Pt: TPoint;
begin
Grid := Sender as TDBGrid;
Cell := Grid.MouseCoord(X, Y);
if (Cell.X < 1) or (Cell.Y < 0) then Exit;
try
HintCol := Grid.Columns[Cell.X - 1];
Value := "";
OldActive := TXGrid(Grid).DataLink.ActiveRecord;
try
TXGrid(Grid).DataLink.ActiveRecord := Cell.Y - 1;
Value := HintCol.Field.DisplayText;
CellRect := TXGrid(Grid).CellRect(Cell.X, Cell.Y);
GetCursorPos(Pt);
CellRect := FHintWindow.CalcHintRect(Grid.Width, Value, nil);
OffsetRect(CellRect, Pt.X, Pt.Y);
FHintWindow.ActivateHint(CellRect, Value) ;
finally
TXGrid(Grid).DataLink.ActiveRecord := OldActive;
end;
except
FHintWindow.ReleaseHandle;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FHintWindow := THintWindow.Create(Self);
FHintWindow.Color := clInfoBk;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FHintWindow.Free;
end;
← →
Danilka (2003-10-16 10:31) [6][5] NAlexey © (16.10.03 10:28)
не десять, а восемдесят две - меня не обманешь :))
← →
NAlexey (2003-10-16 11:04) [7]>не десять, а восемдесят две
Эта оптический обман.
← →
jack128 (2003-10-16 11:06) [8]
> Message.LParam = Integer(DBGrid1)
мда...Мне бы эту строчку пару недель назад..
← →
virusfil (2003-10-16 16:20) [9]Спасибо, братцы!!!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.054 c