Перейти к содержанию
  • Регистрация
  • 0
Alexander

StringrGrid переехал из Seatle в Berlin в пути пропал багаж (DragDrop, DblClick)

Вопрос

Попытался открыть проект в Berlin'е, среда выдала ошибку что не находит обработчиков DragOver, DragDrop, DblClick, MouseDown...

Вопрос: где искать? 

Если их нет: что делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0
9 часов назад, Alexander сказал:

Попытался открыть проект в Berlin'е, среда выдала ошибку что не находит обработчиков DragOver, DragDrop, DblClick, MouseDown...

Вопрос: где искать? 

Если их нет: что делать?

Вы прямо с языка у меня сняли! Тоже хотел написать про DblClick.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Конечно это... не очень хорошее отношение к продукту, блин.Пока лучше не Siettlle оставаться.

Можно попробовать такой финт ушами. Перед формой где используется грид прописать класс

  TStringGrid = class(FMX.Grid.TStringGrid)..., и в нем прописать обработчики, а вформе назначить их вручную
Т.е. получим нечто следующее:

uses
  System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Layouts, FMX.Grid;

type
  TStringGrid = class(FMX.Grid.TStringGrid)
  published
    property OnDblClick;
    //...
  end;

  TForm5 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1DblClick(Sender: TObject);
  private
    procedure SubscribeControlsEvents;
  public
  end;

var
  Form5: TForm5;

implementation

{$R *.fmx}

procedure TForm5.FormCreate(Sender: TObject);
begin
  SubscribeControlsEvents;
end;

procedure TForm5.StringGrid1DblClick(Sender: TObject);
begin
//
end;

procedure TForm5.SubscribeControlsEvents;
begin
  StringGrid1.OnDblClick := StringGrid1DblClick;
end;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

это и так будет работать, без всяких класс-хаков

только зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А Вы уверены что у базового класса OnDblClick, например, не в protected?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

мы точно в одной и той же теме пишем?

изначальный вопрос. "был проект, я его открыл в новой версии IDE. Обработчики не срабатывают"

При чем тут предки и т.п.?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В Berlin-e в объявлении published у класса Grid пропала часть обработчиков. Поэтому и возникла указанная ошибка - при открытии формы не находятся обработчики. Явный косяк разработчиков, ну мы не об этом.

У меня нет исходников, поэтому я не могу точно сказать, что там за рефакторинг был проведен. В VCL, например, такие обработчики у базового класса в секции protected объявлены.

 Т.е. если в базовом классе они в секции public, то в моем примере класс TStringGrid = class(FMX.Grid.TStringGrid) не нужен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

открыл, кинул грид. 5 секунд

вписал grid1.onDblClick и контрол+клик по нему. они public. еще 5 сек.

написал

grid1.onDblClick := MyOldDblClick;

итого 15 сек на решение проблемы

а куда делись исходники? триал?

Изменено пользователем krapotkin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Да. Триал.  А переходить на новую версию видимо можно только после выхода update (особенно, если существующий проект уже достаточно большой).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

у меня наоборот, снялись некоторые баги. часть пришлось рефакторить, но стало лучше

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Коллеги, часть событий, действительно переехала из Published в Public, по причине полной, или частичной неработоспособности. Это как бы толстый намек, что ими пользоваться не рекомендуется. Потому, что унаследованные события используются самим гридом по своему усмотрению. Это была моя инициатива, видимо мне и придется восстанавливать свою карму.

В этой связи у меня вопрос, что вы пытаетесь делать на OnClick, OnDblClick и.т. В событиях OnSelectCell и OnSelChanged это ни как нельзя делать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

ну так, с ходу - DblClick селектом не заменить

для десктопа дабл - все-таки предпочтительный способ совершения действий

но намек понят и запомнен

я правда понял намек еще в XE3 по-своему - нигде больше не использую гриды....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
22 минуты назад, krapotkin сказал:

ну так, с ходу - DblClick селектом не заменить

для десктопа дабл - все-таки предпочтительный способ совершения действий

но намек понят и запомнен

я правда понял намек еще в XE3 по-своему - нигде больше не использую гриды....

Умолчательное действие это по первому клику выбираем ячейку, по второму входим в режим редактирования. Кроме того что Click, что DblClick выполняются перед выбором ячейки и не понятно в каком месте происходило нажатие и не понятно по отношению к какой ячейке надо выполнять действия.

Вообще же Grid переписан чуть менее, чем полностью. Теперь он сделан по принципу Presentation/Model. Т.е. можно будет делать нативные гриды, но пока сделан только вариант для iOS.
Вот небольшой Demo-проект, который скорее всего войдет в Update1.

GridDemo.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Вот тут бы определиться - два клика через "большой" интервал очень отличаются от Double Click.

В Windows это очевидно прямо в Explorer

В классическом гриде ничего подобного не происходит, и при DblClick мы точно знаем, что Col, Row установлены уже на кликнутую ячейку. От нативности это имхо не зависит 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
37 минут назад, RoschinSpb сказал:

Коллеги, часть событий, действительно переехала из Published в Public, по причине полной, или частичной неработоспособности. Это как бы толстый намек, что ими пользоваться не рекомендуется. Потому, что унаследованные события используются самим гридом по своему усмотрению. Это была моя инициатива, видимо мне и придется восстанавливать свою карму.

В этой связи у меня вопрос, что вы пытаетесь делать на OnClick, OnDblClick и.т. В событиях OnSelectCell и OnSelChanged это ни как нельзя делать?

 

Очень широко использовал и использую grid, так как в основном программирую для десктопов windows и mac. OnDblClick нужен! Двойной клик использую по разному.  Иногда для помещения в рядом стоящий edit какой либо информации. Иногда для открытия формы для редактирования этой записи (Бывает, что строка в grid'е составлена из разных таблиц, поэтому напрямую не отредактируешь ее).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
14 минуты назад, RoschinSpb сказал:

Вообще же Grid переписан чуть менее, чем полностью. Теперь он сделан по принципу Presentation/Model. Т.е. можно будет делать нативные гриды, но пока сделан только вариант для iOS.
Вот небольшой Demo-проект, который скорее всего войдет в Update1.

GridDemo.zip

Пример может и хороший, но оценить не получается, нет  fmx.grid.ios на который ссылается uses

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Понятно. Область видимости в Update1 уже не поменять. В следующей версии возможно добавлю пару событий OnCellClick OnCellDblClick с параметрами, чтобы можно было определить ячейку куда ткнули.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 минуту назад, Vitaldj сказал:

Пример может и хороший, но оценить не получается, нет  fmx.grid.ios на который ссылается uses

Что, вообще среди исходников нету? По идее должен входить в поставку, наверно надо путь указать правильный. Можно и просто удалить этот модуль из Uses и проекта. Тогда будет работать только стилевой вариант.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 минуты назад, RoschinSpb сказал:

В следующей версии возможно добавлю пару событий OnCellClick OnCellDblClick с параметрами

Это было бы великолепно!

А нельзя прикрутить свойство, активировав бы которое, при нехватке места в ячейке, показывалось бы Hint'ом содержимое ячейки? Вот так, например:

Screenshot - 10_06 002.png

К сожалению на скрине не видно мышки, она на слове "капли"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
9 минут назад, RoschinSpb сказал:

Что, вообще среди исходников нету? По идее должен входить в поставку, наверно надо путь указать правильный. Можно и просто удалить этот модуль из Uses и проекта. Тогда будет работать только стилевой вариант.

 

Нет, есть, нашел. У вас в примере просто для этого модуля написан прямой путь: c:\fmx/grid/ios.pas

Исправил, но программа вываливается в Access violation ((( хоть на винде, хоть на ios

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

а на телефоне грид вообще не вариант

в вот уже на планшете - можно и посмотреть

и действительно desktop программы от переезда удерживает на 95% отсутствие внятного грида

может, давайте отдельную тему заведем/перенесем/отредактируем отдельно по пожеланиям в гриды, раз уж разработчик среди нас

может, и ListView тоже у нас, нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
20 минут назад, RoschinSpb сказал:

Я слабо представляю как это будет выглядеть на телефоне.

Я только про десктопы говорил

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
12 минуты назад, krapotkin сказал:

а на телефоне грид вообще не вариант

в вот уже на планшете - можно и посмотреть

и действительно desktop программы от переезда удерживает на 95% отсутствие внятного грида

может, давайте отдельную тему заведем/перенесем/отредактируем отдельно по пожеланиям в гриды, раз уж разработчик среди нас

может, и ListView тоже у нас, нет?

ListView это не моя тема.
Про грид, можно и в отдельную тему. Но давайте сразу исходить из того, что все должно работать в числе прочего и на мобилных платформах. Варианты расширения только для дэсктопа можно сделать и своими руками.
Пожелания по новым фичам и исправлениям если они оформляются во что-то конкретное пожалуйста дублируйте в QC.
По OnClick OnDblClick несколько запросов в QC уже было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От traylers
      На форме лежит VertScrollBox в нем лежит два StringGrid, один под другим. У StringGrid'ов высота на весь контент, т.е. собственных прокруток у них нет. Но на андроиде если ткнуть в StringGrid и попробовать прокрутить, то прокрутка не работает, только если взяться за любой другой элемент. Как это можно исправить?
    • От geotub
      Уважаемые знатоки! Здравствуйте!
      с FMX дружу плохо! Задача тривиальная прошу помощи!
      есть соединение с MYSQL через Bind Visual привязан к StringGrid, данные отображаются идеально все хорошо!
      Задача слеждующая:
      - есть колонка "status" со значениями от 0 до 10 
      - есть imageList с картинками в таком же диапазоне 
      Необходимо в StringGgrid вместо значений выводить картинку из imageList равную значению (значение 3 = номер imageList = 3 и тд) 
      Пробовал все Варианты ничего не выходит! Пожалуйста помогите!
    • От maxma777
      Подскажите как сделать StringGrid в виде шахматной доски. И чтобы цифры были видны.
      procedure TForm1.StringGrid1DrawColumnCell(Sender: TObject;
        const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
        const Row: Integer; const Value: TValue; const State: TGridDrawStates);
       begin
            if Row mod 2 = 0 then
            if Column.Index= 3 then
            begin
               CoLumn.Padding.Rect:=rectF(0,0,0,0);
              Canvas.Fill.Color:=TAlphaColorRec.Black;
              Canvas.FillRect(Bounds,0,0,[],1);
            end;
          end;
      Искал в инете но что не один вариант не подошел.
      Вроде должно быть легко, ну что то у меня проблемы с Fire Monkey. 
      Приложение делаю на Delphi 10.1 Berlin

    • От web_warp
      В DrawColumnCell провожу зарисовку некоторых строк, необходима подсветка цветом. И тут возникла неожиданная проблема на ровном месте: ячейка, где текстом записано время, почему-то меняет местами время и дату, хотя передаётся в функцию FillText как надо.
      TabbedForm->StringGrid1->Canvas->Fill->Color = background_color; TabbedForm->StringGrid1->Canvas->FillRect(Bounds, 0, 0, AllCorners, 100); TabbedForm->StringGrid1->Canvas->Fill->Color = font_color; TabbedForm->StringGrid1->Canvas->Font->Style << fsBold; TabbedForm->StringGrid1->Canvas->FillText(Bounds,TabbedForm->StringGrid1->Cells[Column->Index][Row], false, 100,TFillTextFlags() << TFillTextFlag::ftRightToLeft, TTextAlign::taTrailing, TTextAlign::taTrailing); Подскажите пожалуйста, как развернуть время обратно?

      Ну и параллельно вопрос: как строку сплошным цветом заливать? Без белых границ?
    • От master webs
      Добрый день такая проблема думал она  только  на android но за метил и на win
      в StringGrid загружаю данные с clientdataset
      но первая строка  чем то перекрыта непонятно чем  любое действие с формой  удаляет перекрытие (ощущение что не прорисована  до конца первая ячейка первой строки)
      когда подгружаю новые данные  ситуация повторяется
      прикрепил изображение
      кстати такой проблемы не было в xe8 появилась в 10 Seattle
      проверил Grid такая же проблема
       
      в ios и mac таких проблем не наблюдаю

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...