AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView CheckBoxen disablen

Ein Thema von Helmi · begonnen am 1. Sep 2004 · letzter Beitrag vom 2. Sep 2004
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#11

Re: ListView CheckBoxen disablen

  Alt 2. Sep 2004, 13:07
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...
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#12

Re: ListView CheckBoxen disablen

  Alt 2. Sep 2004, 13:08
Zitat von Helmi:
mmmh
shit

muss ich mir was anderes einfallen lassen
Du könntest versuchen mit FindWindowEx oder EnumChildWindows versuchen, die CheckBox zu finden und dann per API diese zu disablen.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.325 Beiträge
 
Delphi XE2 Professional
 
#13

Re: ListView CheckBoxen disablen

  Alt 2. Sep 2004, 13:09
und wie macht mann das mirage228??
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#14

Re: ListView CheckBoxen disablen

  Alt 2. Sep 2004, 13:18
Zitat von Helmi:
und wie macht mann das mirage228??
Hier im Forum findest du unmengen an Codes, wie man Kindfenster (in dem Fall die Checkboxes) eines Fensters (hier der ListView) findest.
Wenn Du erstmal das Handle hast, kannst du mit Entsprechenden API Funktion den Stil WS_ENABLED von der Checkbox "wegnehmen".

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#15

Re: ListView CheckBoxen disablen

  Alt 2. Sep 2004, 16:07
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;
     }
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.325 Beiträge
 
Delphi XE2 Professional
 
#16

Re: ListView CheckBoxen disablen

  Alt 2. Sep 2004, 16:13
C kann ich ned entziffern
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#17

Re: ListView CheckBoxen disablen

  Alt 2. Sep 2004, 19:33
Zitat von Helmi:
C kann ich ned entziffern
Na komm schon, das war doch noch sehr simpel...


Nachdem ich mich vor ein D7 geschwungen hatte, musst ich feststellen: Da gibt's ja keinerlei Implementierung zum Abfangen eines Klicks auf die Checkboxes!

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 von VCL:
Delphi-Quellcode:
  THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton, htOnIcon,
    htOnIndent, htOnLabel, htOnRight, htOnStateIcon, htToLeft, htToRight);
Da aber die CheckBoxes wie ein StateIcon funktionieren, können wir das verwenden.
Delphi-Quellcode:
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;
Damit könntest du festlegen bei welchen Items der User die CheckBox nicht setzen darf.

Nachtrag: Da der Typ SET nur 255 Elemente enthalten darf, würden damit auch nur 255 disabled Items möglich sein.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.325 Beiträge
 
Delphi XE2 Professional
 
#18

Re: ListView CheckBoxen disablen

  Alt 2. Sep 2004, 21:54
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

Schweizer ListView

mfg
Helmi
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#19

Re: ListView CheckBoxen disablen

  Alt 2. Sep 2004, 22:04
Zitat von Helmi:
aber wegen deines "Problems" mit dem Klick auf die CheckBox...
ich hab da was bei unseren Schweizer Freunden gesehen.
Wenn du alle CheckBoxes deaktivieren willst würde doch das hier im OnChange reichen das reichen.
  AllowChange := not (TListView(Item.ListView).Checkboxes and (ctState = Change )); So ersparst du dem Programm die unötigen Aufrufe von GetItemAt & GetHitTest.


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.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.325 Beiträge
 
Delphi XE2 Professional
 
#20

Re: ListView CheckBoxen disablen

  Alt 2. Sep 2004, 22:09
ne ne -

entweder alle oder gar keine

kannst du mir da vielleicht mal kurz ein kleines beispiel-Projekt machen?
(*megaliebguck*)

mfg
Helmi
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:09 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