Форум: "Начинающим";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
ВнизОпределить тип активного компонента Найти похожие ветки
← →
Zheksonz (2015-05-06 16:18) [0]Добрый день!
Положение активной записи в 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 делать проверку на то, какой контрол активен, то можно предотвратить пропадание контролов. Подскажите плз. как это сделать.
← →
Ega23 © (2015-05-06 22:08) [1]Может не стоит городить костыль с ЧПУ, душевой кабиной и атомной пушкой, а сделать сразу правильно?
Какую конкретно задачу надо решить?
← →
Zheksonz (2015-05-07 00:35) [2]
> Ega23 © (06.05.15 22:08) [1]
Скролинг DBGrid_е работает только в рамках видимых полей... процедура которую я в первом сообщении выложил как бы решает эту проблему... Понятное дело, ключевое слово "как бы", т.к. она имитирует нажатие клавиш вниз и вверх, по нажатию на которые и без скролинга (а соответственно и без этой процедуры) пропадают вышеназванные контролы...
Раньше такую каку я не встречал((
← →
Ega23 © (2015-05-07 00:51) [3]
> Скролинг DBGrid_е работает только в рамках видимых полей
Сейчас вот ещё раз: скроллинг колесом? И в "рамках видимых полей" - это в смысле видимых строк?
Я с DBGrid уже лет 10 дела не имел, но:
1. А какой DataSet используется?
2. Разве у DBGrid нет событий OnMouseWheel?
← →
Германн © (2015-05-07 01:15) [4]
> Скролинг DBGrid_е работает только в рамках видимых полей.
> ..
А про другие поля TDBGrid ничего не знал, не знает и ничего никогда знать не будет.
Так что может обратишь ещё раз внимание на
> Ega23 © (06.05.15 22:08) [1]
>
> Может не стоит городить костыль с ЧПУ, душевой кабиной и
> атомной пушкой, а сделать сразу правильно?
> Какую конкретно задачу надо решить?
← →
Денис Комаров © (2015-05-07 08:14) [5]+100
Выкинуть TDBGrid
← →
Zheksonz (2015-05-07 10:54) [6]Отличная идея, выкинуть TDBGrid и воспользоваться новым компонентом, в котором есть OnMouseWheel! Какой компонент посоветуете?
← →
кгшзх © (2015-05-07 11:07) [7]а что, активконтрол или грид ин фокус уже не катит?
← →
Ega23 © (2015-05-07 11:17) [8]
> Какой компонент посоветуете?
TVirtualStringTree
← →
Германн © (2015-05-08 00:53) [9]
> Zheksonz (07.05.15 10:54) [6]
>
> Отличная идея, выкинуть TDBGrid и воспользоваться новым
> компонентом, в котором есть OnMouseWheel! Какой компонент
> посоветуете?
Так ты же потом скажешь "дайте код" как с другими компонентом работать в твоем случае.
<offtop>
P.S. И почему мне всегда вспоминается 3+2 в топиках автора?
:)
</offtop>
← →
Zheksonz (2015-05-08 08:46) [10]
> P.S. И почему мне всегда вспоминается 3+2 в топиках автора?
Потому же, почему на форуме стало так безлюдно и тоскливо... ведь даже изредка "залетающие" сюда случайные гости быстро понимают, что это не форум помощи начинающим и не особо способным, а место самоутверждения видимо недооценённых в жизни людей ; )
П.С. Уже даже в ветке для начинающих новичкам дискомфортно, благодаря сформировавшейся здесь атмосфере. Благо не только такие как вы сюда заходят, есть ещё и те, кто действительно способен помочь, а не самоутвердиться.
← →
sniknik © (2015-05-08 09:46) [11]> в котором есть OnMouseWheel!
в DBGrid-е он есть... просто не отнаследован, "спрятан" от желающих странного, странными же реализациями.
и он для твоей "задачи" нафиг не нужен, есть же маусап/маусдавн. или не можешь скачанный из инета код адаптировать под доступные события?
← →
sniknik © (2015-05-08 10:06) [12]хотя, ип/дауна там тоже нет... подзабыл.
тогда вот аналог твоего кода
...
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 10:08) [13]Handled:= true;
забыл, с ним будет полный аналог.
← →
Игорь Шевченко © (2015-05-08 10:33) [14]Zheksonz (08.05.15 08:46) [10]
> это не форум помощи начинающим и не особо способным, а место
> самоутверждения видимо недооценённых в жизни людей ; )
http://segfault.kiev.ua/smart-questions-ru.html
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.052 c