Перейти к содержанию
Fire Monkey от А до Я

asd

Пользователи
  • Постов

    3
  • Зарегистрирован

  • Посещение

Посетители профиля

2 143 просмотра профиля

Достижения asd

  1. просто у меня такого нет Видимо, я не точно выразился. Я имел в виду, что если колонки были определены автоматически (не определялись в designtime), то добавление новой колонки в runtime удаляет их и создает единственную новую колонку. Это не означает, что добавление новых колонок (>1) невозможно.
  2. я свои типы не проталкиваю пока, но связка у меня норм работает...ниже мой код, может вам и сгодиться... альясы запроса у меня с шириной сразу, это очень удобно - к примеру пишите select name as ФИО_150 from...вот и вам и имя и ширина сразу ) важно подчеркивание ставить просто в конце... var vSp: МойДатасет; c: TLinkGridToDataSourceColumn; i,k: integer; begin LinkGrd.Columns.Clear; for i := 0 to vSp.FieldCount - 1 do begin c := LinkGrd.Columns.Add; c.MemberName := vSp.Fields[i].FullName; k := Pos('_',c.MemberName); if k > 0 then begin c.Width := copy(c.MemberName,k+1,length(c.MemberName)-k).ToInteger; c.Header := copy(c.MemberName,1,k-1); end else begin c.Width := 100; c.Header := c.MemberName; end; end; end; Здравствуйте, Rustam_D! Спасибо за внимание к моей проблеме, но, к сожалению, Ваш код не дает ответа на мой вопрос. Я могу создать колонку(и) - экземпляр(ы) TColumn и делал это точно таким же образом. Пример такого кода присутствует в моем вопросе. Я не знаю, как сделать так, чтобы колонка была экземпляром именно объявленного мной класса TDateColumn а не стандартного TColumn.
  3. Всем доброго дня! Задавал этот вопрос на Stackowerflow, но ответа не получил даже с учетом выделенного bounty http://stackoverflow.com/q/32258525/5043424. Сущность вопроса в следующем. Создается колонка для FMX TGrid: type TDatecell = class(TCalendarEdit) end; TDateColumn = class(TColumn) private function CreateCellControl: TStyledControl; override; public constructor Create(AOwner: TComponent); override; end; ... constructor TDateColumn.Create(AOwner: TComponent); begin inherited; end; function TDateColumn.CreateCellControl: TStyledControl; begin Result := TDatecell.Create(Self); end; Все работает. Такую колонку можно добавить в TGrid. Не получается ее связать с полем FDQuery, получающим данные из поля MySQL типа date. Пробовал в runtime вызывать нечто такое: LinkGridToDataSourceBindSourceDB1.Columns.Add; LinkGridToDataSourceBindSourceDB1.Columns.Items [LinkGridToDataSourceBindSourceDB1.Columns.Count-1]. MemberName:='date_set_by_user'; но этот код удаляет все колонки (если они не были определены и определялись автоматически согласно списка полей) и добавляет вместо них колонку - экземпляр класса TColumn. Подскажите, как связать колонку своего типа с TDataSet или как указать свой тип колонки в LinkGridToDataSourceBindSourceDB1.Columns? Я представляю, как заполнить TGrid вручную, но, мне кажется, это замедлит код и вынудит писать обработчики изменения DataState и вручную прописывать все изменения во всех ячейках в DataSet, а также реакцию DS на изменение выделения строки в TGrid. OnGetValue не срабатывает, если есть LiveBindings Link... Подскажите, пожалуйста, как это сделать. Застрял...
×
×
  • Создать...