На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> TVirtualStringTree
Вообщем проблемка такая:
Есть список VST и я пытаюсь закрасить каждую строчку нужным цветом. Раскраска получается, но закрашивается строка по ширине где есть столбцы. Мне же нужно, чтобы окраска происходила по всей ширине VST.
Закрашиваю так:
ExpandedWrap disabled
    procedure TfrmMain.vtTransactionsBeforeCellPaint(Sender: TBaseVirtualTree;
      TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
      CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect);
    var
      NodeInfo: PTransaction;
      R: TRect;
    begin
      NodeInfo := Sender.GetNodeData(Node);
      R := CellRect;
      Dec(R.Top, 1);
      Dec(R.Bottom, 1);
      Dec(R.Left, 1);
      case NodeInfo^.tTypeId of
        TRANSACTION_TYPE_EXPENSE:
        begin
          TargetCanvas.Brush.Color := Settings.ExpenseColor;
          TargetCanvas.FillRect(R);
        end;
        TRANSACTION_TYPE_INCOME:
        begin
          TargetCanvas.Brush.Color := Settings.IncomeColor;
          TargetCanvas.FillRect(R);
        end;
        TRANSACTION_TYPE_TRANSFER:
        begin
          TargetCanvas.Brush.Color := Settings.TransferColor;
          TargetCanvas.FillRect(R);
        end;
        TRANSACTION_TYPE_DEBT:
        begin
          TargetCanvas.Brush.Color := Settings.DebtsColor;
          TargetCanvas.FillRect(R);
        end;
      end;
    end;

Прикреплённый файлПрикреплённый файл____________.JPG (44,9 Кбайт, скачиваний: 37)
Сообщение отредактировано: DemonXpPro -
Если что-то не так, то результат всё равно будет таким, как ты захочешь;
if not True then Result := True else Result := True;
Если колонка последняя, то расширить R до правой границы
Цитата MBo @
Если колонка последняя, то расширить R до правой границы

Попробовал, но не работает.
Сделал R.Right := 9999 для пробы, также заливает только в пределах колонки.
Возможно нужно использовать событие OnBackgroundPaint, но событие не срабатывает почему то.
Сообщение отредактировано: DemonXpPro -
Если что-то не так, то результат всё равно будет таким, как ты захочешь;
if not True then Result := True else Result := True;
А если сделать пустую колонку справа?
Цитата MBo @
А если сделать пустую колонку справа?

Придется еще мониторить ее размеры, чтобы если остальные колонки не шире самого VST, тогда подгонять ее размер так, чтобы не появлялся горизонтальный скрол, меня это не устраивает, ибо костыль. Хочется сделать правильно и красиво.
Если что-то не так, то результат всё равно будет таким, как ты захочешь;
if not True then Result := True else Result := True;
Column.AutoSpring ?
Codero ergo sum
// Программирую — значит, существую
Цитата Fr0sT @
Column.AutoSpring ?

Не помогает
Если что-то не так, то результат всё равно будет таким, как ты захочешь;
if not True then Result := True else Result := True;
Значит, неправильно готовишь. Мне помогает
Codero ergo sum
// Программирую — значит, существую
Цитата Fr0sT @
Значит, неправильно готовишь. Мне помогает

Не поделишься рецептом?)
Если что-то не так, то результат всё равно будет таким, как ты захочешь;
if not True then Result := True else Result := True;
AutoSpring
Если что-то не так, то результат всё равно будет таким, как ты захочешь;
if not True then Result := True else Result := True;
Последнему столбцу делаешь Options.coAutoSpring=True, всё.
Codero ergo sum
// Программирую — значит, существую
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,1446 ]   [ 21 queries used ]   [ Generated: 19.09.18, 22:33 GMT ]