![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определить тип активного компонента
Zheksonz © (2015-05-06 16:18:00)Добрый день!
Положение активной записи в DBGrid регулируется только в рамках видимых полей DBGrid. Чтобы это исправить был использован "костыль":
procedure TBaseForm.AppMessage(var Msg: TMsg; var Handled: Boolean);
var I : SmallInt;
begin
if Msg.message= WM_MOUSEWHEEL then begin
Msg.message:=WM_KEYDOWN;
Msg.lParam:=0;
i:=HiWord(Msg.wParam);
if i>0 then Msg.wParam:=VK_UP else Msg.wParam:=VK_DOWN;
Handled:=false;
end;
end;
Но возникла другая проблема, что при использовании скролинга не на компонентах типа DBGrid пропадают контролы TButton и TCheckBox. Если в в процедуре AppMessage делать проверку на то, какой контрол активен, то можно предотвратить пропадание контролов. Подскажите плз. как это сделать.
Игорь Шевченко (2015-05-08 10:33:00) [1]Zheksonz (08.05.15 08:46) [10]
> это не форум помощи начинающим и не особо способным, а место
> самоутверждения видимо недооценённых в жизни людей ; )
http://segfault.kiev.ua/smart-questions-ru.html
sniknik (2015-05-08 10:08:00) [2]Handled:= true;
забыл, с ним будет полный аналог.
sniknik (2015-05-08 10:06:00) [3]хотя, ип/дауна там тоже нет... подзабыл.
тогда вот аналог твоего кода
...
private
procedure MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
procedure MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
TMyDBGrid = class(TDBGrid);
procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
TMyDBGrid(Sender).Perform(WM_KEYDOWN, VK_UP, 0);
end;
procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
TMyDBGrid(Sender).Perform(WM_KEYDOWN, VK_DOWN, 0);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
TMyDBGrid(DBGrid1).OnMouseWheelUp := MouseWheelUp;
TMyDBGrid(DBGrid1).OnMouseWheelDown:= MouseWheelDown;
end;
sniknik (2015-05-08 09:46:00) [4]> в котором есть OnMouseWheel!
в DBGrid-е он есть... просто не отнаследован, "спрятан" от желающих странного, странными же реализациями.
и он для твоей "задачи" нафиг не нужен, есть же маусап/маусдавн. или не можешь скачанный из инета код адаптировать под доступные события?
Zheksonz (2015-05-08 08:46:00) [5]
> P.S. И почему мне всегда вспоминается 3+2 в топиках автора?
Потому же, почему на форуме стало так безлюдно и тоскливо... ведь даже изредка "залетающие" сюда случайные гости быстро понимают, что это не форум помощи начинающим и не особо способным, а место самоутверждения видимо недооценённых в жизни людей ; )
П.С. Уже даже в ветке для начинающих новичкам дискомфортно, благодаря сформировавшейся здесь атмосфере. Благо не только такие как вы сюда заходят, есть ещё и те, кто действительно способен помочь, а не самоутвердиться.
Германн (2015-05-08 00:53:00) [6]
> Zheksonz (07.05.15 10:54) [6]
>
> Отличная идея, выкинуть TDBGrid и воспользоваться новым
> компонентом, в котором есть OnMouseWheel! Какой компонент
> посоветуете?
Так ты же потом скажешь "дайте код" как с другими компонентом работать в твоем случае.
<offtop>
P.S. И почему мне всегда вспоминается 3+2 в топиках автора?
:)
</offtop>
Ega23 (2015-05-07 11:17:00) [7]
> Какой компонент посоветуете?
TVirtualStringTree
кгшзх (2015-05-07 11:07:00) [8]а что, активконтрол или грид ин фокус уже не катит?
Zheksonz (2015-05-07 10:54:00) [9]Отличная идея, выкинуть TDBGrid и воспользоваться новым компонентом, в котором есть OnMouseWheel! Какой компонент посоветуете?
Денис Комаров (2015-05-07 08:14:00) [10]+100
Выкинуть TDBGrid
Германн (2015-05-07 01:15:00) [11]
> Скролинг DBGrid_е работает только в рамках видимых полей.
> ..
А про другие поля TDBGrid ничего не знал, не знает и ничего никогда знать не будет.
Так что может обратишь ещё раз внимание на
> Ega23 © (06.05.15 22:08) [1]
>
> Может не стоит городить костыль с ЧПУ, душевой кабиной и
> атомной пушкой, а сделать сразу правильно?
> Какую конкретно задачу надо решить?
Ega23 (2015-05-07 00:51:00) [12]
> Скролинг DBGrid_е работает только в рамках видимых полей
Сейчас вот ещё раз: скроллинг колесом? И в "рамках видимых полей" - это в смысле видимых строк?
Я с DBGrid уже лет 10 дела не имел, но:
1. А какой DataSet используется?
2. Разве у DBGrid нет событий OnMouseWheel?
Zheksonz (2015-05-07 00:35:00) [13]
> Ega23 © (06.05.15 22:08) [1]
Скролинг DBGrid_е работает только в рамках видимых полей... процедура которую я в первом сообщении выложил как бы решает эту проблему... Понятное дело, ключевое слово "как бы", т.к. она имитирует нажатие клавиш вниз и вверх, по нажатию на которые и без скролинга (а соответственно и без этой процедуры) пропадают вышеназванные контролы...
Раньше такую каку я не встречал((
Ega23 (2015-05-06 22:08:00) [14]Может не стоит городить костыль с ЧПУ, душевой кабиной и атомной пушкой, а сделать сразу правильно?
Какую конкретно задачу надо решить?