![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Beowulf 13th |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
Есть список. List: TListView.
В него слямзенной функцией добавляем из нескольких полей текст. Добавляет очень криво. В Item он добавляет сначала пустую строку потом на следующей введенный текст, а в SubItem наоборот. Что делать не понятно О_О Заранее спасибо. Код procedure TForm1.bbAddClick(Sender: TObject); var ListItem : TListItem; begin ListItem := List.Items.Add; List.AddItem(edLastName.Text, pointer(edLastName.Text)); ListItem.SubItems.Add(edName.Text); ListItem.SubItems.Add(edOtch.Text); ListItem.SubItems.Add(edPhone.Text); ListItem.SubItems.Add(edAddress.Text); ListItem.SubItems.Add(cbDate.Text + ' ' + cbMounth.Text + ' ' + edYear.Text); ListItem.SubItems.Add(edNotes.Text); end; |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Для ViewStyle = vsReport:
procedure TForm1.bbAddClick(Sender: TObject); Так? |
Beowulf 13th |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
Угу. Спасибки!
А как сделать поиск по subitem'ам? А то он у меня ищет только по Caption'ам видимо. Функция такая (тоже слямзенная ]: ) Код procedure TForm1.bbSearchClick(Sender: TObject); var lvItem: TListItem; begin lvItem := List.FindCaption(0, edLastName.Text, True, True, False); if lvItem <> nil then begin List.Selected := lvItem; lvItem.MakeVisible(True); List.SetFocus; end else ShowMessage('Запись не найдена'); end; |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Вообще-то это есть в DRKB (ссылка - в самом начале страницы):
function FindListViewItem(lv: TListView; const S: string; column: Integer): TListItem; |
Beowulf 13th |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
А как заюзать данную функцию по нажатию на кнопасу?
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Ты бы все-таки Drkb скачал, там очень много полезной информации...
procedure TForm1.Button1Click(Sender: TObject); |
Beowulf 13th |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
А как редактировать SubItem, например по двойному клику?
Сообщение отредактировано: Beowulf 13th - 10.05.2007 16:15 |
Beowulf 13th |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
google не помог... need help )':
|
Beowulf 13th |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
И еще вопрос. Слямзил функцию
Код procedure LV_FindAndSelectItems(lv: TListView; const S: string; column: Integer); var i: Integer; found: Boolean; lvItem: TListItem; begin Assert(Assigned(lv)); Assert((lv.ViewStyle = vsReport) or (column = 0)); Assert(S <> ''); for i := 0 to lv.Items.Count - 1 do begin lvItem := lv.Items[i]; if column = 0 then found := AnsiCompareText(lvItem.Caption, S) = 0 else if column > 0 then begin if lvItem.SubItems.Count >= Column then found := AnsiCompareText(lvItem.SubItems[column - 1], S) = 0 else found := False; end else found := False; if found then begin lv.Selected := lvItem; end; end; end; Она выделяет все найденные соответсвтия. Но! Если использовать ее во второй раз - он добавит новый результ к старому, то есть выделятся строки, найденные за два запроса. Делал так: Код for i := 1 to List.Items.Count - 1 do List.Items.Item[i].Selected := false; он выделение снимает, но все равно скалдывает два результата. Помагает только клик по List: TListView. Как это исправить? |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Могу показать, как можно определить тот Caption, на котором был Double-Click (вообще GetItemAt не работает с SubItems, а работает только с первым столбцом ЛистВью, элементы которого можно выделить мышью, но с помощью вот такого финта можно это добавить):
varМожно используя этот код вместо ShowMessage вызывать, например, диалоговое окно, которое будет запрашивать новое значение, и после ввода менять соотв. Caption... Не пробовал, но по-моему должно работать... |
![]() ![]() |
![]() |
Текстовая версия | 13.07.2025 17:12 |