掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TListViewに棒グラフの線をリアルタイムに表示するには? (ID:5510)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Cの場合、ListView_GetSubItemRectはマクロで定義されているので見つからないのかもしれません。 私の作っているメーラのコードですが、一応サンプルとして載せます。 コメントが少ないのですが申し訳ない。 procedure TMailUtils.ListViewCustomDrawItem( Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var Rect: TRect; i, j: integer; s: String; List: TStringList; Msg: TIdMessage; begin for i := 0 to 4 do // 項目数 begin ListView_GetSubItemRect(ListView.Handle, Item.Index, i, LVIR_BOUNDS, @Rect); // 項目ごとの領域(TRect)を取得 if Item.Selected then begin // 選択 if cdsFocused in State then begin ListView.Canvas.Brush.Color := clHighlight; ListView.Canvas.Font.Color := clHighlightText; end else begin ListView.Canvas.Brush.Color := clSilver; ListView.Canvas.Font.Color := clBtnText; end; end else begin ListView.Canvas.Brush.Color := clWindow; ListView.Canvas.Font.Color := clWindowText; end; ListView.Canvas.FillRect(Rect); case i of 1://Subject begin s := Item.SubItems[0]; if (ListView.Tag = 1) or (ListView.Tag = -1) then begin Msg := GetMessageFromItem(Item, j); if Assigned(Msg) then begin List := TStringList.Create; try List.Text := Msg.Headers.Values['References']; if List.Count > 0 then for j := 0 to List.Count - 1 do begin s := ' ' + s; end; finally Msg.Free; List.Free; end; end; end; DrawText( ListView.Canvas.Handle, PCHAR(s), Length(s), Rect, DT_SINGLELINE or DT_END_ELLIPSIS); end; 2://From DrawText( ListView.Canvas.Handle, PCHAR(Item.SubItems[1]), Length(Item.SubItems[1]), Rect, DT_SINGLELINE or DT_END_ELLIPSIS); 3://Date DrawText( ListView.Canvas.Handle, PCHAR(Item.SubItems[2]), Length(Item.SubItems[2]), Rect, DT_SINGLELINE or DT_END_ELLIPSIS); 4://Size DrawText( ListView.Canvas.Handle, PCHAR(Item.SubItems[3]), Length(Item.SubItems[3]), Rect, DT_SINGLELINE or DT_RIGHT or DT_END_ELLIPSIS); end; // Frame3D(Sender.Canvas, Rect, clBlue, clNavy, 2); end; ListView.Canvas.Brush.Color := clWhite; DefaultDraw := False;//True;//cdsSelected in State; //フォントが壊れるバグの対応 with Sender.Canvas do if Assigned(Font.OnChange) then Font.OnChange(Font); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.