Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

ListView польз. отрис. столб. [Delphi]


lamp   (14.09.18 21:48

МЛЯ а может кто-нибудь объяснит мне логику работы ЛЩД (ой сорри - КОЛ) с ListView?

я про пользовательскую отрисовку столбов. Я попутала когда заценила код, предлагающий по циклу (по их кол-ву) запрашивать прогу о цвете текста.

Ладно бы это хотя бы работало.

ВОПРОС: надо точно велеть листвьюеру В КАЖДОЙ колонке печатать текст МОИМ цветом.
КАК?

PS Желательно в ListView.OnMessage


RusSun ©   (15.09.18 20:39[1]

Доброе время суток. to lamp.
Форум статичный и практически вымерший, поэтому ...
Итак начнем
Ваше сообщение Слегка все сумбурно. и многое вырвано из контекста.
"Телепатия это дар,..." Но все же попробуем.

Вы используете МСК? или как в коде ниже "не визуальное"?
Вы покажите код?
Если это трудно могу на яндекс диск ссылки кинуть?
Чтобы можно было скачать и посмотреть пример.
Почему именно: "Желательно в ListView.OnMessage ?"
Для примера:

program Project1;

uses
Windows,KOL;
{$R *.res}
type
PForm1 = ^TForm1;
TForm1 = object(TObj)
  Form,Lv: PControl;
public
 function SubitemDraw(Sender: PControl; DC: HDC; Dummy {always 0 !}: DWORD;
ItemIdx, SubItemIdx: Integer; const Rect: TRect;
ItemState: TDrawState; var TextColor, BackColor: TColor ): Boolean;
 // procedure Timer1Timer(Sender: PObj);
end;
 function TForm1.SubItemDraw(Sender: PControl; DC: HDC; Dummy {always 0 !}: DWORD;
ItemIdx, SubItemIdx: Integer; const Rect: TRect;
ItemState: TDrawState; var TextColor, BackColor: TColor ): Boolean;
begin
  if SubItemIdx>0 then Form.Caption:=form.Caption+int2str(SubItemIdx); //else Form.Caption:=form.Caption+int2str(SubItemIdx);

  BackColor:=$00FFFF*((ItemIdx+SubItemIdx) and 1);//шахматная раскраска

  Result:=true //если true, то единицы
  //если  Result:=false; //если true, то ничего не пишет

end;

var
Form1: PForm1;

procedure NewForm1(var Result: PForm1; AParent: PControl);
var x,y,n:Integer;
begin
New(Result, Create);
with Result^ do
begin
  Form := NewForm(AParent, 'Test ListView Subitem Draw ');
  Form.Add2AutoFree(Result);
  Applet := Form;
  Form.SetClientSize(520, 340).CenterOnParent;
  Lv:=newListView(Form,LvsDetail,[LvoNoSortheader,LvoRowSelect],nil, nil, nil).SetAlign(caClient);
  for x := 0 to 9 do Lv.lvColadd('rrr',taCenter,50);
  for y := 0 to 10 do begin
      n:= Lv.LVItemAdd('yyy');

     for x := 1 to 9 do
     
     if n mod 2=0 then
                             begin
     if x mod 2=0 then LV.LVItems[n,x]:='   ' else LV.LVItems[n,x]:='xxx'
                             end else
                             begin
      if x mod 2=0 then LV.LVItems[n,x]:='xxx' else LV.LVItems[n,x]:='   '
                             end;
     

                        end;
lv.onLVsubItemDraw := SubItemDraw
end; //end of result
end; //end of procedure

                           { begin
     if x mod 2=0 then LV.LVItems[n,x]:='xxx' else LV.LVItems[n,x]:='   '
                             end else
                             begin
      if x mod 2=0 then LV.LVItems[n,x]:='   ' else LV.LVItems[n,x]:='xxx'
                             end;  }

begin
NewForm1(Form1, nil);
Run(Form1.Form);
end.



program Project1;

uses
 windows,
 kol;
type  TOnEvent = procedure( Sender: PObj )of object;
{$R *.res}
var
form,REdit,Panel,
Test1,Button1:PControl;

//область для процедур
procedure Test1Click(Dummy:Pointer;Sender:PControl; var mouse:TMouseEventData);
const Colors: array[ 0..9 ] of TColor = ( clBlack, clNavy, clBlue, clAqua,
 clLime, clGreen, clOlive, clYellow, clRed, clMaroon );
var I, N: Integer;
begin
 N := REdit.Pos2Item( REdit.TextSize );
 for I := 1 to 10 do
 begin
   REdit.SelStart := REdit.TextSize;
   REdit.ReplaceSelection( 'Test' + Int2Str( N+I ) + #13#10, FALSE );
 end;
 for I := 0 to 9 do
 begin
   REdit.SelStart := REdit.Item2Pos( N+I );
   REdit.SelLength := REdit.Item2Pos( N+I + 1 ) - REdit.SelStart;
   REdit.RE_FmtFontColor := Colors[ I ];
 end;
 REdit.SelStart := 0;

end;
procedure clickbutton1(Dummy:Pointer;Sender:PControl; var mouse:TMouseEventData);
const Colors: array[ 0..9 ] of TColor = ( clWhite, clNavy, clBlue, clAqua,
 clLime, clGreen, clOlive, clYellow, clRed, clMaroon );
var I, N: Integer;
begin
 N := REdit.Pos2Item( REdit.TextSize );
 for I := 1 to 10 do
 begin
   REdit.SelStart := REdit.TextSize;
   REdit.ReplaceSelection( 'Test' + Int2Str( N+I ) + #13#10, FALSE );
 end;
 for I := 0 to 9 do
 begin
   REdit.SelStart := REdit.Item2Pos( N+I );
   REdit.SelLength := REdit.Item2Pos( N+I + 1 ) - REdit.SelStart;
   REdit.RE_FmtBackColor := Colors[ I ];
 end;
 REdit.SelStart := 0;
end;
Begin
form:=NewForm(Applet,'form').SetPosition( 192, 124 ).SetClientSize( 475, 281 ).centeronparent.Tabulate;
form.Border := 6;
REdit := NewRichEdit( form, [ eoMultiline ] ).SetAlign ( caClient );
REdit.Color := clWindow;
Panel := NewPanel( form, esLowered ).SetAlign ( caBottom ).SetSize( 0, 38 );
Panel.Border := 2;
Test1 := NewButton( Panel, 'Test1' ).SetPosition( 7, 7 ).SetSize( 137, 0 );
Button1 := NewButton( Panel, 'Test2' ).SetPosition( 151, 7 ).SetSize( 137, 0 );

//область для работы
Test1.OnClick:=TonEvent(MakeMethod(nil,@Test1Click));
Button1.OnClick:=TonEvent(MakeMethod(nil,@clickbutton1));
Run(form);
end.


https://yadi.sk/d/4wMquVWNmbkNTg
https://yadi.sk/d/Uh1k9tGf03zt_w


RusSun ©   (15.09.18 21:00[2]

Новичкам всегда трудно.) Мини офф. топ.
Всего два пути:
1) Обидеться и навсегда покинуть форум. Что не требует доп. усилий.
2) Пообщаться и попробовать сделать то, что задумали.


QAZ ©   (18.09.18 20:11[3]

2)хочу в ЛВ раскрашивать отдельные слова в приложении


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо