Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение Мульти-выделения в DBGrid, на правую кнопку мыши 
:(
    Опции темы
p0s0l
Дата 12.9.2003, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



У меня твоя прога фурычит как надо - щас тебе откомпиленный экзешник твоей проги кину...
(D7, XP)


Это сообщение отредактировал(а) p0s0l - 12.9.2003, 15:23


--------------------
С уважением, г-н Посол.
PM   Вверх
x77
Дата 12.9.2003, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



и действительно, фурычит. видимо, Borland меняла функционал со времён 5й версии.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
p0s0l
Дата 12.9.2003, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Да уж... Странно - не должно такое меняться... Но мы тут с тобой зафлеймили всю тему, закругяюсь...



--------------------
С уважением, г-н Посол.
PM   Вверх
Cashey
Дата 12.9.2003, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



Цитата

CODE 
procedure TfrmMain.dbg1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbRight) or (ssCtrl in Shift) then
dbg1.SelectedRows.CurrentRowSelected := not dbg1.SelectedRows.CurrentRowSelected;
end;

Спасибо, p0s0l, но за временя с момента опубликования вопроса до твоего ответа я порылся и тоже кое-что нашел. Нужно изменить в модуле DBGrid.pas следующию процедуру
Код

procedure TCustomDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState;
 X, Y: Integer);
var
 Cell: TGridCoord;
 OldCol,OldRow: Integer;
 MasterCol: TColumn;
begin
 if not AcquireFocus then Exit;
 if (ssDouble in Shift) and (Button = mbRight{mbLeft}) then
 begin
   DblClick;
   Exit;
 end;

 if Sizing(X, Y) then
 begin
   FDatalink.UpdateData;
   inherited MouseDown(Button, Shift, X, Y);
   Exit;
 end;

 Cell := MouseCoord(X, Y);
 if (Cell.X < 0) and (Cell.Y < 0) then
 begin
   inherited MouseDown(Button, Shift, X, Y);
   Exit;
 end;

 if (DragKind = dkDock) and (Cell.X < FIndicatorOffset) and
   (Cell.Y < FTitleOffset) and (not (csDesigning in ComponentState)) then
 begin
   BeginDrag(false);
   Exit;
 end;

 if PtInExpandButton(X,Y, MasterCol) then
 begin
   MasterCol.Expanded := not MasterCol.Expanded;
   ReleaseCapture;
   UpdateDesigner;
   Exit;
 end;

 if ((csDesigning in ComponentState) or (dgColumnResize in Options)) and
   (Cell.Y < FTitleOffset) then
 begin
   FDataLink.UpdateData;
   inherited MouseDown(Button, Shift, X, Y);
   Exit;
 end;

 if FDatalink.Active then
   with Cell do
   begin
     BeginUpdate;   { eliminates highlight flicker when selection moves }
     try
       FDatalink.UpdateData; // validate before moving
       HideEditor;
       OldCol := Col;
       OldRow := Row;
       if (Y >= FTitleOffset) and (Y - Row <> 0) then
         FDatalink.MoveBy(Y - Row);
       if X >= FIndicatorOffset then
         MoveCol(X, 0);
{здесь}       if {(Button = mbLeft) and} (dgMultiSelect in Options) and FDatalink.Active then
         with FBookmarks do
         begin
           FSelecting := False;
{и здесь}           if (Button = mbRight) {or ssCtrl in Shift then }   then
             CurrentRowSelected := not CurrentRowSelected

           else
           begin
             Clear;
             CurrentRowSelected := True;
           end;
         end;
       if (Button = mbLeft) and
         (((X = OldCol) and (Y = OldRow)) or (dgAlwaysShowEditor in Options)) then
         ShowEditor         { put grid in edit mode }
       else
         InvalidateEditor;  { draw editor, if needed }
     finally
       EndUpdate;
     end;
   end;
end;

В принципе тоже самое, только теперь не надо использовать лишний обработчик событий. Всем спасибо за помощь.

[B]Vit[B/], может этот топик тоже в FAQ поместить, неужели больше это не кому не понадобится?

Это сообщение отредактировал(а) Cashey - 12.9.2003, 22:27


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.