Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.01.15;
Скачать: CL | DM;

Вниз

Определить тип активного компонента   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.02 c
15-1455628706
sniknik
2016-02-16 16:18
2017.01.15
Достали уже менять интерфейс... Мозила


15-1432230427
engine
2015-05-21 20:47
2017.01.15
Не работает delphimaster.net


3-1311085051
yurikon
2011-07-19 18:17
2017.01.15
Сколько памяти занимает SQLEXPRESS


2-1420537491
Enzain
2015-01-06 12:44
2017.01.15
От какого пользователя запущено приложение.


2-1424681725
Эрнест
2015-02-23 11:55
2017.01.15
URLEncodeReservedChars