Задача: вывести в какой-нибудь список содержимое таблицы(текст),причем в зависимости от значений(в таблице) цвет строк должен быть различным.
Вопрос: каким компонентом воспользоваться лучше, и как это сделать(если можно фрагмент кода для изменения цвета одной строки).
Заранее благодарен!!!
Здравствуйте, kardash24, Вы писали:
K>Задача: вывести в какой-нибудь список содержимое таблицы(текст),причем в зависимости от значений(в таблице) цвет строк должен быть различным. K>Вопрос: каким компонентом воспользоваться лучше, и как это сделать(если можно фрагмент кода для изменения цвета одной строки). K>Заранее благодарен!!!
TListView, стиль Report. Цвет строк задаешь в обработчике OnCustomDrawItem:
procedure TSomeForm.ListViewCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
ListView.Canvas.Font.Color := GetColorByItem(Item);
end;
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Здравствуйте, kardash24, Вы писали:
K>Задача: вывести в какой-нибудь список содержимое таблицы(текст),причем в зависимости от значений(в таблице) цвет строк должен быть различным. K>Вопрос: каким компонентом воспользоваться лучше, и как это сделать(если можно фрагмент кода для изменения цвета одной строки). K>Заранее благодарен!!!
А каким образом в TlistView можно выстроить текст в несколько колонок?
Здравствуйте, ekamaloff, Вы писали:
E>Здравствуйте, kardash24, Вы писали:
K>>А каким образом в TlistView можно выстроить текст в несколько колонок?
E>Свойсто TListView.Columns — задать колонки E>TListItem.SubItems — текст колонок для определенного элемента
Я никогда не работал с этим элементом... Если я хочу вывести во второй столбец строку 'qwert',что я должен сделать в программе? Напишите код,пожалуйста?
Здравствуйте, kardash24, Вы писали:
K>Я никогда не работал с этим элементом... Если я хочу вывести во второй столбец строку 'qwert',что я должен сделать в программе? Напишите код,пожалуйста?
В дизайнере формы создай у ListView три столбца (свойство Columns), потом:
procedure TSomeForm.FormCreate(Sender: TObject);
begin// Добавляем первую строкуwith ListView.Items.Add() do begin
Caption := 'Текст первого столбца первой строки';
SubItems[0] := 'Текст второго столбца первой строки';
SubItems[1] := 'Текст третьего столбца первой строки';
end;
// Добаляем вторую строкуwith ListView.Items.Add() do begin
Caption := 'Текст первого столбца второй строки';
SubItems[0] := 'Текст второго столбца второй строки';
SubItems[1] := 'Текст третьего столбца второй строки';
end;
end;
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
E>В дизайнере формы создай у ListView три столбца (свойство Columns), потом:
E>
E>procedure TSomeForm.FormCreate(Sender: TObject);
E>begin
E> // Добавляем первую строку
E> with ListView.Items.Add() do begin
E> Caption := 'Текст первого столбца первой строки';
E> SubItems[0] := 'Текст второго столбца первой строки';
E> SubItems[1] := 'Текст третьего столбца первой строки';
E> end;
E> // Добаляем вторую строку
E> with ListView.Items.Add() do begin
E> Caption := 'Текст первого столбца второй строки';
E> SubItems[0] := 'Текст второго столбца второй строки';
E> SubItems[1] := 'Текст третьего столбца второй строки';
E> end;
E>end;
E>
Сделал 4 столбца, запустил...
К сожалению на строчке создания subitem-а(SubItems[0] := 'Текст второго столбца первой строки' выдается ошибка list index out of bounds. Что я делаю неправильно?
E>>procedure TSomeForm.FormCreate(Sender: TObject);
E>>begin
E>> // Добавляем первую строку
E>> with ListView.Items.Add() do begin
E>> Caption := 'Текст первого столбца первой строки';
E>> SubItems.Add('Текст второго столбца первой строки');
E>> SubItems.Add('Текст третьего столбца первой строки');
E>> end;
E>> // Добаляем вторую строку
E>> with ListView.Items.Add() do begin
E>> Caption := 'Текст первого столбца второй строки';
E>> SubItems.Add('Текст второго столбца второй строки');
E>> SubItems.Add('Текст третьего столбца второй строки');
E>> end;
E>>end;
E>>
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Здравствуйте, kardash24, Вы писали:
K>Спасибо,получилось. Последний вопрос,если можно — как определить какой из элементов выбран??? Т.е. может быть выбран как item, так и subitem.
SubItem-ы в ListView не могут быть выбраны. Может быть выбрана только строка (первая колонка или вся строка, если включено RowSelect). Получить выбранную строку: ListView.Selected (если свойство MultiSelect установлено в False).
Если требуется возможность выбирать именно ячейки, а не целые строки, то используй TStringList. Там индекс выбранной строки — свойство Row, столбца — Col
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Здравствуйте, ekamaloff, Вы писали:
E>Если требуется возможность выбирать именно ячейки, а не целые строки, то используй TStringList. Там индекс выбранной строки — свойство Row, столбца — Col
Имел ввиду TStringGrid
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde