Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit TListview-OnDrawItem (https://www.delphipraxis.net/13860-problem-mit-tlistview-ondrawitem.html)

Alexander 28. Dez 2003 10:10


Problem mit TListview-OnDrawItem
 
Hi,
ich versuche gerade einzelne Items der Listview zu im Stil zu verändern.
Ich versuche das so:
Ich habe ein kleines Record, in dem ich den stil (z.B. fsbold oder was auch immer) eintragen kann. Wenn ich nun ein Item hinzufüge, dann füge ich per AddObject als erstes SubItem praktisch einen Pointer auf das Object, also auf das Record.
Das funktioniert auch soweit.
Nur versuche ich jetzt dementsprechend zu "malen". Doch das wiederum klappt nicht so ganz :Sad:
Ich mal das Record und die OnDraw-Methode der Listview:
Delphi-Quellcode:
  TToDo = record
    Style: TFontStyle;
   end;
  PToDo = ^TToDo;

{ Ein Item hinzufügen: }
procedure TEditorWND.Button2Click(Sender: TObject);
var
 ToDo1 : PToDo;
begin
  new(ToDo1);
  Item := MainForm.EDIT_ToDo.Items.Add;
  Item.Caption := Editor.Text;
  Item.SubItems.AddObject(Editor.Text, TObject(ToDo1))
end;
{...}
procedure TMainForm.Edit_ToDoDrawItem(Sender: TCustomListView;
  Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
 with Sender as TListview do
  begin
   Canvas.Brush.Color := clYellow;
   Canvas.FillRect(Rect);
   Canvas.Font.Style := [PToDo(Item.SubItems.Objects[0])^.Style];
   Canvas.TextOut(Rect.Left + 2, Rect.Top, Item.Caption);
  end;
end;
Ich glaube das war alles. Es gibt auch keine Fehler bis auf, dass halt nicht funktioniert... :mrgreen:
Ich hoffe ihr könnt mir helfen

SirThornberry 28. Dez 2003 10:12

Re: Problem mit TListview-OnDrawItem
 
was genau funktioniert nicht?? Werden nur die Einstellungen aus dem Record nicht verwendet oder wird auch gelb nicht gesetzt??

Alexander 28. Dez 2003 10:15

Re: Problem mit TListview-OnDrawItem
 
Also wie gesagt gibt es keine Fehler, das eintragen ins Record klappt auch wunderbar, nur das ändern des Styles, klappt nicht :?
Wäre nett wenn du mir helfen könntest.

SirThornberry 28. Dez 2003 10:22

Re: Problem mit TListview-OnDrawItem
 
laut deiner Anweisung sieht es so aus als ob du den hintergrund vom Item gelb machen willst?!
wenn ich in die Ereignisprocedure "ListView1CustomDrawItem" bekommt das Item auch den entsprechenden Hintergrund und Style
Delphi-Quellcode:
  with Sender as TListview do
  begin
    Canvas.Brush.Color := clGreen;
    Canvas.Font.Style := [fsItalic];
  end;
wenn ich allerdings was in OnDrawItem schreibe wird das komplett ignoriert... probiers also mal mit "ListView1CustomDrawItem"

Alexander 28. Dez 2003 10:37

Re: Problem mit TListview-OnDrawItem
 
Jupp, du hast recht. Danke :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz