Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
}{NiM
64 / 64 / 16
Регистрация: 25.11.2009
Сообщений: 283
1

Листы

01.02.2010, 17:44. Просмотров 1277. Ответов 12
Метки нет (Все метки)

Как сделать такой список так как на рис.? Какой компонент использовать???
0
Миниатюры
Листы  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2010, 17:44
Ответы с готовыми решениями:

StringGrid и Excel листы
Как добавить лист в excel в конец книги? for i:=4 to 12 do...

Новые листы в одном окне [Delphi 7]
Ребят, нужна помощь, как сделать так чтобы можно было создавать 2 листа и...

Не могу создать новые листы Excel
В общем у меня есть процедура, которая в добавок ко всему создает новый лист...

Как сохранить листы Excel в отдельный файл
Здравствуйте Уважаемые! Помогите решить задачу!!! Есть книга Excel с...

По содержимому столбца создать листы и в эти листы скопировать соответствующие строки
Здравствуйте, уважаемые Форумчане!!! Есть задачка: В прикреплённом файле есть...

12
igoriy
871 / 542 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
01.02.2010, 18:49 2
ListView
0
}{NiM
64 / 64 / 16
Регистрация: 25.11.2009
Сообщений: 283
01.02.2010, 22:33  [ТС] 3
Можно описать, как осуществлять запись в данный класс???
0
Страдалецъ
Тимуровец
444 / 287 / 50
Регистрация: 10.09.2009
Сообщений: 963
01.02.2010, 23:04 4
Это не совсем ListView. По крайней мере заголовок столбца там изменен. Насколько я помню родной ListView сортировку по колонке не поддерживает.
0
}{NiM
64 / 64 / 16
Регистрация: 25.11.2009
Сообщений: 283
02.02.2010, 21:29  [ТС] 5
подлежит. Только с вводом туда не разберусь(
0
Страдалецъ
Тимуровец
444 / 287 / 50
Регистрация: 10.09.2009
Сообщений: 963
02.02.2010, 22:58 6
Несколько неудачно выразился, сортировка в ListView действительно есть, но я говорю о интерактивной сортировке по клику на заголовок столбца и выводом соответствующего значка в заголовок столбца. Обратите внимание на первый столбец скриншота.
0
}{NiM
64 / 64 / 16
Регистрация: 25.11.2009
Сообщений: 283
02.02.2010, 23:18  [ТС] 7
да, вижу. что вы порекомендуете???? и объясните если можно - как заполнять subitems???
0
Игорь[Igor]
716 / 469 / 128
Регистрация: 24.12.2008
Сообщений: 3,914
02.02.2010, 23:23 8
Можно так зделать StringGrid рисуя на нем.
Пример, думаю понятно какие переменные добавить или что убрать.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  TypeIcon: TIcon;
begin
 
   with StringGrid1 do
    begin
      Canvas.Brush.Style:=bsClear;
 
      If ARow=0 then  //Заполнение заголовка
      begin
        canvas.Font.Color  :=ClWhite;
        Canvas.Font.Size :=10;
        Canvas.Font.Name:='Arial';
        Canvas.Font.Style :=[fsBold];
        Canvas.StretchDraw(Rect,Bitmap1);
 
        DrawText(Canvas.Handle, PChar(Cells[ACol ,ARow]), -1, Rect ,
        DT_CENTER or DT_NOPREFIX or DT_VCENTER or DT_SINGLELINE  );
      end
      else
      begin
 
        //Позиция отображения CheckBox
        Rect.Left:= StringGrid1.ColWidths[0] div 2;
        Rect.Left:=Rect.Left - (16 div 2);
 
        Rect.Top := Rect.Top + (DefaultRowHeight div 2);
        Rect.Top := Rect.Top  - (16 div 2);
 
 
        //Создание региона для CheckBox
        IconLeft:= Rect.Left ;
        IconWidth:= (IconLeft + 16 ); //ширина 16 пикселей
        IconTop:=  Rect.Top ;
        IconHeight:= IconTop +16; //высота 16 пикселей
 
        RegionCheckBox[Arow]:= CreateRectRgn(IconLeft,IconTop,IconWidth,IconHeight);
 
        //если колонка 2 пустая CheckBox не работает, иначе работает
        If Cells[2,Arow]<> '' then TypeIcon:=UncheckedIcon else
        TypeIcon:=GrayedIcon;
 
        If (ACol=0) then
        begin
          //вставка CheckBox
          if (Checked[ARow]=True) and (Cells[2, Arow]<>'') then
          Canvas.StretchDraw(Rect, CheckedIcon)
          else
          Canvas.StretchDraw(Rect, TypeIcon);
        end;
 
        end;
 
        //Вставка фона при фыделении
        if (gdFocused in State) then
          begin
            Rect.Left:= - StringGrid1.ColWidths[0] div 2;
            Rect.Left:=Rect.Left - (16 div 2);;
 
            Rect.Top := Rect.Top - (DefaultRowHeight div 2);
            Rect.Top := Rect.Top  + (16 div 2);
 
            Canvas.Font.Color  :=clYellow ;
            Canvas.Font.Style :=[];
 
            if (ACol=0)then
            begin
              Canvas.StretchDraw(Rect,Bitmap2);
 
              Rect.Left:= StringGrid1.ColWidths[0] div 2;
              Rect.Left:=Rect.Left - (16 div 2);
 
              Rect.Top := Rect.Top + (DefaultRowHeight div 2);
              Rect.Top := Rect.Top  - (16 div 2);
 
            //перерисовка CheckBox на фоне
            if (Checked[ARow]=True) and (Cells[2,Arow]<>'') then
            Canvas.StretchDraw(Rect,CheckedIcon)
            else
            Canvas.StretchDraw(Rect,TypeIcon);
            end;
         end;
    end;
 
  //запис в label выделенной записи при включеном CheckBox
  if Checked[StringGrid1.Row]=True then
  Label1.Caption :=StringGrid1.Cells[2,StringGrid1.Row]
  else
  Label1.Caption:='' ;
end;
1
Страдалецъ
Тимуровец
444 / 287 / 50
Регистрация: 10.09.2009
Сообщений: 963
03.02.2010, 04:33 9
ListView заполняется так:
1. Устанавливаете для него свойство ViewStyle = vsReport
2. В свойстве Columns добавляете нужное количество столбцов.
3. Добавление строки в ListView:
Delphi
1
2
3
4
5
6
7
with ListView1.items.Add
do begin
    Caption := 'Первый столбец';
    SubItems.Add('Второй столбец');
    ... 
    SubItems.Add('Последний столбец')
    end;
1
}{NiM
64 / 64 / 16
Регистрация: 25.11.2009
Сообщений: 283
04.02.2010, 22:51  [ТС] 10
Страдалецъ, спасбо конечно, но как изменять??? простите за тупость, но с этим компонентом раньше не работал вовсе.

Добавлено через 59 секунд
в смысле уже добавлен к примеру 3-й subitem из 5-ти. необходимо изменить выделенный пользователем item

Добавлено через 17 минут
Игорь[Igor], но данная идея под проект не подходит.
0
}{NiM
64 / 64 / 16
Регистрация: 25.11.2009
Сообщений: 283
07.02.2010, 16:23  [ТС] 11
Все. сам разобрался... правд новый вопрос возник. как найти номер item, который выделен в данный момент???
0
igoriy
871 / 542 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
07.02.2010, 16:58 12
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button2Click(Sender: TObject);
var
 a: integer;
begin
  a:= listview1.Selected.Index;
 Edit1.Text:= IntToStr(a);
end;
Добавлено через 5 минут
Да только надо не забыть в свойствах компонентов RowSelect сделать True иначе строка выделятся не будет
1
}{NiM
64 / 64 / 16
Регистрация: 25.11.2009
Сообщений: 283
07.02.2010, 17:28  [ТС] 13
Мерси)
0
07.02.2010, 17:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2010, 17:28

НА ЭКСЕЛЕ БАЗА ДАННЫХ .Создать листы "сотрудники" кафедры","дисциплины". и с помощью ВПР и СУММЕСЛИ связать эти листы
Предметная область: Учебно-методическое управление...

Листы - *листы
Задача: Есть лист. Он может содержить от 1 до n элементов. Так вот,...

Белые листы
Здравствуйте! Помогите, пожалуйста! У Меня всё никак не запускалась, скачанная...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru