Раньше писал на С++, сейчас пробую на Дельфи. Не получается простая вещь.
Надо выделить Detail по признаку
lViewTour.BeginUpdate;
lViewTour.Items.Clear;
while not FDQuery.Eof do
begin
lvItem := lViewTour.Items.Add;
lvItem.Text := FDQuery.FieldByName('name').AsString;
lvItem.Detail := FDQuery.FieldByName('city').AsString;
lvItem.Data['status'] := 'normal';
if (FDQuery.FieldByName('status').AsInteger = 3) then
begin
lvItem.Data['status'] := 'red';
end
FDQuery.Next;
end;
FDQuery.Close;
lViewTour.EndUpdate;
lViewTour.Resize; Дальше написал
procedure Tfrm.lViewTourUpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean);
var
TextObject: TListItemText;
begin
TextObject := AItem.Objects.FindDrawable('status') As TListItemText;
if (TextObject = nil) then
begin
TextObject := TListItemText.Create(AItem);
TextObject.Name := 'status';
end;
TextObject.Visible := false;
if (TextObject.Text = 'red') then
begin
AItem.Objects.DetailObject.TextColor := TAlphaColorRec.Red;
AItem.Objects.TextObject.TextColor := TAlphaColorRec.Red;
end
end; По факту, у нужных записей текст перекрашивается в красный, а Детейл остается черным.
Мне же нужно именно Детейл перекрасить.
В чем ошибка?
На С++ я применял
TListViewItem::TListViewItemObjects * _objects = (const_cast<TListViewItem*>(AItem))->Objects;
И обходился без lvItem.Data['status']
Как заставить Дельфи окрасить Детейл?
Спаибо!
Вопрос
walexw
Раньше писал на С++, сейчас пробую на Дельфи. Не получается простая вещь.
Надо выделить Detail по признаку
lViewTour.BeginUpdate;
lViewTour.Items.Clear;
while not FDQuery.Eof do
begin
lvItem := lViewTour.Items.Add;
lvItem.Text := FDQuery.FieldByName('name').AsString;
lvItem.Detail := FDQuery.FieldByName('city').AsString;
lvItem.Data['status'] := 'normal';
if (FDQuery.FieldByName('status').AsInteger = 3) then
begin
lvItem.Data['status'] := 'red';
end
FDQuery.Next;
end;
FDQuery.Close;
lViewTour.EndUpdate;
lViewTour.Resize;
Дальше написал
procedure Tfrm.lViewTourUpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean);
var
TextObject: TListItemText;
begin
TextObject := AItem.Objects.FindDrawable('status') As TListItemText;
if (TextObject = nil) then
begin
TextObject := TListItemText.Create(AItem);
TextObject.Name := 'status';
end;
TextObject.Visible := false;
if (TextObject.Text = 'red') then
begin
AItem.Objects.DetailObject.TextColor := TAlphaColorRec.Red;
AItem.Objects.TextObject.TextColor := TAlphaColorRec.Red;
end
end;
По факту, у нужных записей текст перекрашивается в красный, а Детейл остается черным.
Мне же нужно именно Детейл перекрасить.
В чем ошибка?
На С++ я применял
TListViewItem::TListViewItemObjects * _objects = (const_cast<TListViewItem*>(AItem))->Objects;
И обходился без lvItem.Data['status']
Как заставить Дельфи окрасить Детейл?
Спаибо!
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.