Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 3 Spalte einer ListView (https://www.delphipraxis.net/102948-3-spalte-einer-listview.html)

crasher1985 7. Nov 2007 13:11


3 Spalte einer ListView
 
hallo ich möchte folgendes Umsetzen,

ich habe ein ListView mit Checkboxen und insgesamt 5 Spalten.
Desweiteren habe ich eine ImageListe angelegt. Nun möchte ich in der 3,4 und 5 Spalte des Listview diese Bilder anzeigen sozusagen als zusätzlichen Status in abhängigkeit einer von mir gemachten Funktion.

Also wie kann man überhaupt auf die 3 palte zugreifen? Subitems ist ja nur die 2'te und wie kann man die Bilder der Imagebox dort einfügen?

Danke für die Hilfe

Bernhard Geyer 7. Nov 2007 13:15

Re: 3 Spalte einer Listbox
 
Entweder du schreibst dir einiges an Code für das Ownerdraw-Ereignis des "normalen" Listbox/Listview oder du nimmst/kaufst dir Grid/ListView-Komponenten die mehr an features bieten wie z.B. das ElPack

crasher1985 7. Nov 2007 13:18

Re: 3 Spalte einer Listbox
 
mmhh ich kann doch aber der Normalen ListView Komponente ImageListen zuweisen hab ich gesehen da werd ich die Images doch wohl auch anzeigen können ohne großen Aufwand oder?

Und vorallem wie kann ich auf die 3 Spalte zugreifen das ist das was mich am ehsten intressiert

Bernhard Geyer 7. Nov 2007 13:20

Re: 3 Spalte einer Listbox
 
Zitat:

Zitat von crasher1985
mmhh ich kann doch aber der Normalen ListView Komponente ImageListen zuweisen hab ich gesehen da werd ich die Images doch wohl auch anzeigen können ohne großen Aufwand oder?

Und vorallem wie kann ich auf die 3 Spalte zugreifen das ist das was mich am ehsten intressiert

Für erste Spalte ja - Für die anderen Spalten ist es nicht vorgesehen -> OwnerDraw.

leddl 7. Nov 2007 13:22

Re: 3 Spalte einer Listbox
 
Zitat:

Zitat von crasher1985
wie kann man überhaupt auf die 3 palte zugreifen? Subitems ist ja nur die 2'te und wie kann man die Bilder der Imagebox dort einfügen?

Wie kommst du drauf, dass SubItems nur die 2. Spalte ist? :gruebel: SubItems[0] ist die 2. Spalte, SubItems[1] die 3. usw...
Wie Bernhard schon gesagt hast, wirst du aber Icons in anderen Spalten als der ersten in OwnerDraw selbst zeichnen müssen. ;)

Btw: Änder doch bitte mal den Titel. Ich hab mich grade schon gewundert, seit wann Listboxen 3 Spalten haben können :stupid:

crasher1985 7. Nov 2007 13:32

Re: 3 Spalte einer ListView
 
ok das hab ich nun steh ich vor dem problem hab hier im Forum verschieden Themen zu hintergrundfarben ändern per CustomDrawSubItem gefunden. Nun möchte ich aber ein bild aus einer Imagelist wie soll ich das machen?

Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
var R: TRect;
    Text: String;
begin

if (Item.Index = 1) and (SubItem = 1) then
  begin
    //get subitems rect
    ListView1CustomDrawSubItem(Sender.Handle, Item.Index, SubItem, cdsDefault , @R);
    Sender.Canvas.Brush. :=
    Sender.Canvas.FillRect(R);
    DefaultDraw := False;
  end

end;

crasher1985 7. Nov 2007 15:23

Re: 3 Spalte einer ListView
 
kann keiner helfen?

Muetze1 7. Nov 2007 15:26

Re: 3 Spalte einer ListView
 
Schau doch mal in die Hilfe zu Delphi-Referenz durchsuchenTImageList. Diese hat eine Methode zum malen eines Eintrages auf einen Canvas. In der Routine die du gepostet hast, hast du ein Rechteck und ein Canvas. Nun nur noch beides kombinieren - so schwer ist das ist.

generic 7. Nov 2007 15:46

Re: 3 Spalte einer ListView
 
Du solltest auf dem VirtualStringTree von Mike Lischke umsteigen.
Der hat die Funktionen im Bauch.

Kostenlos inkl. Source
Soft Gems

crasher1985 7. Nov 2007 19:45

Re: 3 Spalte einer ListView
 
mmhh umsteigen dauert jetzt zu lange mein Chef verlangt von mir am Freitag ne Final version nur irgendwie komm ich beim Zeichen der Images nicht weiter weil ich nicht weiss woher ich den Index für X Und Y bekomme.

BITTE HELFT MIR :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 Uhr.
Seite 1 von 2  1 2      

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