![]() |
ListView CheckBoxen disablen
Hallo,
wie kann man in einem ListView CheckBoxen disablen? (also grau) mfg Helmi |
Re: ListView CheckBoxen disablen
***Update***
hat da jemand ne Idee wie das oben geht und obs überhaupt geht? |
Re: ListView CheckBoxen disablen
könntest du mal n bißchen genauer beschreiben was du meinst? meines wissen kann man in ner listbox nämlich gar keine checkboxen darstellen :gruebel:
|
Re: ListView CheckBoxen disablen
Hi Helmi!
Checkboxen in Listviews? Erklär mal wie die da reinkommen... Greetz alcaeus |
Re: ListView CheckBoxen disablen
hallo
CheckBoxen in ListView ist doch ganz einfach ListView nehmen, viewstyle := vsReport, Checkboxes := true und schon ist in der ersten Spalte in den Zeilen eine CheckBox zu sehen :-) Was ich will: ich will die CheckBoxen in der ListView disablen (Enabled := false) so wie bei einer normalen CheckBox (CheckBox.Enabled := false) mfg Helmi |
Re: ListView CheckBoxen disablen
Ich denke, er meint eine CheckListBox
Die Checkboxen kann man folgender Maßen disablen:
Delphi-Quellcode:
Wobei n dann logischer Weise der Index-Wert deines Listeneintrages ist, den du disablen möchtest.
ChecklistBox1.ItemEnabled[n] := false;
EDIT: Mist, zu spät ;) Wohl doch keine CheckListBox :( |
Re: ListView CheckBoxen disablen
ne ne ne
ich meine schon ne ListView!!! |
Re: ListView CheckBoxen disablen
Liste der Anhänge anzeigen (Anzahl: 1)
hier mal ein Beispiel welche CheckBoxen ich meine
|
Re: ListView CheckBoxen disablen
hab mich grad durch die delphi-hilfe aller beteidigten komponenten gewälzt und so wie's aussieht ist nicht vorgesehen gewesen die checkboxen zu disablen...
sprich wenn einer ne möglichkeit weiß nur über umwege würd ich ma sagen... |
Re: ListView CheckBoxen disablen
mmmh
shit muss ich mir was anderes einfallen lassen |
Re: ListView CheckBoxen disablen
erstell dir doch n eigenes panel oder ähnliches das eine dynamische liste von checkboxen verwaltet, das geht halbwegs schnell und sollte auch nich das problem darstellen...
|
Re: ListView CheckBoxen disablen
Zitat:
mfG mirage228 |
Re: ListView CheckBoxen disablen
und wie macht mann das mirage228??
|
Re: ListView CheckBoxen disablen
Zitat:
Wenn Du erstmal das Handle hast, kannst du mit Entsprechenden API Funktion den Stil WS_ENABLED von der Checkbox "wegnehmen". mfG mirage228 |
Re: ListView CheckBoxen disablen
Ich glaube es gibt hier keinen Grund sich den Code mit hässlichen API Befehlen oder FindWindow zu versaubeuteln. ;)
Ich habe gerade keine Delphi zur Hand, ich denke aber mal, dass es auch in Delphi einen Event á la TListView.ItemCheck gibt. ;) Dort könntest du einfach ein Verändern des Wertes verhindern. Da ich jetzt nicht weiß wie es in Delphi aussieht, habe ich's mal in C# geschrieben:
Code:
void lvTestItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
{ // Irgendeine Liste, in der die Indizes der Items stehen, // deren CheckBoxes nicht geändert werden dürfen ArrayList Indices2BeDisabled = new ArrayList(); Indices2BeDisabled.AddRange(new int[3] { 1, 3, 5 }); if (Indices2BeDisabled.Contains(e.Index) ) e.NewValue = e.CurrentValue; } |
Re: ListView CheckBoxen disablen
C kann ich ned entziffern :-(
|
Re: ListView CheckBoxen disablen
Zitat:
Nachdem ich mich vor ein D7 geschwungen hatte, musst ich feststellen: :shock: Da gibt's ja keinerlei Implementierung zum Abfangen eines Klicks auf die Checkboxes! :evil: Auch ein Blick in die Soßen der VCL brachte da nichts "hübsches" hervor" Zum Bleistift gibt es noch nicht mal einen HitTest für die CheckBoxes! Zitat:
Delphi-Quellcode:
Damit könntest du festlegen bei welchen Items der User die CheckBox nicht setzen darf.
type
TForm1 = class(TForm) ... private Indices2BeDisabled: set of 0..255; ... end; ... procedure TfrmDoSomething; begin ... Indices2BeDisabled := [1, 3, 5]; ... end; procedure TfrmTest.lvTestChanging(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean); begin AllowChange := not (TListView(Item.ListView).Checkboxes and (ctState = Change ) and // StateIcon == CheckBox *g* (Item.Index in Indices2BeDisabled)); end; Nachtrag: Da der Typ SET nur 255 Elemente enthalten darf, würden damit auch nur 255 disabled Items möglich sein. |
Re: ListView CheckBoxen disablen
hallo Robert,
danke für deinen Code des muss ich mir mal zu Gemüte führen... aber wegen deines "Problems" mit dem Klick auf die CheckBox... ich hab da was bei unseren Schweizer Freunden gesehen ![]() mfg Helmi |
Re: ListView CheckBoxen disablen
Zitat:
Delphi-Quellcode:
So ersparst du dem Programm die unötigen Aufrufe von GetItemAt & GetHitTest. ;)
AllowChange := not (TListView(Item.ListView).Checkboxes and (ctState = Change ));
Willst du aber, wie ich annnahm, nur bestimmte CheckBoxes deaktivieren willst kommst du mit meinem vorherigen Post besser weg. Für Items.Count > 255 müsstest du ein array of boolean statt dem set nehmen. |
Re: ListView CheckBoxen disablen
:love: ne ne -
entweder alle oder gar keine :-) kannst du mir da vielleicht mal kurz ein kleines beispiel-Projekt machen? (*megaliebguck*) :love: mfg Helmi |
Re: ListView CheckBoxen disablen
Zitat:
Du musst nur den Code in den OnChange-Event des ListViews packen. Was ist denn daran so schwer? |
Re: ListView CheckBoxen disablen
ja - verzeihung
habs gesehen und schon getestet :-) :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz