![]() |
Re: Tabelleninhalt in Checklistbox anzeigen
Hallo needatip,
du läufst durch die Tabellee und suchst den entsprechenden Bezeichner in der Liste mit IndexOf:
Delphi-Quellcode:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var i, index: Integer; begin for i := 1 to CheckListBox1.Count do CheckListBox1.State[i-1] := cbUnchecked; Table2.Open; Table2.First; while not Table2.Eof do begin index := CheckListBox1.Items.IndexOf(Table2Branchen.AsString); if index > -1 then CheckListBox1.State[index] := cbChecked; Table2.Next; end; end; |
Re: Tabelleninhalt in Checklistbox anzeigen
Danke für die schnelle Antwort;
Warum zum Teufel bekomme ich jetzt die Compilermeldung, dass 'cbUnchecked' ein undefinierter Bezeichner ist. Hab ich irgendetwas nicht eingebunden (uses) oder so ? Habs doch auch richtig geschrieben. Tut mir leid - bin halt kein Ass im Programmieren. |
Re: Tabelleninhalt in Checklistbox anzeigen
Hallo needatip,
in Delphi 7 sind die Konstanten cbChecked und chUnchecked in der Unit StdCtrls definiert. |
Re: Tabelleninhalt in Checklistbox anzeigen
Ok - jetzt benötige ich nur mehr die OnClickCheck-Event Routine, den Rest kann ich dann noch verfeinern.
Danke im voraus. |
Re: Tabelleninhalt in Checklistbox anzeigen
Hallo needatip,
wo ist denn das Problem? Wie weit bist du gekommen als du versucht hast die Methode zu schreiben? Ich hab zwar eine Lösung geschrieben, aber die möchte ich dir nicht einfach so geben. Du solltest zunächste einmal deine OnCreate Methode so anpassen, dass du dir neben dem Bezeichner der Branche auch die ID merkst. Das könntest du z.B. mit AddObject machen, wobei du als Objekt einfach einen gecasteten Integer übergibst, denn TObject ist ja letztlich eine Adresse und bietet damirt genug Platz für einen Integer. Du könntest als Objekt also z.B. TObject(TabBranchenNr.AsInteger) benutzen. Versuche dann einmal die OnClickCheck Methode zu schreiben, bzw. sage genau wo das Problem ist. |
Re: Tabelleninhalt in Checklistbox anzeigen
Also das mit dem TObject hab ich nicht verstanden.
Hab versucht folgendes zu schreiben:
Delphi-Quellcode:
bin aber dann doch nicht weiter gekommen.
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var i : integer; begin i := CheckListBox1.ItemIndex; Table2.Append; Table2Branchen.Value := CheckListBox1.Items[i]; Table2BR_ID.Value := CheckListBox1.Items.IndexOf(Table2Branchen.AsString); ... end; Muss noch über den CheckListBox-Index auf die richtige BRA_ID kommen. |
Re: Tabelleninhalt in Checklistbox anzeigen
Hallo needatip,
Zitat:
Delphi-Quellcode:
Beim Klicken:
procedure TForm1.FormCreate(Sender: TObject);
begin TabBranchen.Open; while Not TabBranchen.Eof do begin CheckListBox1.Items.AddObject(TabBranchenBezeichner.AsString, TObject(TabBranchenNr.AsInteger));//<- Nr als Object speichern TabBranchen.Next; end; DataSource1DataChange(Self, nil); end;
Delphi-Quellcode:
Jetzt musst du dir noch überlegen, was in die DataDourceChange Methode muss, die aufgerufen wird, wenn der Nutzer zu einer anderen Adresse geht.
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var i : Integer; begin for i := 0 to CheckListBox1.Count-1 do begin if CheckListBox1.State[i] = cbChecked then begin if Not TabAdrBra.Locate('Bra_ID', Integer(CheckListBox1.Items.Objects[i]), []) then begin TabAdrBra.Append; // TabAdrBraNr.AsInteger wird über AutInc gesetzt TabAdrBraAdr_ID.AsInteger := TabAdressenNummer.AsInteger; TabAdrBraBra_ID.AsInteger := Integer(CheckListBox1.Items.Objects[i]); // hier wird die Nr wieder ausgelesen TabAdrBra.Post; end; end else begin if TabAdrBra.Locate('Bra_ID', Integer(CheckListBox1.Items.Objects[i]), []) then TabAdrBra.Delete; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 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 by Thomas Breitkreuz