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

Listview - где хранить ID ?


rustam_d

Вопрос

В дизайнере установил связку BindSource датасета на поля Listview:

- Item.Text,

- Item.Detail,

- Item.ImageIndex

- Item.ButtonText

все эти поля нужные и визуально отражаемые.

Вопрос где хранить ID, чтобы по OnItemClick вызвать датасет.Locate('id', ...);

 

Думал можно через ItemHeader.Text, а его извлечение мягко говоря непрямое...

 

Ссылка на комментарий

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

  • 0

Аа, ну тогда я не могу помочь. Даже не знаю как эта штука работает

да легко если не грузить вручную ListView ).

если не найду решения...то наверно придется (

Ссылка на комментарий
  • 0

Не используйте BindSource ))))

 

Ну а по существу - используйте в ItemAppearance другие типы итемов.. Типа RatingListItem

проинстолил компонент ваш, все равно не подходит...опять не хватает полей )

- Item.Text = text,

- Item.Detail = text2,

- Item.ImageIndex = imageindex

- Item.ButtonText text3

больше нету полей (...

Алекс, допустим вручную загружу Listview, просто у меня настроек полно по всем полям PositionOffset, ну и как отлаживать все это хозяйство вручную...не визуально?

И еще, вы по датасету тоже по локате перемещаетесь?

Изменено пользователем rustam_d
Ссылка на комментарий
  • 0

 

Не используйте BindSource ))))

 

Ну а по существу - используйте в ItemAppearance другие типы итемов.. Типа RatingListItem

проинстолил компонент ваш, все равно не подходит...опять не хватает полей )

- Item.Text = text,

- Item.Detail = text2,

- Item.ImageIndex = imageindex

- Item.ButtonText text3

больше нету полей (...

Алекс, допустим вручную загружу Listview, просто у меня настроек полно по всем полям PositionOffset, ну и как отлаживать все это хозяйство вручную...не визуально?

И еще, вы по датасету тоже по локате перемещаетесь?

 

Что касается БД - большая часть "ручками".

а LiveBindings вообще не пользую...

 

Если Вам не хватает в установленном компоненте чего-то - добавьте в него нужное. Это не "пара минут", но реализуемо.

Ссылка на комментарий
  • 0

а LiveBindings вообще не пользую...

 

Если Вам не хватает в установленном компоненте чего-то - добавьте в него нужное. Это не "пара минут", но реализуемо.

 

да так и думал, попробую накопипастить в рейтинг текст4, текст5... )

Ссылка на комментарий
  • 0

У LiveBindings-привязок (или как они там правильно называются...) есть набор своих событий.

Например, у LinkFillControlToField есть событие OnFilledListItem в обработчике которого можно дообработать данные из БД, которые не удалось привязать.

Будет выглядеть примерно так:

procedure TForm1.LinkFillControlToField1FilledListItem(Sender: TObject; const AEditor: IBindListEditorItem);
var
  Item: TListViewItem;
begin
  if AEditor.CurrentIndex >= 0 then
  begin
    Item := ListView1.Items[AEditor.CurrentIndex];
    Item.Tag := BindSourceDB1.DataSet.FindField('ID').AsInteger;
    ...
  end;
end;
Ссылка на комментарий
  • 0

 

У LiveBindings-привязок (или как они там правильно называются...) есть набор своих событий.

Например, у LinkFillControlToField есть событие OnFilledListItem в обработчике которого можно дообработать данные из БД, которые не удалось привязать.

Будет выглядеть примерно так:

procedure TForm1.LinkFillControlToField1FilledListItem(Sender: TObject; const AEditor: IBindListEditorItem);
var
  Item: TListViewItem;
begin
  if AEditor.CurrentIndex >= 0 then
  begin
    Item := ListView1.Items[AEditor.CurrentIndex];
    Item.Tag := BindSourceDB1.DataSet.FindField('ID').AsInteger;
    ...
  end;
end;

если это работает раньше ОнИтемКлик...то это действительно находка...ок спс погоняю

Ссылка на комментарий
  • 0

черт возьми Fil....это просто гениально!!!

такое событие вызывается разово при кноннекте...и сразу заполняешь куда хочешь )...браво!

а по остальным 200 полям я уже перехожу по локейту.

просто заказчик вынес мне моск, что как в ватсапе дату покажи справа в buttontext...теперь проект 

засверкает снова ).

Ссылка на комментарий
  • 0
В 25.08.2015 в 19:18, FIL сказал:

У LiveBindings-привязок (или как они там правильно называются...) есть набор своих событий.

Например, у LinkFillControlToField есть событие OnFilledListItem в обработчике которого можно дообработать данные из БД, которые не удалось привязать.

Будет выглядеть примерно так:

...или так:

procedure TForm1.LinkFillControlToField1FilledListItem(
  Sender: TObject; const AEditor: IBindListEditorItem);
var
  Item: TListViewItem;
begin
  if AEditor.CurrentObject is TListViewItem then
  begin
    Item := TListViewItem(AEditor.CurrentObject);
    Item.Data['ID'] := BindSourceDB1.DataSet.FindField('ID').AsInteger;
  end;
end;
Ссылка на комментарий

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

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

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

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

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

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

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

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

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