Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2013, 16:05   #1
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию listview вывод определенного кол-ва строк

Ребята, подкиньте, пожалуйста, идею. А то у меня совсем без вариантов((
Есть список listview (caption Subitems[0] Subitems[1] Subitems[2])
По нажатию кнопки мне нужно вывести на экран только 10 строк, а по повторному нажатию вернуть все на место. Если строк меньше 10, то выводить все. Это типо Топ 10 песен.
Вот только не знаю как реализовать....
Решетова Алена вне форума Ответить с цитированием
Старый 02.06.2013, 16:14   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я бы копал в сторону виртуальности ListView. См. свойство OwnerData и справочку по нему
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.06.2013, 16:16   #3
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

Спасибки, посмотрю)
Решетова Алена вне форума Ответить с цитированием
Старый 02.06.2013, 17:42   #4
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

Ох... барахтаюсь, барахтаюсь... Никак не могу понять.. почитала я про ownerdata. попыталась применить. да ничего не вышло. подсобите, кто чем может) точно ownerdata нужен в моем случае? если да, то напишите пожалуйста пример, как он действует...
Решетова Алена вне форума Ответить с цитированием
Старый 02.06.2013, 17:57   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
точно ownerdata нужен в моем случае?
Это один из вариантов, как по мне самый элегантный. Можно листвью в зависимости от режима отображения по-новой формировать. Можно держать 2 листвью, один видимый, второй невидимый и менять видимость в зависимости от режима (это слишком дубово)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.06.2013, 18:02   #6
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

Хехе)))
Цитата:
Можно держать 2 листвью, один видимый, второй невидимый и менять видимость в зависимости от режима
Это я хорошо понимаю) И легко будет) Но на самом деле кошмарно)
Но элегантно то, конечно, лучше же) Но я без понятия как...
Решетова Алена вне форума Ответить с цитированием
Старый 02.06.2013, 18:10   #7
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

не знаю чем listview отличается от treeview, по этому просто напишу как я работал с tree view
Код:
unit uOptionForm;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.ExtCtrls, Vcl.StdCtrls,
  uAbstractFrame;

type
  TFrameClass = class of TAbstractFrame;

  TOptionForm = class(TForm)
    TreeView1: TTreeView;
    Splitter1: TSplitter;
    Panel1: TPanel;
    Panel5: TPanel;
    Button1: TButton;
    Button2: TButton;
    Panel7: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure TreeView1CreateNodeClass(Sender: TCustomTreeView;
      var NodeClass: TTreeNodeClass);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Frame:TAbstractFrame;
    procedure ChangeFrame(FrameClass:TFrameClass);
  end;

  TOptionNode = class(TTreeNode)
  public
    FrameClass:TFrameClass;
    function Add(const Name: String=''; const FrameClass:TFrameClass=nil)
        : TOptionNode;
    function AddChild(const Name: String=''; const FrameClass:TFrameClass=nil)
        : TOptionNode;
  end;

var
  OptionForm:TOptionForm;

implementation

uses
  uOptions,
  uOptionSearchFrame;

{$R *.dfm}

{ TOptionNode }

function TOptionNode.Add(const Name: String; const FrameClass: TFrameClass)
  : TOptionNode;
begin
  Result:=OptionForm.TreeView1.Items.Add(nil,Name) as TOptionNode;
  Result.FrameClass:=FrameClass;
end;

function TOptionNode.AddChild(const Name: String; const FrameClass: TFrameClass)
  : TOptionNode;
begin
  Result:=OptionForm.TreeView1.Items.AddChild(Self,Name) as TOptionNode;
  Result.FrameClass:=FrameClass;
end;

{ TOptionForm }

procedure TOptionForm.Button1Click(Sender: TObject);
begin
  Close;
end;

procedure TOptionForm.Button2Click(Sender: TObject);
begin
  if Frame<>nil then
  TAbstractFrame(Frame).SetOptions;
  Close;
end;

procedure TOptionForm.ChangeFrame(FrameClass: TFrameClass);
begin
  if Frame<>nil then Frame.Destroy;
  Frame:=FrameClass.Create(OptionForm.Panel1);
  Frame.Parent:=OptionForm.Panel1;
  TAbstractFrame(Frame).GetOptions;
end;

procedure TOptionForm.FormCreate(Sender: TObject);
var
  node:TOptionNode;
begin
  Options:=TOptions.Create;
  node:=TOptionNode.Create(nil);
  node.Add('Search',TOptionSearchFrame); //.AddChild('Search2').AddChild('Search2');
end;

procedure TOptionForm.FormShow(Sender: TObject);
begin
  if Frame<>nil then TAbstractFrame(Frame).GetOptions;
end;

procedure TOptionForm.TreeView1CreateNodeClass(Sender: TCustomTreeView;
  var NodeClass: TTreeNodeClass);
begin
  NodeClass:=TOptionNode;
end;

procedure TOptionForm.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
  FrameClass:TFrameClass;
begin
  FrameClass:=TOptionNode(Node).FrameClass;
  if FrameClass<>nil then ChangeFrame(FrameClass);
end;

end.
пыжок
maloun вне форума Ответить с цитированием
Старый 02.06.2013, 18:15   #8
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

Спасибо) попробую разобраться в вашем коде, может поможет)
Решетова Алена вне форума Ответить с цитированием
Старый 02.06.2013, 18:28   #9
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от Решетова Алена Посмотреть сообщение
Спасибо) попробую разобраться в вашем коде, может поможет)
ну я имел введу заменить ListView на tree view, но вот щас че-то сам засомневался, вообще идеологически не понял вопроса, если в listview можно программно записывать и с читывать информацию, то проблем быть не должно
1. создаем базу для хранения информации
2. пишем из неё в listview
3. проводим работу с данными из базы и перезаписываем их в listview
4. при опр. условиях изменяем данные в базе и перезаписываем её в listview

на каком из этапов, что лажанулось?
пыжок

Последний раз редактировалось maloun; 02.06.2013 в 18:34.
maloun вне форума Ответить с цитированием
Старый 02.06.2013, 18:35   #10
Решетова Алена
Форумчанин
 
Регистрация: 13.12.2012
Сообщений: 116
По умолчанию

нее, у меня базы нет, мне бы что попроще. не стоит так заморачиваться. это просто лаба за 3-ий курс. (при том что меня туда кидануло со 2-ого 2 недели назад. группа моя распалась.. не суть) у меня просто список в файл сохраняется, потом из файла открывается. и то там малость с глюками. не суть важно. есть проигрыватель на форме1. есть список песен на форме2 и есть этот самый листвью, который содержит строки с названиями песни и оценками (типо чарт) на форме3. и там же есть кнопка топ 10. и вот по нажатию этой кнопки, листвью должен отобразить 10 песен с наибольшей средней оценкой. сортировка у меня есть. а вот как отобразить только 10 строк я не понимаю.
Решетова Алена вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод время определенного часового пояса Abdukhafiz Общие вопросы .NET 0 19.07.2012 00:19
Задачи на обработку строк: удалить каждую 3-ю букву, найти кол-во гласных, кол-во цифр в строке,совпадения в 2-х строках Ирина93 Паскаль, Turbo Pascal, PascalABC.NET 6 05.11.2011 22:10
Вывод на экран фамилий больше определенного возвраста SasukeUciha Помощь студентам 0 21.10.2011 22:31
AutoIt Подсчет кол-ва пикселей определенного цвета в определенной области активного окна z3xix13 Помощь студентам 0 02.10.2010 14:27
вывод большего кол-ва строк Alternavi SQL, базы данных 2 03.07.2009 15:43