AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TListview / VirtualMode / Checkbox und Bitmaps
Thema durchsuchen
Ansicht
Themen-Optionen

TListview / VirtualMode / Checkbox und Bitmaps

Ein Thema von Jens Schumann · begonnen am 10. Jan 2006 · letzter Beitrag vom 30. Aug 2007
Antwort Antwort
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#1

TListview / VirtualMode / Checkbox und Bitmaps

  Alt 10. Jan 2006, 16:11
Hallo,
wie schaffe ich es bei einem TListview, der im VirtualMode läuft, dass die CheckBoxen und Images angezeigt werden?
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: TListview / VirtualMode / Checkbox und Bitmaps

  Alt 13. Jan 2006, 09:13
Hallo,

ich hoffe, das Problem ist noch aktuell:

a) Die Images kannst Du anzeigen, wenn Du im OnData-Ereignis dem Item den ImageIndex zuweist:
Delphi-Quellcode:
procedure TForm1.ListView1Data(Sender:TObject; Item:TListItem);
var myData;
begin
  if (Item=nil) then Exit;
  // Deine Daten aus der virtuellen Liste
  // myData:=
  with Item do
  begin
    Caption:=[Irgendetwas];

    ImageIndex:=0;
  end; // with
end;

b) Die Anzeige der CheckBoxen ist schon etwas aufwendiger:

Dazu musst Du das OnAdvancedCustomDrawItem benutzen.
Delphi-Quellcode:
uses
  ComCtrl;

procedure TForm1.ListView1AdvancedCustomDrawItem(Sender:Tobject; ....);
const
  CtrlState:array[Boolean] of Integer=(DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var r, dr:TRect;
    myData;
begin
  if (Item=nil) then Exit;
  // Deine Daten aus der virtuellen Liste, in der der Status des Eintrages stehen muss
  // myData:=
  with Sender.Canvas do
  begin
    dr:=Item.DisplayRect(drBounds);
    r:=Bounds(dr.Left+1, dr.Top+1, 13, 13);
    DrawFrameControl(Handle, r, DFC_BUTTON, CtrlState[myData.CheckStatus]);
  end; // with
end;
[edit]Fehler, auf den jim_raynor im Post weiter unter hingewiesen hat, beseitigt.[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: TListview / VirtualMode / Checkbox und Bitmaps

  Alt 13. Jan 2006, 09:17
Zitat von Gollum:
Hallo,
ich hoffe, das Problem ist noch aktuell:
Das Thema ist sogar noch brandaktuell. Vielen Dank werde ich über's Wochenende testen.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#4

Re: TListview / VirtualMode / Checkbox und Bitmaps

  Alt 13. Jan 2006, 09:47
Anstatt ItemIndex solltest du ImageIndex verwenden Aber ich verwechsel das auch ständig ...
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: TListview / VirtualMode / Checkbox und Bitmaps

  Alt 13. Jan 2006, 09:58
@jim_raynor
Du hast Recht. Da ist mir ein kleiner Schreibfehler unterlaufen.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#6

Re: TListview / VirtualMode / Checkbox und Bitmaps

  Alt 13. Jan 2006, 17:49
Hallo Gollum,
brilliant - vielen Dank.

Als ich die Lösung für den ImageIndex las war meine Frage peinlich. Da hatte ich wohl ein Brett vor dem Kopf
I come from outer space to save the human race
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#7

Re: TListview / VirtualMode / Checkbox und Bitmaps

  Alt 30. Aug 2007, 10:25
Hallo Gollum,

ich den Code Schnipsel von dir sehr gut brauchen können.
leider hab ich aber keine Idee an welcher Stelle man eingreifen muss um das Clicken auf die Checkbox in eine Änderung des Zustandes umzusetzen.

Kannst mir jemand helfen?


mfg


DerDan
nichts ist so schön wie man es sich vorstellt
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: TListview / VirtualMode / Checkbox und Bitmaps

  Alt 30. Aug 2007, 12:53
Hallo,

dazu musst Du das Ereignis OnMouseDown der Listview benutzen.

Delphi-Quellcode:
procedure TForm1.ListView1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var aItem :TListItem;
    ht :THitTests;
    myData:;
begin
  aItem:=ListView1.GetItemAt(x, y);
  ht:=ListView1.GetHitTestInfoAt(x, y);
  if (aItem<>nil) and (ht=[htOnStateIcon]) then
  begin
    // Deine Daten aus der virtuellen Liste
    // myData:=
    myData.CheckStatus:=not myData.CheckStatus;
  end;
end;
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#9

Re: TListview / VirtualMode / Checkbox und Bitmaps

  Alt 30. Aug 2007, 15:43
Vielen Dank @Gollum,


das einzige was in deinem Code noch fehlt ist

ListView1.UpdateItems (aItem.Index, aItem.Index) nach

myData.CheckStatus:=not myData.CheckStatus; aber sonst echt super, hab nur nicht damit gerechnet das es ein bisl aufwändig ist


mfg

DerDan
nichts ist so schön wie man es sich vorstellt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 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