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/)
-   -   Listbox mit Checkboxen (https://www.delphipraxis.net/170382-listbox-mit-checkboxen.html)

Mattze 14. Sep 2012 11:26

Listbox mit Checkboxen
 
Hallo,

also TCheckbox macht es nicht. (Es sei denn, es gäbe eine Möglichkeit auch Header - also Zeilen ohne Checkbox am Anfang - normal zu markieren. Ohne Focus zeigt er gar nichts. Mit Focus nur ein eine gestrichelte Linie um den gewählten "header-Item".)

Eine andere Möglichket:
Eine gewöhnliche Listbox mit Checkboxen erweitern (per DrawFrameControl - siehe bei den Schweizer, dort mit Radiobutton).
Das sieht zwar schon ganz schön aus, aber:
1. Sobald ein Item markiert wird, wird auch die Checkbox "gecheckt". Soll sie gar nicht, sondern nur, wenn man das eben explizit checked. Geht das zu machen?
2. Wie kann ich die Werte der Checkbox per Programm auslesen bzw. setzen?

Ich denke da zurzeit etwas komplizierter. Evtl. kann man ja jedem Item eine TCheckbox zuordnen als Object und,ähnlich wie einen Tedit entsprechend positionieren. Aber, ob das sauber ist? Geht's vielleicht doch einfacher, direkter?

Gruß
Mattze

DeddyH 14. Sep 2012 11:29

AW: Listbox mit Checkboxen
 
TCheckListbox?

Klaus01 14. Sep 2012 11:38

AW: Listbox mit Checkboxen
 
Zitat:

Zitat von DeddyH (Beitrag 1182885)

.. gibt es erst ab XE2 - oder?

Grüße
Klaus

Steku 14. Sep 2012 11:40

AW: Listbox mit Checkboxen
 
Zitat:

Zitat von Klaus01 (Beitrag 1182886)
Zitat:

Zitat von DeddyH (Beitrag 1182885)

.. gibt es erst ab XE2 - oder?

Zumindest bei den Jedis ist auch eine dabei...

Gruß
Steku

DeddyH 14. Sep 2012 11:40

AW: Listbox mit Checkboxen
 
Mein Delphi 7 hat die bereits auf dem Reiter "Zusätzlich".

Klaus01 14. Sep 2012 11:43

AW: Listbox mit Checkboxen
 
Zitat:

Zitat von DeddyH (Beitrag 1182888)
Mein Delphi 7 hat die bereits auf dem Reiter "Zusätzlich".

ah ja - ist mir vorher nie aufgefallen ..
Grüße
Klaus

s.h.a.r.k 14. Sep 2012 11:45

AW: Listbox mit Checkboxen
 
@Mattze: was für eine Delphi-Version hast du denn überhaupt? Kannst diese in deinem Profil vervollständigen!

Mattze 14. Sep 2012 11:52

AW: Listbox mit Checkboxen
 
Hallo,

sind ja schnell viele Antworten... Danke!
Ich habe Delphi 7 pro.

Ich habe leider etwas vergessen.
Das 3. Wort sollte nicht "TCheckbox", sondern "TCheckLISTBox" heißen.
Das geht allerdings auch aus dem nächsten Satz hervor, oder kennt jemand eine Eigenschaft Header für eine TCheckbox? Was soll das sein?

Jedenfalls geht eine TCheckListbox wegen der Sonderbehandlung bei Headermarkierungen nicht!
Usw. Siehe meine Frage.

Gruß
Mattze

himitsu 14. Sep 2012 12:11

AW: Listbox mit Checkboxen
 
Ich hoffe mal, daß man aus der Starter die Suchfunktionen nicht entfernt hat...

- klick in die Komponentenpalette und tippe "checklistbox" ein
- oder F6 drücken und gib "tchecklistbox" ein (der Fokus muß natürlich im Formeditor liegen)

[edit]
Header ... hmmm *guck*

[add]
Zitat:

Jedenfalls geht eine TCheckListbox wegen der Sonderbehandlung bei Headermarkierungen nicht!
Was genau meinst du damit?

DeddyH 14. Sep 2012 12:21

AW: Listbox mit Checkboxen
 
Was zum Kuckuck meinst Du eigentlich mit Header? So etwas wie bei Grids? Hilft dann TListview ggf. weiter?

p80286 14. Sep 2012 12:22

AW: Listbox mit Checkboxen
 
Zitat:

Zitat von Mattze (Beitrag 1182883)
Hallo,

also TCheckbox macht es nicht. (Es sei denn, es gäbe eine Möglichkeit auch Header - also Zeilen ohne Checkbox am Anfang - normal zu markieren. Ohne Focus zeigt er gar nichts. Mit Focus nur ein eine gestrichelte Linie um den gewählten "header-Item".)

Zumindestens die "Profis" unter uns haben vielleicht eine Vorstellung davon was Du möchtest. (welcher Kunde kann schon genau formulieren was er will, das trainiert)

Für alle anderen, könntest Du bitte Dein Anliegen etwas verständlicher beschreiben?

Gruß
K-H

Mattze 14. Sep 2012 12:37

AW: Listbox mit Checkboxen
 
Hallo himitsu,

danke für die schnelle Antwort.

"Sonderbehandlung": siehe 2.-4. Satz meiner Frage, die in Klammern.

Konkret bei mir:
Ich habe ein Listview und eine checklistbox. In der Checklistbox sind verschiedene Inhalte. Mal alles mit checkboxen (alle möglichen Attribute), mal alles ohne (zum Bsp. Pfade).
Wenn ich auf einen item in der Listview clicke (ein Dateiname), soll der "dazugehörige" Eintrag in der Checklistbox markiert werden.
Bei den Einträgen mit Checkbox ist das OK. Ganz normal, wie auch bei einer einfachen Listbox.
Bei den Einträgen ohne checkbox (als Header formatiert) funktioniert das nicht.
Hat die Checklistbox keinen Focus, wird gar nichts markiert (bzw. angezeigt).
Hat sie den Focus, wird nur ein Markierungsrahmen (gestrichelte Linie) um das gewählte Item angezeigt.
Ich hätte das aber gerne auch "normal" markiert.
Bisher habe ich da aber keine Möglichkeit gefunden.

Bei einer normalen Listbox ist es zwar kein Problem, eine Checkbox reinzumalen (mit DrawFocusControl). Die wird aber "gecheckt", wenn der Item markiert wird. Soll sie natürlich nicht. Soll ja unabhängig funktionieren!

Ich hoffe, ist jetzt etwas klarer geworden, worum es mir geht.

Gruß
Mattze

@DeddyH: Siehe CheckListBox. Da gibt es die Eigenschaft Header! Damit kann man die Checkboxen für Items ausblenden, wenn man will.

Popov 14. Sep 2012 13:00

AW: Listbox mit Checkboxen
 
@Mattze

Ich mußte zwar erst viel mal lesen was du geschrieben hast, u. a. auch weil auch mir die Eigenschaft Header nicht bekannt war (jetzt kenne ich sie), aber jetzt habe ich verstanden was du fragst.

Auf deine Frage #1: sowas in der Art habe ich auch schon gemacht, auch wenn es sich nicht um Checkboxen handelte. Ist schon zu lange her um Einzelheiten zu nennen, aber ich konnte damals auf den Mausklick innerhalb eines Bereiches reagieren. Ist bei Checkbox letztendlich auch nicht anders.

Auf deine Frage #2: meinst du Auslesen bei CheckListBox oder wenn du aus Listbox deine eigene Checklistbox machst?

Mattze 14. Sep 2012 13:55

AW: Listbox mit Checkboxen
 
Hallo Popov,

inzwischen habe ich rausbekommen, dass die Fragen 1. und 2. eng zusammenhängen.
Ist ein Item markiert, so ist er "gecheckt".
"Unchecked" man ihn, ist er auch nicht mehr markiert.

Also:
Markiert = "gecheckt",
nicht markiert = nicht "gecheckt"

Insofern ist der Zugriff auf die Werte der Checkbox für einen item klar. Das geht also normalerweise über seine Markierung.

Genau das will ich aber eigentlich nicht. Ich möchte gerne die Checkbox unabhängig von der Markierung setzen bzw. löschen können.
Im Prinzip heißt das, dass ich jedem Item 2 verschiedene Eigenschaften zuordnen möchte:
Markiert oder nicht markiert und davon unabhängig "gecheckt" oder nicht "gecheckt".
Das scheint aber so (mit DrawFocusControl) nicht zu funktionieren.

Bleibt eigentlich nur die kompliziertere Variante zum Schluss meiner Fragen.
Oder ich muss das ganze Programm von der Logistik her etwas umbauen. Das ginge auch, habe ich inzwischen gemerkt.

Gruß
Matthias

Hobby-Programmierer 14. Sep 2012 18:35

AW: Listbox mit Checkboxen
 
Nabend,
ich habe jetzt kein delphi hier zum testen, aber ich meine das TListView doch eigentlich Checkboxen von Haus aus dabei hat :gruebel:

Popov 14. Sep 2012 19:30

AW: Listbox mit Checkboxen
 
Hobby-Programmierer, das ist ihm klar, aber er will, wenn er auf Items klickt die als Header markiert sind (siehe entsprechende Eigenschaft in OH), dann sollen sie die Farbe einnehmen die in der Regel selektierte Items haben (diese Blau). In diesem Fall behält das Header-Item seine Originalfarbe (Weiß). Lediglich der Fokus wird angezeigt, nicht die Selektion.


Ok, auf die Schnelle: die Eigenschaft Header bewirkt einiges, so z. B., dass dieser Item keine Checkbox hat. Damit kann man sozusagen eine Checklistbox in mehrere Bereiche Teilen und die Header-Items sind dann die Überschriften.

p80286 14. Sep 2012 21:00

AW: Listbox mit Checkboxen
 
Zitat:

Zitat von Mattze (Beitrag 1182916)
Hallo Popov,

inzwischen habe ich rausbekommen, dass die Fragen 1. und 2. eng zusammenhängen.
Ist ein Item markiert, so ist er "gecheckt".
"Unchecked" man ihn, ist er auch nicht mehr markiert.

Also:
Markiert = "gecheckt",
nicht markiert = nicht "gecheckt"

Was ist "markiert" es gibt selected und/oder checked.
checked ist das Häkchen, selected der blaue Hintergrund.
Da solllte man mit OnDrawItem eine echte Chance haben das gewünschte zu realisieren.

Gruß
K-H


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