AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi In einem TListColumn (TListView) ein Bildchen darstellen

In einem TListColumn (TListView) ein Bildchen darstellen

Ein Thema von jfheins · begonnen am 28. Apr 2005 · letzter Beitrag vom 29. Apr 2005
Antwort Antwort
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#1

In einem TListColumn (TListView) ein Bildchen darstellen

  Alt 28. Apr 2005, 17:43
Hallo erstmal,

ich habe mir jetzt gerade eine TSortListView gebastelt (thx @ alci) in der man die Spalten sortieren kann.

Nun stellt sich die Frage, darzustellen, in welchem Zustand die ListView ist.

Ich dachte da an diese süßen Pfeile, aber mein Hauptproblem ist jetzt,
ein Bild oben in die Spaltenüberschrift zu bekommen.

Das ganze soll dann so
Code:
/\ Name | Telefonnummer | Punkte
(nach Name aufsteigend sortiert)
oder so
Code:
Name | Telefonnummer | \/ Punkte
(nach Punkten absteigend sortiert)
aussehen.

Ich könnte vielleicht über das Canvas des ListViews etwas machen, aber das scheint mir nicht allzu elegant ...

(Wenn einer genau soetwas schon fertig hat, darf er sich nat. auch melden ... )
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: In einem TListColumn (TListView) ein Bildchen darstellen

  Alt 28. Apr 2005, 17:46
Guck dir mal meine nonVCL Tutorials an. Dort gibt es ein Listview-Demo vomn Mathias dazu.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: In einem TListColumn (TListView) ein Bildchen darstellen

  Alt 28. Apr 2005, 18:29
Gut ... wie/wo muss ich jetzt das Bild angeben, dass er einfügen soll ?
Delphi-Quellcode:
procedure TSortListView.AddSortPic(const hwndHeader: HWND; iIdx: integer);
var
  hi : THDItem;
  buf : array[0..MAX_PATH]of char;
begin
  // aktuelle Headerdaten ermitteln
  hi.Mask := HDI_FORMAT or HDI_IMAGE or HDI_ORDER or HDI_TEXT or
    HDI_WIDTH;
  hi.pszText := buf;
  hi.cchTextMax := sizeof(buf);
  Header_GetItem(hwndHeader,iIdx,hi);

  // Sortbitmap hinzufügen
  hi.fmt := hi.fmt or HDF_BITMAP_ON_RIGHT;

  hi.fmt := hi.fmt or HDF_IMAGE;
  hi.iImage := SortDir;

  Header_SetItem(hwndHeader,iIdx,hi);
end;
Ich nehme als ersten Parameter das Handle der ListView und als zweiten einfach 1 ...
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: In einem TListColumn (TListView) ein Bildchen darstellen

  Alt 28. Apr 2005, 23:16
Hallo. Bitte nicht einfach nur den Quellcode nehmen. Ein Tutorial heißt so, weil sich irgendwer Mühe gegeben hat, um das ganze noch zu erklären. Ich hab´s versucht, soll das heißen. Du kannst mich gern kritisieren, wenn mir meine Erklärung und Beschreibung nicht gut genug gelungen ist. Aber du solltest sie wenigstens vorher lesen, weil ich alles erklärt habe, was mir wichtig erschien. Nämlich, dass es die Bildchen ab einer bestimmten Windows-Version schon gibt, und dass man sie nur bei älteren Versionen als Grafik mitliefern muss, usw.

Außerdem ist das ein nonVCL-Beispiel ist. Ob das mit der VCL-Listview auch so problemlos funktioniert, weiß ich nicht.

Aber wie gesagt, bitte auch den Beipackzettel lesen ...
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: In einem TListColumn (TListView) ein Bildchen darstellen

  Alt 29. Apr 2005, 18:15
Ok, werde ich in Zukunft machen.

Ich habe jetzt in der JVCL ein TJvListView entdeckt, das (glaube ich) alles kann, was ich brauche.

Für die Interessierten, hier mein Code:
(Ja, es klappt, nur noch nicht mit der Transparenz)

Wenn ihr das nicht in eine Kompo packen wollt, müsst ihr überall Self ersetzen, ist aber sauberer, in einer eigenen Klasse ...

Delphi-Quellcode:
procedure TSortListView.SetGlyph(Index: Integer; Glyph: TBitmap);
var
  hHeader: HWND;
  HDItem: THDItem;
  Buf: array[0..MAX_PATH]of char;
begin
  hHeader := Listview_GetHeader(Self.Handle);

  HDItem.Mask := HDI_FORMAT or HDI_IMAGE or HDI_ORDER or HDI_TEXT or HDI_WIDTH;
  HDItem.pszText := Buf;
  HDItem.cchTextMax := SizeOf (Buf);

  Header_GetItem(hHeader, Index, HDItem);

  HDItem.Mask := HDItem.Mask or HDI_BITMAP;
  HDItem.fmt := HDItem.fmt or HDF_BITMAP or HDF_BITMAP_ON_RIGHT;

  HDItem.hbm := Glyph.Handle;

  Header_SetItem(hHeader, Index, HDItem);
end;

procedure TSortListView.DelGlyph(Index: Integer);
var
  hHeader: HWND;
  HDItem: THDItem;
  Buf: array[0..MAX_PATH]of char;
begin
  hHeader := Listview_GetHeader(Self.Handle);

  HDItem.Mask := HDI_BITMAP or HDI_FORMAT or HDI_IMAGE or HDI_ORDER or HDI_TEXT or HDI_WIDTH;
  HDItem.pszText := Buf;
  HDItem.cchTextMax := SizeOf (Buf);

  Header_GetItem(hHeader, Index, HDItem);

  HDItem.fmt := HDItem.fmt and not HDF_BITMAP and not HDF_BITMAP_ON_RIGHT;

  Header_SetItem(hHeader, Index, HDItem);
end;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:16 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