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 Button in ListView (https://www.delphipraxis.net/4909-button-listview.html)

CalganX 16. Mai 2003 13:41


Button in ListView
 
Hi,
ich möchte in eine Spalte einer ListView einen Button einfügen. Wie mache ich das? Des Weiteren möchte ich auf den Klick auf diesen Button reagieren.
Aus organistorischen Gründen (ist nicht mein Projekt, erweitere das nur für einen Kollegen), kann ich leider nur die Original ListView verwenden, und nicht diese TDynamicListView (oder wie auch immer das heißt).

Chris

Stanlay Hanks 16. Mai 2003 13:49

Ich glaub nicht, dass das einfach so geht. Vielleicht setzt du einfach einen Button auf das Listview. Dazu müsstest du nur wissen, wie viele Pixel hoch ein Eintrag is und dann kannst du das ja mit ItemIndex inrgendwie ausrechnen.

Man liest sich. Stanlay 8)

CalganX 16. Mai 2003 14:21

*lol* Ja, so würde es auch gehen... :mrgreen:
Vielleicht noch zuerwähnen: der Button muss dynamisch erstellt werden.

Chris

Stanlay Hanks 16. Mai 2003 14:40

Ich bins nochmal... Muss es denn umbedingt ein Button sein? Du könntest ja auch einfach das Icon neben diesem Eintrag ändern oder so...

CalganX 16. Mai 2003 14:46

Hi,
öhm? Welches Icon meinst du? Ich nutze ein ListView und keine TreeView!

Chris

Stanlay Hanks 16. Mai 2003 14:48

Ja und ? Ein ListView hat zwei Eigenschaften wo man ImageLists angeben kann: LargeImages und SmallImages.

CalganX 16. Mai 2003 14:53

Achso... Trotzdem brauche ich einen Button...

Also, Erklärung:
Ich code gerade einen Movie-Organizer (ich mach das für einen Kollegen; ich brauch keinen anderen Source). Dabei kann man ein Bild einfügen. Dieses Bild soll auf Knopfdruck angezeigt werden.
Nun gibt es die Möglichkeit, einen einzigen Button anzuzeigen. Ich würde aber gerne, dass anders machen: wenn ein Bild dafür existiert, dann soll ein Button angezeigt werden...

Chris

Stanlay Hanks 16. Mai 2003 14:54

Und warum änderst du nicht einfach das Icon, wenn ein Bild existiert :wink: Nö, spaß bei seite: vielleicht könntest du ja dann den einen Button einfach unsichtbar machen, wenn kein Bild vorhanden ist, oder aber ein KontextMenu dafür machen.

Luckie 16. Mai 2003 15:12

Und was wäre mit dem CheckListbox-Stil vom Listview? Wenn ein Bild da ist wird ein Haken reingemacht und beim Doppleklick, Shortcut oder über einen Eintrag im Popup-menü vom Listview kann man es sich dann anzeigen lassen.

CalganX 16. Mai 2003 15:17

Hi,
ok... so werde ich das machen... :roll:
Danke!

Chris

Luckie 16. Mai 2003 17:07

Liste der Anhänge anzeigen (Anzahl: 1)
Hier hast du deine Buttons im Listview.

Stanlay Hanks 16. Mai 2003 17:25

Hätte ich warscheinlich so nicht fertig gebracht. Aber ein Listview hat eine Vielzahl von Ansichtsmöglichkeiten. In Spalten usw. und wenn man die Spaltenbreite ändert, bleibt der Button wo er is.

Luckie 16. Mai 2003 17:27

Na gut, man muß dann eben nur irgendwie auf die Änderung der Spaltenbreite reagieren. Aber dazu hatte ich keine Lust mehr. Habe ich ja auch nur so in fünf Minuten in den Editor gekloppt.

Stanlay Hanks 16. Mai 2003 17:31

War ja kein Vorwurf, ich hätte dazu wahrscheinlich 5mal so lang gebraucht.

CalganX 16. Mai 2003 17:51

Hi,
danke!!! Werde mir das gleich ansehen...

Chris

Luckie 16. Mai 2003 18:01

Liste der Anhänge anzeigen (Anzahl: 1)
So, damit auch die letzten Nörgler Ruhe geben. Hier die perfekte Version.

(15 Minuten) :wink:

Stanlay Hanks 16. Mai 2003 18:26

Damit ich auch noch was gemeckert hab :mrgreen: : Es dauert bei mir an die 5 Sekunden, bis sich die Buttons anpassen. Man müsste irgendwie ein Repaint reinbringen, dann würde das noch schneller gehen. Verstehe aber auch nicht, warum es so lange dauert. Abe rwie gesagt, um auf sowas zu kommen, bräuchte ich ne halbe ewigkeit. Und an 15 Minuten is auch schwer hinzukommen. Man liest sich, Stanlay 8)

Luckie 16. Mai 2003 18:35

Du hast XP? Das hat mir auch Daniel gerade berichtet. Unter 2000 läuft alles wunderbar. Die Buttons reagieren sofort auf die Größen- und Positionsänderung der Spalte.

Darum müßte sich also mal jemand kümmern, der XP hat.

Christian Seehase 16. Mai 2003 18:39

Moin Zusammen,

vielleicht könnte es helfen, wenn man die Schleife in der die Button erzeugt werden in ein

Delphi-Quellcode:
ListView1.Items.BeginUpdate;
try
// for Schleife
finally
  ListView1.Items.EndUpdate;
end;
"einrahmt"

und/oder

den Parent erst am Ende der Schleife zuweist.

Stanlay Hanks 16. Mai 2003 20:19

Ja ich hab XP (Home).

Chewie 17. Mai 2003 18:31

Zitat:

Zitat von Christian Seehase
Moin Zusammen,

vielleicht könnte es helfen, wenn man die Schleife in der die Button erzeugt werden in ein

Delphi-Quellcode:
ListView1.Items.BeginUpdate;
try
// for Schleife
finally
  ListView1.Items.EndUpdate;
end;
"einrahmt"

und/oder

den Parent erst am Ende der Schleife zuweist.

Ich versuch das Gleiche gerade mit einer Combobox, und ersteres bewirkt ein Dauerflimmern, zweiteres garr nichts. Es dauert immer noch ca. 5 s.

Luckie 17. Mai 2003 18:34

Sorry, da kann ich im Moment auch nicht helfen, da ich nur Windoz2000 habe und da läuft es prima.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 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