Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ListView


markers ©   (2006-03-01 23:20:00) 

Здраствуйте!
Как можно сделать пункты ListView в режиме List, по центру?
Заранее спасибо!


Джо   (2006-03-02 23:32:00) [1]

> [14] StriderMan ©   (02.03.06 23:27)
> ээээ
> а по какой причине используется ListView а не ListBox, если
> все равно элементы отображаются текстом

Это, похоже, Вопрос Вопросов :-) Чем больше я смотрю на варианты сабжевого кода, тем более меня этот вопрос волнует. Ну да ладно.


StriderMan   (2006-03-02 23:27:00) [2]

ээээ
а по какой причине используется ListView а не ListBox, если все равно элементы отображаются текстом


REA   (2006-03-02 11:14:00) [3]

Вывод по центру: SetTextAlign(Canvas.Handle, TA_TOP Or TA_CENTER)


markers   (2006-03-02 01:59:00) [4]

Если кому интересно:
specname & newp = переменные с текстами
var
 DLT1:Integer;
 DLT2:Integer;
 DLT3:Integer;

function InsertSpace(Count:Integer):String;
var i:integer;
begin
Result:='';
for i:=TListView(Sender).Canvas.TextWidth(Result) to Count do
 begin
  Result:=Result+' ';
 end;
end;

begin
DefaultDraw:=False;
DLT1:=DopCatList.Width div 2;
if Item.Index = 1 Then
begin
 DLT2:=(DLT1-TListView(Sender).Canvas.TextWidth(newpName)) div 2;
 TListView(Sender).Canvas.TextOut(1,2,InsertSpace((DLT2 div 2)-10)+newpName+' '+InsertSpace((DLT2 div 2)-10));
end
else
begin
 DLT2:=(DLT1-TListView(Sender).Canvas.TextWidth(specName)) div 2;
'+specName+' '+InsertSpace(DLT2 div 2));
 TListView(Sender).Canvas.TextOut(DLT1-10,2,InsertSpace((DLT2 div 2)-10)+' '+specName+' '+InsertSpace((DLT2 div 2)-10));
TListView(Sender).Canvas.TextOut(DLT1,2,InsertSpace(DLT2)+specName+InsertSpace(DLT2));
end;
end;


markers   (2006-03-02 01:06:00) [5]

Попраки:
... следующий
не бокс а ListView
Ссори.


markers   (2006-03-02 01:05:00) [6]

Что-то у меня маленько не получаеться сделать Itemы по центру, мой алгоритм слудующий:
"
Получаем ширину бокса
Делем пополам и даем всем поровну :)
Измеряем размер текста каждой ячейки
От половинки бокса отнимаем размер текста ячейки
Делем его пополам и добавляем по половинке пустоты к каждой стороне
"
Поправьте меня пожалуйста если что?


markers   (2006-03-02 00:53:00) [7]

Просто у меня есть сейчас идеи, я может смогу их воплатить, а может и нет. А время идёт, может за это время что-то предложет ещё лучше чем я придумал.


Джо   (2006-03-02 00:44:00) [8]

> [7] markers ©   (02.03.06 00:42)
> Уже впринцепи решил....
> И формулу впринцепи придумал, но если будут предложения,
> буду рад.

Если ты уже сам все, в принципе, решил — то каких предложений ты ждешь и зачем вообще просишь помощи на форуме?


markers   (2006-03-02 00:42:00) [9]

>> [3] markers ©   (02.03.06 00:24)
>> А как избавиться от "Новые поступ..."?

>Что это такое?
!ListView "сокращает" имя item`a Мне нужно чтоб было полно...

Уже впринцепи решил....
И формулу впринцепи придумал, но если будут предложения, буду рад.


Джо   (2006-03-02 00:40:00) [10]

> [2] markers ©   (02.03.06 00:19)
> Мне нужна формула вычесления.

Очень рад.


Джо   (2006-03-02 00:39:00) [11]

> [3] markers ©   (02.03.06 00:24)
> А как избавиться от "Новые поступ..."?

Что это такое?


markers   (2006-03-02 00:24:00) [12]

А как избавиться от "Новые поступ..."?


markers   (2006-03-02 00:24:00) [13]

Только через OwerDraw?


markers   (2006-03-02 00:19:00) [14]

Мне нужна формула вычесления.


Джо   (2006-03-02 00:16:00) [15]

Установить OwnerDraw в True и в обработчике события OnDrawItem самому отрисовывать элементы.


Наверх

Титульная страница Поиск, карта сайта Написать письмо