掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TListViewのHideSelectionの色について (ID:31026)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ちょっとやってみました. 少しばかり苦労しました.どこが?... う〜ん. とりあえずは動作しているようです.参考までに. Windows XP + Delphi7 Proで動作確認しています. CommCtrlをusesしてください. procedure TForm1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage; var DefaultDraw: Boolean); var AIndex : Integer; ARect : TRect; dwFormat : DWORD; i : Integer; StrItem : String; begin if not (ListView1.Focused) then begin if Item.Selected then begin AIndex := Item.Index; //行のRect領域を取得.以下でも可 //ListView_GetItemRect(ListView1.Handle,AIndex,ARect,LVIR_BOUNDS); ARect := Item.DisplayRect(drBounds); OffsetRect(ARect,3,0); //その領域を塗り潰す ListView1.Canvas.Brush.Color := clLime; ListView1.Canvas.FillRect(ARect); //文字(データ)の描画 SetBkMode(ListView1.Canvas.Handle,TRANSPARENT); dwFormat := DT_SINGLELINE or DT_VCENTER; for i:=0 to ListView1.Columns.Count-1 do begin case ListView1.Column[i].Alignment of taRightJustify: dwFormat := dwFormat or DT_RIGHT; taCenter : dwFormat := dwFormat or DT_CENTER; else dwFormat := dwFormat or DT_LEFT; end; //Rectの調整は適当に if i=0 then begin //Caption描画 ARect := Item.DisplayRect(drLabel); ARect := Rect(ARect.Left+3,ARect.Top,ARect.Right,ARect.Bottom); StrItem := Item.Caption; DrawText(ListView1.Canvas.Handle,PChar(StrItem),-1,ARect,dwFormat); end else begin //SubItemの描画 ListView_GetSubItemRect(ListView1.Handle,AIndex,i,LVIR_LABEL,@ARect); ARect := Rect(ARect.Left+6,ARect.Top,ARect.Right,ARect.Bottom); StrItem := Item.SubItems[i-1]; DrawText(ListView1.Canvas.Handle,PChar(StrItem),-1,ARect,dwFormat); end; end; //本来の描画は実行しない DefaultDraw := False; end; end;; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.