Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#1

Checklistbox.Items.AddObject < wie komme ich da wieder r

  Alt 12. Aug 2005, 09:33
[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




EDIT
------------------------------------------------------------------
Arrgh, Augen auf ...

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

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