• 0
Авторизация  
striker

Объединение ячеек одного стоблца

Вопросы

Всем привет!
Нужен совет.
Есть Grid, в нем расписание дня.
В БД каждая строка это отдельная запись.
Нужно как-то визуально сделать подобие объединения ячеек в Excel.
Т.е. нужно занять расписание на 2 часа.

При этом функционал по событиям для строки "второго часа" должен быть недоступен.
Может хотя бы границу стирать, т.е. оставлять значение в верхней ячейки, а нижнюю просто не отображать.
Как это лучше сделать?

FMX, Windows, Delphi XE6, MySQL
 

01.PNG

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

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


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

6 ответов на этот вопрос

  • 0

Товарищи, дайте наводку как хотя бы обвести рамкой сгруппированные подряд 2 ячейки (как на скрине).

Спасибо!

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


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

Попробуйте через события TGrid.OnDrawColumnCell или TGrid.OnDrawColumnBackground.

Там можно отрисовывать в ячейках то, что вам нужно

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

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


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

Пробовал через OnDrawColumnCell. 

Пока не получается.

Как попробовал? приведите пример...

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
if (zqOneDay5.FieldByName('TwoHoursKind').Value=2) and (Column = TGrid(Sender).Columns[1]) then
  begin
    TextRect := Bounds;
    TextRect.Left := TextRect.Left+2;
    TextRect.Right:= TextRect.Right-1;
    TextRect.Top := TextRect.Top-(TextRect.Bottom-TextRect.Top)+1;
    TextRect.Bottom :=TextRect.Bottom-2;
    TextRect.Inflate(-HorzTextMargin, -VertTextMargin);
    Canvas.Stroke.Thickness:=2;
    Canvas.Stroke.Color:=TAlphaColorRec.Blue;

    Canvas.DrawRect(TextRect, 0, 0, AllCorners, 1);
    Canvas.Stroke.Thickness:=1; 

       TGrid(Sender).DefaultDrawColumnCell(Canvas, Column, Bounds, Row, Value, State);
  end;

Вот, что получилось самое лучшее.

Как убрать белую линию-разделитель ячеек по горизонтали?

 

Безымянный.png

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


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

Есть событие: *DrawColumnCell. Через него можно отрисовать в ячейке что угодно. Единственная проблема - выводить будешь на уже отрисованный контент поверх, т.е. тормоза. Понимаю, что идиотизи, но других вариантов нет. Ну и ествественно onedit надо ловить, но он очень глючно доходит под всеми OS, но доходит после танцев с бубном. В принципе всё.
 

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

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

    • От SIARHEI RAHOUSKI
      Создал проект там куча компонентов. Но разворачивании формы на весь экран компоненты размер не меняют:
      Прочитал про свойства align Но как только я выставлю Group box например left другим right все сбивается в кучу и поправить это не могу. 
      Как настроить align ?

    • От SIARHEI RAHOUSKI
      Как сделать форму с компонентами под все разрешения?

    • От SIARHEI RAHOUSKI
      Как сделать мозаику (drag/drop) ? Получается есть 2 прямоугольника (которые надо перетаскивать)  и есть ещё 2 прямоугольника (которые должны принимать) и ещё есть кнопка проверки. При нажатии определяет правильно ли разместили прямоугольники.
    • От SIARHEI RAHOUSKI
      Как изменить сам Header, скролы ? Я открывал стайл блок, но всё что смог изменить там это цвет полей и всё.

    • От SIARHEI RAHOUSKI
      Здравствуйте, у меня возник вопрос Как базу данных подключить к TGrid? Я использую Delphi XE3 и База данных Accsess: ADOConnection + ADOQuery + DataSource. И вот как отобразить в TGrid Таблицу бд ?
    • От Антон Емельянов
      Приложение не даёт DeviceToken...  ,  (DeviceID есть)
      FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];

      Тест пример реализован по статье нашего замечательного модератора
      http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html

      Используется:
      Компиляция SDK Android 5.1
      Среда-разработки Delphi XE 10.2 

      Пожалуйста запустите проект на своей версии Delphi..
      Посмотрите будет  сгенерирован ТОКЕН или нет.. 
      в случае удачи ,  напишите какая у вас версия Дельфи..

      Исходник-проекта:  https://drive.google.com/open?id=1mCPvYYd0tXBALt-J_ymVuzChj_TtztC0
      Только APK: https://drive.google.com/open?id=1x8q4RyVylpGOMjcQYjlvFxFBSQaYs7NL 


      Помогите люди добрые 
      За помощь и консультацию отблагодарю..
       

    • От AliZairov
      Привет. Я сделал новую версию YouTubeApi компоненты. Поддерживаемые VCL & FMX + Mobile.
      Никаких официальных YouTube Api компоненты. Только данные с парсинг. Пример доступен в архиве.
       
      Новый
      ===
      v1.4 - 25/02/2018
        + Устранение проблем
      YouTubeApiDelphi
    • От x11
      Бесплатная сетка для некомерческого использования. Я так понял, что без исходников.
      For Embarcadero RAD Studio 2009 and up to Tokyo 10.2 update 2, Delphi and C++, VCL and Firemonkey frameworks (all platforms: Windows 32 and 64 bit, Mac OSX, Android and iOS), and Lazarus FreePascal (Windows, Linux, etc)
      https://github.com/Steema/TeeGrid

    • От gresaggr
      Добрый день.
      Как под FMX в ListView сделать подчеркивание Detail в рантайме?
      Пытался делать так:
      LV.ItemAppearanceObjects.ItemObjects.Detail.Font.Style := [TFontStyle.fsUnderline]
      но не срабатывает.
      P.S. Возможно это применить не ко всем строкам, а только к некоторым?
    • От Виталий Иванов
      Ошибка при запуске программы на отладку:
       
      "
      Can't open socket: Permission denied 
      Exiting
      .
      "
       
      кто знает как побороть ? 
       
      Отладку запускаю на OnePlus3 с Android 8.0.0, драйвера Google USB переустанавливал. 

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

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