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 Checklistbox.Items.AddObject < wie komme ich da wieder ran? (https://www.delphipraxis.net/51421-checklistbox-items-addobject-wie-komme-ich-da-wieder-ran.html)

jensw_2000 12. Aug 2005 08:33


Checklistbox.Items.AddObject < wie komme ich da wieder r
 
[Insert]
Gleich nach unten scrollen und bitte nicht auslachen :? ...
[/Insert]


Ich habe eine TChecklistbox in der ist via AddObjeck Items hinzufüge ..

Delphi-Quellcode:
Procedure AddCheckItem(S:String;Checklist:TCheckListBox);
var InternalCheckbox:TCheckbox;
    idx:Integer;
begin
  // internes TCheckbox Object erstellen
  InternalCheckbox:=TCheckbox.Create(CheckList);

  // Itemindex des neuen Items ermitteln
  idx:=CheckList.Items.Count;

  // internes TCheckbox Object konfigurieren
  InternalCheckbox.Caption:='Item '+inttostr(idx);
  InternalCheckbox.AllowGrayed:=true;
 
  // internes TCheckbox Object in CheckListbox einfügen
  CheckList.Items.AddObject(inttostr(idx),InternalCheckbox);
end;
Aber wie komme ich jetzt nur wieder an die internen Checkboxen heran ?

Generell möchte ich erreíchen, das die interne Checkbox beim Checklist.onClickCheck ebenfalls auch angehakt nzw. abgehakt wird. Zusätzlich soll, wenn der Status der internen Checkbox cbGrayed ist, die Caption des Checklistbox Items modifiziert werden.

Mein bisheriger Versuch

Delphi-Quellcode:
procedure TForm1.CheckListClickCheck(Sender: TObject);
  var idx:integer;
      Fi:String;
begin

 Fi:='Filter inaktiv';

 idx:= CheckList.ItemIndex;

 If TObject(CheckList.Items[idx]) is TCheckbox then         //   << hier wird eine AV ausgelöst
 With (TObject(CheckList.Items[idx]) as TCheckbox) do       //   << Wenn ist die "is" Prüfung weglasse
 begin                                                     //      wird hier die AV ausgelöst  
   Case State of
     // interne CheckBox hat den Status cbGrayrd
     cbGrayed:   begin
                    State:=cbchecked;
                    CheckList.Items[idx]:=Caption;
                    CheckList.ItemEnabled[idx]:=true;
                  end;
     // interne CheckBox hat den Status cbChecked
     cbchecked:  begin
                    State:=cbUnChecked;
                    CheckList.Items[idx]:=Caption;
                    CheckList.ItemEnabled[idx]:=false;
                  end;
     // interne CheckBox hat den Status cbUnChecked
     cbunchecked: begin
                    State:=cbGrayed;
                    CheckList.Items[idx]:=Caption+' '+Fi;
                    CheckList.ItemEnabled[idx]:=false;
                  end;
   end; // case
 end; //with


end;
Die Hilfe bringt mich nicht wirklich weiter.
Hat jemand eine Idee wie ich an das interne Objekt herankomme ?


Schöne Grüße,
Jens

:hi:


EDIT
------------------------------------------------------------------
Arrgh, Augen auf ... :wall:

TChecklistbox kennt auch AllowGrayed.
Damit kann ich mit den ganzen Zauber sparen ... :wall: :wall:
------------------------------------------------------------------

Aber nur interessehalber ...
Wie komme ich generell wieder an das "interne" Objekt heran (für den nächsten Versuch ... ) ?

phXql 12. Aug 2005 08:53

Re: Checklistbox.Items.AddObject < wie komme ich da wied
 
Delphi-Quellcode:
TChecklistbox.Items.Objects[Index]

jensw_2000 12. Aug 2005 09:20

Re: Checklistbox.Items.AddObject < wie komme ich da wied
 
Danke.
Irgendwie habe ich heute das wohl innere Verlangen, alles zu verkomplizieren ...


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