Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CheckGrp - ComboBox - Item Problem (https://www.delphipraxis.net/118275-checkgrp-combobox-item-problem.html)

LuCSteR 4. Aug 2008 12:55


CheckGrp - ComboBox - Item Problem
 
Hi,

hab wieder nen Hänger. Kann mir jmd sagen warum der Button1 nicht Enabled wird, wenn ich mind. eine Checkbox.Checked=true habe?
(ComboBox und CheckGrp mit 4 CheckBoxen drinne)

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.Button1.Enabled:=False;
end;

procedure TForm1.ComboBox1DropDown(Sender: TObject);
var
  i:integer;
  hilf:boolean;
begin
  hilf:=false;
  for i:=1 to Form1.CheckGroup1.Items.Count do
    if Form1.CheckGroup1.Checked[i]:=true;
    then hilf:=true;

  if hilf=true
  then Form1.Button1.Enabled:=true;
end;
Dazu wäre noch zu sagen, das ich ähnlich noch eine Abfrage auf Seiten der CheckGrp schreiben will. Also das mind. eine CheckBox.Checked=true und gleichzeitig ein ComboBox.Item<>''. Das bekomm ich nat. selbst hin wenn der Fehler oben gefunden wird.

lg Steve

DeddyH 4. Aug 2008 13:01

Re: CheckGrp - ComboBox - Item Problem
 
Zitat:

Delphi-Quellcode:
procedure TForm1.ComboBox1DropDown(Sender: TObject);
var
  i:integer;
  hilf:boolean;
begin
  hilf:=false;
  for i:=1 to Form1.CheckGroup1.Items.Count do
    if Form1.CheckGroup1.Checked[i]:=true;
    then hilf:=true;

  if hilf=true
  then Form1.Button1.Enabled:=true;
end;

-->
Delphi-Quellcode:
procedure TForm1.ComboBox1DropDown(Sender: TObject);
var
  i:integer;
  hilf:boolean;
begin
  hilf:=false;
  for i:= 0 to CheckGroup1.Items.Count - 1 do
    if CheckGroup1.Checked[i] then hilf:=true;

  if hilf then Button1.Enabled:=true;
end;
Wobei mein Delphi(5) hier keine Checkgroup kennt :|

LuCSteR 4. Aug 2008 13:16

Re: CheckGrp - ComboBox - Item Problem
 
mmh, also so klappts auch nicht. ich arbeite mit lazarus. hatte noch 2 syntaktische fehler drin beim kopierten text...allerdings sind die nicht ausschlaggebend.

Delphi-Quellcode:
procedure TForm1.ComboBox1DropDown(Sender: TObject);
var
  i:integer;
  hilf:boolean;
begin
  hilf:=false;
  for i:=0 to 3 do //hab auch 1..4 probiert :s
    if Form1.CheckGroup1.Checked[i]=true then hilf:=true;

  if hilf=true then Form1.Button1.Enabled:=true;
end;
nun bekomme ich ne exception, die bei lazarus nich näche spezifiziert wird...ganz toll. ich muss mir turbo delphi besorgen, das wird sonst nix.
an sich von der überlegung her müsst es doch klappen oder?

DeddyH 4. Aug 2008 13:21

Re: CheckGrp - ComboBox - Item Problem
 
Wie gesagt, Checkgroup sagt mir gerade nichts. Ich kann höchstens heute Abend mal unter Linux nachschauen, da hab ich auch Lazarus. Ansonsten solltest Du Dir aber schnell wieder abgewöhnen, auf true abzufragen sowie Instanznamen zu verwenden (Form1.Checkgroup1 besser in Checkgroup1 ändern, es ist ja eine Methode von TForm1).

LuCSteR 4. Aug 2008 13:32

Re: CheckGrp - ComboBox - Item Problem
 
alles klar, bin ja noch anfänger :)

so wie ich das sehe, werden in einer CheckGroup Checkboxen zusammengefasst. Also Wie bei einer RadioGroup RadioButtons zusammengefasst werden. Naja ich probier weiter.

DeddyH 4. Aug 2008 13:36

Re: CheckGrp - ComboBox - Item Problem
 
Vielleicht geht es mit
Delphi-Quellcode:
CheckGroup1.Items[i].Checked
aber ich kann jetzt nur raten ohne diese Kompo zu kennen.

LuCSteR 4. Aug 2008 13:45

Re: CheckGrp - ComboBox - Item Problem
 
funtioniert auch nicht. leider. gibt es denn eine gängige methode um eine beliebige anzahl von checkboxen abzufragen, ob sie checked sind oder nicht? CheckBox[i] geht ja auch nicht. vll über umwege, aber es soll ja weniger werden, nicht mehr.

ahja, lazarus wirft die exception immer bei dem ereignis und zeigt dann folgende zeilen an

Delphi-Quellcode:
function TCustomCheckGroup.GetChecked(Index: integer): boolean;
begin
  if (Index < -1) or (Index >= FItems.Count) then
    [b]raise Exception.CreateFmt(rsIndexOutOfBounds,[ClassName,Index,FItems.Count]);[/b]
  Result:=TCheckBox(FButtonList[Index]).Checked;
end;
Habs mal mit nem anderen Ereignis versucht (OnChange), was auch für die problemlösung sinniger ist. Bringt mir aber auch keine Punkte.

DeddyH 4. Aug 2008 13:51

Re: CheckGrp - ComboBox - Item Problem
 
Nehmen wir nochmal meinen Code aus #2 und erweitern ihn ein klein wenig:
Delphi-Quellcode:
procedure TForm1.ComboBox1DropDown(Sender: TObject);
var
  i:integer;
  hilf:boolean;
begin
  hilf:=false;
  if CheckGroup1.Items.Count < 1 then
    ShowMessage('Es gibt keine Items')
  else
    for i:= 0 to CheckGroup1.Items.Count - 1 do
      if CheckGroup1.Checked[i] then hilf:=true;

  if hilf then Button1.Enabled:=true;
end;
Was kommt dabei heraus?

LuCSteR 4. Aug 2008 14:03

Re: CheckGrp - ComboBox - Item Problem
 
Es gibt keine Items. Kalppt auch nicht. Habs noch mit "CheckGroup1.CheckEnabled[i]=true" versucht.
Es gibt einfach nichts sinniges hier: CheckGroup1.XXX. ich finds jedefalls nicht. daran liegts wohl :(

DeddyH 4. Aug 2008 14:05

Re: CheckGrp - ComboBox - Item Problem
 
Kannst Du mal einen Screenshot posten?

[edit] Anscheinend haben die Checkboxen den falschen Parent (TForm statt TCheckgroup). Versuch mal, die Checkboxen zu markieren (SHIFT - Linke Maustaste), auszuschneiden, dann die Checkgroup zu markieren und die Checkboxen einzufügen. Dann sollte der Parent stimmen. [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr.
Seite 1 von 3  1 23      

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