Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.08.2009, 23:48
Cracer Cracer вне форума
Прохожий
 
Регистрация: 28.12.2008
Сообщения: 33
Репутация: 10
По умолчанию ListView скрыть данные

И снова доброго времени суток! Надеюсь на Вашу помощь уважаемые форумчане
Вообщем есть ListView - 3 столбца и несколько строк.
Задача: Скрыть отображение данных 2ого столбца (совсем или за звездочками (2ой вариант предпочтительнее))
Ответить с цитированием
  #2  
Старый 30.08.2009, 10:01
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Возможно, есть способ лучше, но пока никто не предложил, вот возможный вариант...
Код:
var
  Form1: TForm1;
  { битмап этот будет хранить текст со звездочками }
  bmp: TBitmap;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  ListView1.GridLines := True;
  ListView1.ViewStyle := vsReport;
  ListView1.Columns.Clear;
  { создадим и обзовем как-нибудь три столбца }
  for i := 0 to 2 do
  begin
    ListView1.Columns.Add;
    ListView1.Column[i].Caption := 'Column ' + IntToStr(i);
  end;

  { добавим несколько строк... }
  for i := 0 to 4 do
    with ListView1.Items.Add do
    begin
      Caption := 'Item ' + IntToStr(i);
      SubItems.Add('Subitem ' + IntToStr(i) + '-0');
      SubItems.Add('Subitem ' + IntToStr(i) + '-1');
    end;

  { выведем на битмап текст звездочек }
  bmp := TBitmap.Create;
  bmp.Width := ListView1.Columns[1].Width - 3;
  bmp.Height := ListView1.Font.Size;
  bmp.Canvas.Font := ListView1.Font;
  bmp.Canvas.TextOut(3, 2, '*******');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  bmp.Free;
end;

{ добавим собственную реакцию на событие отрисовки subitem'ов OnCustomDrawSubItem }
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  { скрываем за звездочками содержимое только второго столбца }
  if SubItem = 1 then
    with (Sender as TListView) do
    begin
      Canvas.Draw(Item.Left + Columns[0].Width, Item.Top, bmp);
      DefaultDraw := False; {   =)   }
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  { убедимся, что «реальный» текст во втором столбце остался
    нетронутым, и его можно программно прочесть, хоть там 
    и видны только звездочки }
  ShowMessage(ListView1.Items.Item[1].SubItems[0]);
end;

Последний раз редактировалось Nyctos Kasignete, 30.08.2009 в 10:12.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:49.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025