Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Align содержимого в столбцах TVirtualStringTree, Какой опцией это задается? 
V
    Опции темы
EvilsInterrupt
Дата 17.9.2007, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 3
Всего: 9



Всем хай

Такая ситуация, создал 3 колонки у TVirtualStringTree, каждая из добавленных строк будет содержать:

0 - без текста, только иконка из TImageList
1 - Статич.текст
2 - аналогично

Знающим: Как сделать выравнивание иконки в 0 столбце по центру? Или обобщим вопрос: где задается выравнивание содержимого в столбце?
PM MAIL WWW ICQ Jabber   Вверх
RinOSpro
Дата 17.9.2007, 08:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Попробуй так не уверен но в DRKB нашел чтото похожее может это тебя натолкнет на правельную мысль

Код

var
Alignment : TAlignment;
...

Header.Columns[Column].Alignment := Alignment;


  Вверх
EvilsInterrupt
Дата 17.9.2007, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 3
Всего: 9



RinOSpro, Нет, не помогает я пробовал, это сво-во отвечает за выравнивание наименования стобца в заголовке. А мне надо само содержимое столбца
PM MAIL WWW ICQ Jabber   Вверх
MetalFan
Дата 17.9.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



EvilsInterrupt, нет, за содержимое столбца оно тоже отвечает. по крайней мере у меня текст посерединке выравнивается.
а вот если там картинка, то она всегда по левому краю

Добавлено @ 10:08
з.ы. проще имхо отрисовать столбец с иконкой самому

Это сообщение отредактировал(а) MetalFan - 17.9.2007, 10:09


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
EvilsInterrupt
Дата 17.9.2007, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 3
Всего: 9



MetalFan, ЭТо когда стиль у колонки vsOwnerDraw ? Тогда какие события подскажешь по пророисовке картинки? OnGetImageIndex ?
Тогда что в нем не верно:
Код

  procedure TfrmLog.vstEventLogGetImageIndex(Sender: TBaseVirtualTree;
            Node: PVirtualNode;     Kind: TVTImageKind;   Column: TColumnIndex;
        var Ghosted: Boolean;   var ImageIndex: Integer);
  var
    VSTEvent : PVSTEvent;
  begin
    ImageIndex := -1;
    if Column > 0 then
       Exit;
    VSTEvent := vstEventLog.GetNodeData(Node);
    if Assigned(VSTEvent) then
      ImageIndex := Ord(VSTEvent.Ico);
  end;

PM MAIL WWW ICQ Jabber   Вверх
MetalFan
Дата 17.9.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



даю наводку:
Код

procedure TForm1.vst1AfterCellPaint(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  CellRect: TRect);
var
  lInt: Integer;
  lPt: TPoint;
begin
  if Column <= 0 then
  begin
    lInt := imgl1.Width;
    lPt.x := CellRect.Left + (CellRect.Right - cellrect.Left - lInt) div 2;
    lPt.y := CellRect.Top + (CellRect.Bottom - cellrect.Top - lInt) div 2;
    imgl1.Draw( TargetCanvas, lPt.X, lPt.Y, 0 );
  end;
end;

разбирайся!


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
EvilsInterrupt
Дата 17.9.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 3
Всего: 9



А почему ты используешь OnAfterCellPaint, а не OnBeforCellPaint ?
PM MAIL WWW ICQ Jabber   Вверх
aktuba
Дата 17.9.2007, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

А почему ты используешь OnAfterCellPaint, а не OnBeforCellPaint ? 


Потому что After - это после, а Before - до... =)


--------------------
user posted image
PM MAIL WWW Skype   Вверх
EvilsInterrupt
Дата 17.9.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 3
Всего: 9



aktuba, ну? Поймать когда, что-то хочет прорисоваться, поставить туда иконку и пусть рисуется. Туплю?
PM MAIL WWW ICQ Jabber   Вверх
EvilsInterrupt
Дата 17.9.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 3
Всего: 9



Заработало! smile))

Надо было у этой колонки поменять стиль! Прописать:
Код

  procedure TfrmLog.vstEventLogAfterCellPaint(Sender: TBaseVirtualTree;
            TargetCanvas: TCanvas;  Node: PVirtualNode;   Column: TColumnIndex;
            CellRect: TRect);
  var
    LPt       : TPoint;
    LWidth    : Integer;
    LHeight   : Integer;
    LVSTEvent : PVSTEvent; // туто я храню переменнуюю перечислимого типа, хар-щую иконку
  begin
    if Column = 0 then
    begin
      LVSTEvent := Sender.GetNodeData(Node);
      if Assigned(LVSTEvent) then
      begin
        LWidth  := TVirtualStringTree(Sender).StateImages.Width;
        LHeight    := TVirtualStringTree(Sender).StateImages.Height;
        with CellRect do
        begin
          LPt.X := Left + ((Right - Left - LWidth) div 2);
          LPt.Y := Top + ((Bottom - Top - LHeight) div 2);
        end;
        ImgListLog.Draw(TargetCanvas,LPt.X,LPt.Y,Ord(LVSTEvent.Ico));
      end;
    end;
  end;

PM MAIL WWW ICQ Jabber   Вверх
EvilsInterrupt
Дата 10.10.2007, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 3
Всего: 9




И опять я про Align ;)

Вобщем содержимое столбца выравнивается по правому краю, причем в настройках выставил center. Но может быть я что-то пропустил,
мне надо для случая, когда if TextType = ttStatic.
При аттачу рисунок. ;)

зы:
на время дикое не смотреть ;)))

Присоединённый файл ( Кол-во скачиваний: 23 )
Присоединённый файл  1.jpg 14,80 Kb
PM MAIL WWW ICQ Jabber   Вверх
EvilsInterrupt
Дата 10.10.2007, 11:02 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 3
Всего: 9



Решил, все оказалось просто!

У меня столбец с датой был MainColumn ;) как только переназначил "главность" на столбец с иконкой, который есть OwnerDraw, то все стало хорошо! ;)
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0873 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.